DSPRelated.com
Forums

2D-MUSIC algorithm for range-azimuth mapping in MATLAB

Started by Gerard123 3 years ago4 replieslatest reply 2 weeks ago653 views
I have complications implementing the range-azimuth with the 2D Music algorithm. I have used the URA-azimuth to find the reflected signal by the elevation angles over the signal. I want to plot the range-angle mapping to find the targets' distance along with the device. Below is my code. How can I find the range-azimuth code from my current code or any suggestions? : Here is my current code:
```
f1 = 17000;
f2 = 19000;
doa1 = [40;10];
doa2 = [-60;20];
thetas = 90*pi/180
p = -pi/2:pi/180:pi/2;
doa = [doa1 doa2];
fc = 18000;
c = physconst('LightSpeed')
lam = c/fc
fs = 48000;


array = phased.URA('Size',[15 12],'ElementSpacing',[lam/2 lam/2]);
array.Element.FrequencyRange = [18e5 23.0e5];


fileId = fopen('D:\signal123.mat');
signal1 = fileId;
%signal_reshape = reshape(signal,[],2)
x = collectPlaneWave(array,[signal1,signal1],doa,fc)
%noise = 0.1*(randn(size(x))+1i*randn(size(x)));


estimator = phased.MUSICEstimator2D('SensorArray',array,...
    'OperatingFrequency',fc,...
    'NumSignalsSource','Property',...
    'DOAOutputPort',true,'NumSignals',2,...
    'AzimuthScanAngles',-90:.5:90,...
    'ElevationScanAngles',-90:.5:90)
[~,doas] = estimator(x)


plotSpectrum(estimator);


```
[ - ]
Reply by weetabixharryJuly 12, 2022

You haven't said what the problem is. Since you are just using MATLAB's pre-packaged functions, I suggest you read the MATLAB documentation (which is typically quite good).

You seem to be getting confused between azimuth, elevation and range. In its basic form, the two dimensions in "2D" MUSIC are azimuth and elevation. (Or it can be re-parameterized into a different coordinate system, such as cone angles).

However, range is significantly different. Range is not a direction. You can still use the MUSIC algorithm to estimate delay (and therefore range), but the formulation is completely different.

One way of estimating both direction and range is using the concept of the "spatio-temporal array manifold" (google can give you plenty of information about that). However, this is very sub-optimal and better results are achieved (with much less computational effort) by simply splitting the problem into two 1D searches. First estimate range (using any method you like - you can even use MUSIC to search over a "temporal" manifold). Then you can isolate the signal subspace associated with each delay (range) using geometric projections and, for each discrete range, perform a 1D azimuth search over the spatial manifold to obtain a direction estimate.

[ - ]
Reply by matlab2015July 12, 2022

Hi dear weetabixharry !

If I want to estimate the range only with MUSIC algorithm, how will I estimate it using MATLAB? Can you write the code here please? Further if I want to estimate the amplitudes of the incoming signals, how will I do it?

Regards,

[ - ]
Reply by corvoattanoJune 30, 2024

hello @weetabixharry

for estimating range and azimuth, do you know any advantage of using spatio-temporal array manifold over splitting the problem into two 1d searches? i have a hard time finding online a comparison between these two techniques. for instance, (Manokhin, 2015) and (Belfiori, 2012) don't mention this 2-1D-searches technique, i believe.

[ - ]
Reply by weetabixharryJuly 2, 2024

@corvoattano I don't know any advantage of using the spatiotemporal array manifold (and i cannot imagine any advantage). In all the cases I ever analyzed, splitting into two 1D searches yielded better performance with less computation.

The key to understanding this is that the number of spatiotemporal snapshots is smaller than the number of ordinary (spatial) snapshots by a factor of Nc (where Nc is the code length of the spreading sequence).

So, you can't just think that the spatiotemporal manifold increases the length of the manifold vector for free. It costs a proportional drop in the number of snapshots.