阵列信号处理——求根MUSIC算法(Root MUSIC)
求根MUSIC算法,即root-MUSIC算法是MUSIC方法的一种多项式求根形式,它是由Barabell提出的,其基本思想是Pisarenko分解。相比于MUSIC算法,root-MUSIC算法无须谱峰搜索,降低了复杂度。
基本MUSIC空间谱的谱峰等价为或
。其中,
是阵列样本协方差矩阵
的次特征向量。
若令,则有
向量内积给出多项式表示
式中,是M×(M-p) 次特征向量矩阵
的第(i,j)元素。于是,基本MUSIC空间谱表示
或
可以等价表示为
上式有可综合为或者
,即有
换言之,只要对多项式求出单位圆上的根zi,即可得到空间参数w1,…,wp。
这就是求根MUSIC的基本思想。
然而,上式并不是z的多项式,因为它还包含了z*的幂次项。由于我们只对单位圆上的z值感兴趣,所以可以用代替
,这就给出了求根MUSIC多项式
仿真参数设置:
参数名称 | 参数值 |
阵列数 | 8 |
阵元间距 | 0.5 |
信源数 | 3 |
波达方向 | 10, 20, 30 |
信噪比 | 10 |
采样数(快拍) | 200 |
程序如下:
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 20 30]; % 波达方向
snr=10; % 信噪比
n=200; % 采样数
A=exp(-1i*twpi*d.'*sin(theta*derad)); % 方向向量
S=randn(iwave,n); % 信源信号
X0=A*S; % 接收信号
X=awgn(X0,snr,'measured'); % 添加噪声
Rxx=X*X'; % 计算协方差矩阵
InvS=inv(Rxx);
[EVx,Dx]=eig(Rxx); % 特征值分解
EVAx=diag(Dx)';
[EVAx,Ix]=sort(EVAx); % 特征值从小到大排序
EVAx=fliplr(EVAx); % 左右翻转,从大到小排序
EVx=fliplr(EVx(:,Ix));
% root-MUSIC
Unx=EVx(:,iwave+1:kelm); % 噪声子空间
syms z;
pz=z.^([0:kelm-1]');
pz1=(z^(-1)).^([0:kelm-1]);
fz=z.^(kelm-1)*pz1*Unx*Unx'*pz; % 构造多项式
a=sym2poly(fz); % 符号多项式->数值多项式
zx=roots(a); % 求根
rx=zx';
[as,ad]=(sort(abs((abs(rx)-1))));
DOAest=asin(sort(angle(rx(ad([1,3,5])))/pi))*180/pi;
disp(DOAest);
运行结果如下:
对求根MUSIC算法,我们再作如下说明。
(1)求根MUSIC算法与谱搜索方式的MUSIC算法原理是一样的,只不过是用一个关于z的矢量来代替导向矢量,从而用求根过程代替搜索过程;
(2)由于噪声的存在,求出的根不可能在单位圆上,可选择接近单位圆上的根为真实信号的根,这就存在一定的误差;
(3)求根MUSIC算法与谱搜索的MUSIC算法相似,同样存在两种表达方式,一个是利用噪声子空间,另一个是利用信号子空间。
参考文献:
阵列信号处理及MATLAB实现;张小飞,陈华伟,仇小锋(编著)
现代信号处理(第三版);张贤达(编著)