Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronic Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Register Log in

2D Music + Spatial smoothing [FMCW MIMO radar processing]

Status
Not open for further replies.

Luca_Romano

Junior Member level 2
Joined
Apr 24, 2015
Messages
20
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Activity points
189
Hi everyone,
I'm using a 2D Music algorithm for the estimation of Range-Azimuth info in a ULA FMCW MIMO radar.
The algorithm procedure is pretty simple (see "Belfiori F., Application of 2D MUSIC Algorithm to Range-Azimuth FMCW Radar data" or " Manokhin G., MUSIC-based algorithm for range-azimuth FMCW radar data processing without estimating number of targets"). I have some doubt with regard the application of the 2D FB spatial smoothing in order to decorrelate the covariance matrix of the data; I'm wondering if I do some error in the following code section (in the way I order the x_win_new vector):
Code:
x= DataV'; %Data collected by the ULA (31 Spatial samples-31Antennas), 501 time samples
N = size(x,1); % Number of antennas
M = size(x,2); % Number of samples in fast-time dimension

% window dimension for the smoothing dim[m1xm2]
m1 = 25;
m2 = 300;
p1 = N-m1+1; %positions in the spatial dimension
p2 = M-m2+1; %positions in the time dimension

N_submat = p1*p2; %number of all the possible scan
M_tot = m1*m2;

ind_tot=1;
for p1_ind = 1:p1
    for p2_ind = 1:p2
        x_win_new(:,ind_tot) = reshape (x(p1_ind:m1+(p1_ind-1),p2_ind:m2+(p2_ind-1)),[1,M_tot])';
        ind_tot=ind_tot+1;
    end
end 

X_win_cor = x_win_new*x_win_new';
X_win_cor_conj = conj(X_win_cor);
J= fliplr(eye(M_tot)); 	%transition matrix
C=(1/2*N_submat)*(X_win_cor + J*X_win_cor_conj*J);  %data smoothed covariance matrix (forward+backward)
so in my case I'm scanning the full 2D [NxM] matrix in this way:
Code:
x x x .      . x x x      . . . .      . . . .
x x x .      . x x x      x x x .      . x x x
x x x .      . x x x      x x x .      . x x x
. . . .      . . . .      x x x .      . x x x
If I select m1=M and m2=N (so no spatial smoothing, only forward/backward averaging) I get good results as shown in the attached image.
Music2D_1.jpg
Thanks a lot in advance,
Best regards,
 

Luca_Romano

Junior Member level 2
Joined
Apr 24, 2015
Messages
20
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Activity points
189
A few more lines to make this more clear:

My main questions are:
1) Is it appropriate the use of 2D spatial smoothing to the data collected by an ULA?
2) If yes, which is the right way to organise the subarray? Which directions the subarray has to scan the full data matrix?

In the attached image[the music plot are theta/range type; θ from -20° to 20°; the FFT plot are in cartesian coordinates].

As you can see in the second music plot (where I used m1=25; m2=300) something went wrong; it seems that the data smoothed covariance matrix has been not build correctly.
Any suggestions?
Thanks,
 

Georgy.Moshkin

Full Member level 4
Joined
Oct 9, 2017
Messages
202
Helped
35
Reputation
70
Reaction score
33
Trophy points
28
Activity points
1,818
Although I have already talked about this topic with Luca privately, I leave a message here in case someone experience similar problems with radar data processing.
To obtain better radar image quality:
1) I have added padding with zeroes of windowed signal:
Code:
wnd=hann(ptsNum);
data=data.*wnd;
pad=floor((2048-ptsNum)/2);
data=[zeros(pad,1);data;zeros(pad,1)];
2) Used simplest possible 1D FFT signal processing
3) Added peak finding and thresholding
4) Scaled data (20 points per meter)
5) I build radar image using 2D histogram style approach. For each reflector accumulates in 2D map using pretty big 15x15 Gaussian kernel (R=7) point. If more points per meter is used, Gaussian kernel radius must be increased.
Code:
 if  ((xx>0) && (yy>0) && (dist>1*distScale))
  for dx=-kernelR:+kernelR
   for dy=-kernelR:+kernelR
    radarImage(yy+dy,xx+dx+xAdd)=radarImage(yy+dy,xx+dx+xAdd)+kernel(dy+kernelR+1,dx+kernelR+1)*amp1(lc1(k));
   end;
  end;
To be honest I do not have experience with "MUSIC" algorithm. But as you may see on image below, even simple FFT with image processing approach gives pretty good result. I think this result may be improved further with Luca's knowledge and experience with "MUSIC" algorithm. I think that better resolution may be achieved , and sharper image of strong reflectors in the soil. Current result of simple monopulse-style processing:

map3.gif
 

f0urteen

Newbie level 1
Joined
Aug 5, 2019
Messages
1
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Activity points
4
Hi there, I am also working on the 2D MUSIC algorithm and based on the same paper but got the image wrong. Can you share your code? Much appreciated!
 

Status
Not open for further replies.
Toggle Sidebar

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Top