MUSIC算法

MUSIC算法介绍

MUSIC算法叫做多信号分类算法(Multiple Signal classification),MUSIC算法的基本思想则为将任意阵列输出数据的协方差矩阵进行特征分解,从而得到与信号分量相对应的信号子空间和信号分量相正交的噪声子空间,然后利用这两个子空间的正交性来估计信号的参数(入射方向、极化信息和信号强度)。MUSIC算法具有普遍的适用性,只要已知天线阵的布阵形式,无论是直线阵列还是圆阵列,不管阵元是否是等间距分布,都可以得到高分辨率的结果。

原理

窄带远场信号的DOA(Direction-of-Arrival)数学模型为

X=A(θ)s(t)+N(t)

在此模型的基础上,可以得到阵列信号的协方差矩阵为
R=E[XXH]=AE[SSH]AH+δ2I=ARSAH+δ2I

其中 Rs 是信号 s(t) 的协方差矩阵,由于信号和噪声相互独立,数据协方差可分解为信号子空间和噪声子空间。然后我们对 R 进行特征分解,可以得到如下

R=USΣSUHS+UNΣNUHN

其中 US 是由大特征值对应的特征向量张成的子空间,即信号子空间。 UN 是由小特征值对应的特征矢量张成的子空间。即为噪声子空间。由于信号子空间和噪声子空间是相互正交的,那么信号子空间的导向矢量 A(θ) 和噪声子空间正交。
aH(θ)UN=0

但是实际中,接收信号的阵列是有限的,此时
R^=1Li=1nXXH

然后对 R^ 进行特征分解,计算得到噪声子空间特征矢量 UN^ ,接着构造如下的频谱,接着进行最小化优化搜索,即
θMUSIC=argθminaH(θ)UNUNUHNa(θ)^^^

谱估计公式为
PMUSIC=1aH(θ)UNUHNa(θ)^^

相关实验

接下来在matlab中进行MUSIC实验仿真,相应的代码如下


clear all
close all
derad = pi/180;       
radeg = 180/pi;
twpi = 2*pi;
kelm = 8;          %阵元个数     
dd = 0.5;       %阵元间距       
d=0:dd:(kelm-1)*dd;     
iwave = 3;             
theta = [10 30 60];  %待估计角度为10 30 60
snr = 10;              %信噪比
n = 500;                 %快拍数
A=exp(-j*twpi*d.'*sin(theta*derad));
S=randn(iwave,n);
X=A*S;
X1=awgn(X,snr,'measured');
Rxx=X1*X1'/n;
InvS=inv(Rxx); 
[EV,D]=eig(Rxx);
EVA=diag(D)';
[EVA,I]=sort(EVA);
EVA=fliplr(EVA);
EV=fliplr(EV(:,I));
for iang = 1:361
        angle(iang)=(iang-181)/2;
        phim=derad*angle(iang);
        a=exp(-j*twpi*d*sin(phim)).';
        L=iwave;    
        En=EV(:,L+1:kelm);
        SP(iang)=(a'*a)/(a'*En*En'*a);
end
SP=abs(SP);
SPmax=max(SP);
SP=10*log10(SP/SPmax);
h=plot(angle,SP);
set(h,'Linewidth',2)
xlabel('angle (degree)')
ylabel('magnitude (dB)')
axis([-90 90 -60 0])
set(gca, 'XTick',[-90:30:90])
grid on  

得到的实验结果见下图
运行结果
可以看到,在右图所示的频谱中,该频谱有三个谱峰,这就是我们要进行估计的位置,其对应的横坐标分别为10,30,60。与上述代码中所设置的是一样的。

猜你喜欢

转载自blog.csdn.net/wilder_ting/article/details/79122885