What is the txMask/rxMask used for on the virtual array calculation in the 4D Imaging MIMO Radar matlab example ?
6 views (last 30 days)
Show older comments
Hello,
I was following the automotive 4D imaging MIMO Radar example, when this example is calculating the associated virtual array it makes use of the helper function helperVirtualArray(txPos,rxPos,lambda) which I am showing an snippet below.
I am familiar with the calculation of the virtual array for MIMO antennas, but I am not completely understanding what is being done with the so called txMask and rxMask.Can anyone explain to me what are these mask being used for? And some documentation referring to this procedure? Is this trying to implement an Minimum Redundancy Array for MIMO RADARS?
Thanks for helping me out!
function [txArray,rxArray,vxPos] = helperVirtualArray(txPos,rxPos,lambda,txElmt,rxElmt)
% This function is for demo purposes only and may be removed in the future
% Copyright 2022 The MathWorks, Inc.
% Positions of the TXs
txPos = txPos-min(txPos(:));
txPos = sortrows(txPos',[2 1])';
% Position of the RXs
rxPos = rxPos-min(rxPos(:));
rxPos = sortrows(rxPos',[2 1])';
% Compute virtual array element positions
txMask = zeros(max(txPos,[],2)'+1); % <== what is this for ?
ind = sub2ind(size(txMask),txPos(1,:)+1,txPos(2,:)+1); % <== what is this for ?
txMask(ind) = 1;
rxMask = zeros(max(rxPos,[],2)'+1); % <== what is this for ?
ind = sub2ind(size(rxMask),rxPos(1,:)+1,rxPos(2,:)+1); % <== what is this for ?
rxMask(ind) = 1;
% Convolve transmit and receive arrays to generate virtual array
vxMask = conv2(txMask,rxMask);
ind = find(vxMask~=0);
[row,col] = ind2sub(size(vxMask),ind);
vxPos = [row(:) col(:)]-1;
vxPos = sortrows(vxPos,[2 1])';
if any(vxMask(:)>1)
warning('Overlapping virtual elements present')
end
dx = diff(vxMask,1,2);
dy = diff(vxMask,1,1);
if ~any(vxMask(:)>1) && ((any(dx(:)<0) && any(dx(:)>0)) ...
|| any(dy(:)<0) && any(dy(:)>0))
warning('Gaps between virtual elements present')
end
end
0 Comments
Answers (1)
Sanjana
on 23 Aug 2023
Hi mohd,
I understand that you are facing an issue in understanding the implementation for the calculation of “virtual array for MIMO antennas” in the “ helperVirtualArray()” function.
As per the example, “txMask” and “rxMask” are the binary masks that represent the positions of the transmit and receive antennas, respectively. These masks are created as a 2-Dimensional grid where the positions of the antennas are marked as ones and the rest of the grid is filled with zeros.
These masks are then used to calculate virtual array by performing “conv2” operation, such that each element in the “vxMask” represent the number of antennas that would be present at the position in the virtual array if the physical arrays were combined.
Please refer to the following links, for further information,
Hope this helps.
Regards,
Sanjana.
0 Comments
See Also
Categories
Find more on Beamforming and Direction of Arrival Estimation in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!