MVDR fail with two identical target.

Hi all
I have a problem with MVDR estimator in case of two identical target.
clear all ;close all ;clc;
ha = phased.ULA('NumElements',10,'ElementSpacing',0.5);
ang1 = [30; 0]; ang2 = [40; 0];
t = (0:0.001:1).';
s1 = cos(2*pi*t*300);
s2 = cos(2*pi*t*400);
fc = 300e6; % Operating frequency
angs = [ang1 ang2];
broadsideAngle = az2broadside(angs(1,:),angs(2,:))
hBeamscan = phased.BeamscanEstimator('SensorArray',ha,...
'OperatingFrequency',fc,'ScanAngles',-90:90);
hBeamscan.DOAOutputPort = true;
hBeamscan.NumSignals = 2;
x = collectPlaneWave(ha,[s1 s2],[ang1 ang2],fc);
rs = RandStream.create('mt19937ar','Seed',2007);
nPower = 0.01; % Noise power
noise = sqrt(nPower/2)*(randn(rs,size(x)) + 1i*randn(rs,size(x)));
x = x + noise; % Total received signal
[~,ang] = step(hBeamscan,x)
figure
plotSpectrum(hBeamscan);
hMVDR = phased.MVDREstimator('SensorArray',ha,...
'OperatingFrequency',fc,'ScanAngles',-90:90,...
'DOAOutputPort',true,'NumSignals',2);
[~,ang] = step(hMVDR,x)
figure
plotSpectrum(hMVDR);
Now I change the frequencies
s1 = cos(2*pi*t*300);
s2 = cos(2*pi*t*300);
What am I missing here ?
I also try TimeDelayLCMVBeamformer and I got the same results.
Is there a solution to this problem ?
Thx

回答 (1 件)

Honglei Chen
Honglei Chen 2013 年 2 月 14 日

1 投票

Hi Zohar,
When you set the frequency of the second signal to 300 Hz, your two signals are identical. This represent the case where the two signals are correlated (fully correlated in your case). In that case, the performance of MVDR is degraded. One way to solve this issue is to use a technique called spatial smoothing. This option is not available MVDR beamformer. If your interest is to detect the direction of arrival, you can try to use phased.RootMUSICEstimator which can accommodate the spatial smoothing. For example, if I use the following code with your signal, I get the correct angles
>> estimator = phased.RootMUSICEstimator('SensorArray',ha,...
'OperatingFrequency',fc,'SpatialSmoothing',1);
>> step(estimator,x)
ans =
39.9476 30.0222
HTH

7 件のコメント

zohar
zohar 2013 年 2 月 14 日
Hi Honglei, Thx.
Your solution works for direction of arrival, but I want to know the power or mag for each direction.
My main goal is to generate beams for all direction Vs time !?
Any suggestion ?
Zohar
Honglei Chen
Honglei Chen 2013 年 2 月 14 日
Hi Zohar,
If you have to use MVDR for a correlated signal case, then you may need to build the weights yourself and incorporate the spatial smoothing when estimating the covariance matrix.
HTH
zohar
zohar 2013 年 2 月 14 日
編集済み: zohar 2013 年 2 月 14 日
Hi Hongeli,
1) I preform MVDR somthing like this:
for n = 1: length(phi)
p1 = A0(:,n)'*IRf*A0(:,n);
power(n) = 1/p1;
Wcap(:,n) =IRf*A0(:,n)/p1;
end
were IRF is inv(x'x) , A0 - steering vector , n - indx of beam.
How can I do spatial smoothing in that case ?
2) I alsow preform MUSIC somthing like this:
r = 2 ; %Number of estimated signals
[Q ,D]=eig(x'x);
[D,I]=sort(diag(D),1,'descend'); %Find r largest eigenvalues
Q=Q (:,I); %Sort the eigenvectors to put signal eigenvectors first
Qs=Q (:,1:r); %Get the signal eigenvectors
Qn=Q(:,r+1:Ns); %Get the noise eigenvectors Ns number of staves
for n = 1: length(phi)
PowerMusic(n)=(A0(:,n)'*A0(:,n))/(A0(:,n)'*Qn*Qn'*A0(:,n));
end
Any help ?
Thx
Honglei Chen
Honglei Chen 2013 年 2 月 14 日
Hi Zohar,
The spatial smoothing is done when estimating covariance matrix. The following paper is a good starting place.
HTH
zohar
zohar 2013 年 2 月 14 日
Hi Honglei, But I do not have Ieee acount :’(
can you send it to me via email?
Thx
Honglei Chen
Honglei Chen 2013 年 2 月 15 日
I don't have subscription for IEEE Xplore either. I just had a hard copy from old days. You can try the following book too. It's well written, but definitely take a while to navigate
zohar
zohar 2013 年 2 月 15 日
Thx +1

サインインしてコメントする。

タグ

質問済み:

2013 年 2 月 13 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by