MUSIC算法介绍
MUSIC算法叫做多信号分类算法(Multiple Signal classification),MUSIC算法的基本思想则为将任意阵列输出数据的协方差矩阵进行特征分解,从而得到与信号分量相对应的信号子空间和信号分量相正交的噪声子空间,然后利用这两个子空间的正交性来估计信号的参数(入射方向、极化信息和信号强度)。MUSIC算法具有普遍的适用性,只要已知天线阵的布阵形式,无论是直线阵列还是圆阵列,不管阵元是否是等间距分布,都可以得到高分辨率的结果。
原理
窄带远场信号的DOA(Direction-of-Arrival)数学模型为
在此模型的基础上,可以得到阵列信号的协方差矩阵为
其中
其中
但是实际中,接收信号的阵列是有限的,此时
然后对
谱估计公式为
相关实验
接下来在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。与上述代码中所设置的是一样的。