阵列式信号处理 MUSIC算法仿真yes
- 格式:doc
- 大小:194.00 KB
- 文档页数:6
阵列式信号处理 MUSIC 算法仿真渤海船舶职业学院 常 亮摘 要:波达方向(DOA)估计是阵列信号处理研究的重要内容之一多重信号分类(MUSIC )算法是一种经典有效的DOA 方法。
概述了阵列信号处理研究的主要内容,详细介绍了多重信号分类算法的原理,并用MATLAB 进行仿真实现该算法,研究了MUSIC 算法的性质。
关键词:阵列信号处理 多重信号分类算法 仿真 1、实验目的(1)掌握MUSIC 算法进行DOA 估计的基本原理 (2)了解影响DOA 估计性能的因素 2、实验内容假设阵元个数M=16,信号方向分别为0度、3度和-35度,噪声为高斯噪声仿真:(1)快拍次数一定,分辨力与SNR 的关系(2)快拍次数一定,分辨力与孔径的关系;(3)SNR 一定,分辨力与快拍的关系。
3、实验原理窄带远场信号的DOA 数学模型为()()()()t t t θ=+X A S N 阵列数据的协方差矩阵为22H H H H S E E σσ⎡⎤⎡⎤===⎣⎦⎣⎦R XX A SS A +I AR A +I由于信号与噪声相互独立,数据协方差矩阵可以分解为与信号、噪声相关的两部分,其中S R 是信号的协方差矩阵,H S AR A 是信号部分。
对R 进行特征分解有H HS S S N N N =+R U U U U ∑∑式中,S U 是由大特征值对应的特征矢量张成的子空间也即信号子空间,NU 而是由小特征值对应的特征矢量张成的子空间也即噪声子空间。
根据前面所述的性质2可知,在理想的条件下数据空间中的信号子空间与噪声子空间是相互正交的,即信号空间中的导向矢量也与噪声子空间正交()0H N θ=a U经典的MUSIC 算法正是基于上述这个性质提出的,但考虑到实际接收数据矩阵是有限快拍数的,即数据协方差矩阵的最大似然估计为1ˆL H i=1L ∑R =XX对ˆR 进行特征分解可以计算得到噪声子空间特征矢量矩阵ˆNU 。
由于噪声的存在,()θa 与ˆNU 并不能完全的正交。
因此,实际上求DOA 是以最小优化搜索实现的,即()()arg min H HMUSIC N Nθθθθ=a U U a所以,MUSIC 算法的谱估计公式为()()1MUSIC H HN N P θθ=a U U a 下面给出MUSIC 算法的计算步骤:(1) 由阵列的接收数据得到数据协方差矩阵ˆR ; (2) 对ˆR进行特征分解; (3) 由ˆR的特征值进行信号源数的判断; (4) 确定信号子空间ˆS U 与噪声子空间ˆNU ; (5) 根据信号参数的范围进行谱峰搜索;(6) 找出极大值点对应的角度就是信号入射方向。
对于上述的MUSIC 算法,还应该要注意以下几点: 对于非理想情况下得到协方差矩阵的特征值满足下式:121N N Mλλλλλ+>>>>>>所以判断信号源数需要用到有关信号源估计的方法来进行信号源数的确定。
线阵的信号参数搜索范围为90,90⎡⎤-⎣⎦,而面阵的搜索范围为180,180⎡⎤-⎣⎦。
另外,一个确定阵列的导向矢量由阵元的位置唯一的确定; MUSIC 算法的一种归一化形式,即()()()()H MUSICH HN N P θθθθ=a a a U U a 在实际应用中,对于一维导向矢量有下式成立: ()()H M θθ=a a4、实验仿真及结果分析4.1 MUSIC 随信噪比变化情况 信号数共3个,分别位于2°,30°和31°,它们功率相同,阵元数共16个。
这里快拍数取500,以保证快拍数足够,可以较好得得出统计特性,以去除采样不足带来的分辨力低下。
信噪比分别取为SNR=0,5,10,15,20dB ,得到图2。
从图中可以看到,随信噪比增大,MUSIC 谱图旁瓣变低,主瓣变得更加尖锐,分辨力变得更好。
信噪比为0dB 信噪比为30dB信噪比为50dB 信噪比为-20dB 信噪比为0dB时经典music算法解出的来波角度为2.0700°,31.7000°,求根music算法解出的来波角度为30.5268°,1.9996°信噪比为30dB时经典music算法解出的来波角度为2.0700°,30.9900°,32.3200°,求根music算法解出的来波角度为29.8490°,1.9998°,31.1206°。
信噪比为50dB时经典music算法解出的来波角度为 2.0700°,31°,32.3100°,求根music算法解出的来波角度为29.8602°,2.0001°,31.1104°。
信噪比为-20dB时经典music算法和求根music算法都无法解出来波角度。
由上面的图形可以看出,信噪比越大,越有利于信号角度的分辨,以及分辨出角度差很小的两个信号,表现为峰值十分尖锐,而随着信噪比的降低,分辨力下降,当为-20dB时已经无法分辨出30°和31°的两个信号,更糟糕的是还出现了很多假的峰值,导致对信号源数的估计错误。
4.2 MUSIC谱图随快拍数变化情况在上面的实验中,快拍数为5000,分辨效果较好,原因是当快拍足够时,能较好地得到噪声的统计特性,从而精确地分解出信号子空间和噪声子空间,从而较好的分辨信源方向,当快拍数下降时,分辨效果将会下降。
快拍数为300 快拍数为100 可见当快拍数下降的时候,峰值将会没有那么尖锐,对信号的分辨力下降,甚至无法两个角度差较小的信号,原因是小样本时间平均与统计平均差距较大,噪声子空间分解不准确。
5、实验结论由上面的实验可以看出,music算法可以实现对于DOA的求解,信噪比越大,快拍数越高越有利于分辨力的提高。
此外不同的music算法求解时,计算时间和精度都有差别,但是由于来波来自3个方向,每个方向的求解实际上是存在相互牵制的关系,比如来自0°的信号求解很准可能就会造成-20°的信号求解不准。
而信号的窄带信也是很关键的,当不满足窄带条件时,求解的角度会误差很大。
6、实验程序clear all;clc;close all;M=16;K=3;%ÐÅÔ´ÊýNN=M-K;%ÔëÉùÊým=0:1:M-1;wavelength=1;%f=300MHzf=3*10^8/wavelength;fs=10*f;Ts=1/fs;df=f/30;%df=10MHzd=wavelength/2;%ÕóÁмä¾àk=2*pi/wavelength;%²¨ÊýN=500;%¿ìÅÄÊý%¡-¡-¡-¡-ÉèÒÔÐźÅ1Ϊ»ù×¼¡-¡-¡-¡-%SNR=-20;%ÐÅÔë±ÈdBSCR2=0;%ÐÅÔ´2ÓëÐÅÔ´1µÄ¹¦ÂʱÈ/dBSCR3=0;%ÐÅÔ´3ÓëÐÅÔ´1µÄ¹¦ÂʱÈ/dBnoise=10^(-SNR/10);%ÔëÉù¹¦ÂÊpj2=10^(SCR2/10);%ÐÅÔ´2¹¦ÂÊpj3=10^(SCR3/10);%ÐÅÔ´3¹¦ÂÊas2=sqrt(pj2);%ÐÅÔ´2·ù¶Èas3=sqrt(pj3);%ÐÅÔ´3·ù¶Èsigma=sqrt(noise);%ÔëÉù·ù¶Èfai_j1=2/180*pi;%ÐÅÔ´1½Ç¶Èfai_j2=30/180*pi;%ÐÅÔ´2½Ç¶Èfai_j3=31/180*pi;%ÐÅÔ´3½Ç¶Èw1=f*2*pi;w2=(f+df)*2*pi;w3=(f-df)*2*pi;kj1=k*sin(fai_j1);kj2=k*w2/w1*sin(fai_j2);kj3=k*w3/w1*sin(fai_j3);akj1=exp(-1j*(kj1*m*d)).';akj2=exp(-1j*(kj2*m*d)).';akj3=exp(-1j*(kj3*m*d)).';R=zeros(M,M);Ri=zeros(M,M);for i=1:Nri=normrnd(0,sigma,M,1);Ri=(akj1*exp(1j*w1*i*Ts)+as2*akj2*exp(1j*w2*i*Ts)+as3*akj 3*exp(1j*w3*i*Ts)+ri)*(akj1*exp(1j*w1*i*Ts)+as2*akj2*exp( 1j*w2*i*Ts)+as3*akj3*exp(1j*w3*i*Ts)+ri)';R=R+Ri;endR=R/N;[V,D]=eigs(R,NN,'sm');fai=(-90:0.005:90)/180*pi;ps=zeros(1,length(fai));disp('¾-µämusicËã·¨¼ÆËãÀ´²¨½Ç¶È/¶È');for i=1:length(fai)%ÕóÁÐÁ÷ÐÎɨÃèki=k*w3/w1*sin(fai(i));aki=exp(-1j*(ki*m*d)).';ps(i)=real(1/(aki'*(V*V')*aki));endfor i=2:length(fai)-1%ѰÕÒ¼«´óÖµµã£¬¼´À´²¨·½Ïòif ps(i)>ps(i+1)&&ps(i)>ps(i-1)&&ps(i)>max(ps)/20disp(fai(i)/pi*180);%À´²¨½Ç¶Èendendfigure;plot(fai/pi*180,10*log10(ps/max(ps)));%%%Çó¸ùËã·¨%%%%%syms z;Pz1=sym(zeros(1,M));Pz2=sym(zeros(1,M)).';for i=1:MPz1(i)=z^(1-i);Pz2(i)=z^(i-1);endtsym=solve(Pz1*(V*V')*Pz2);tdouble=double(tsym);r=abs(tdouble);rnum=length(r);%numsolve=zeros(1,K);% for i=1:K%ѰÕÒºÏÊʵĸù% temp1=20;% temp2=1;% for j=1:length(r)% if abs(r(j)-1)<temp1% temp1=abs(r(j)-1);% temp2=j;% end% end% numsolve(i)=tdouble(temp2);% r(temp2)=10;% endtsolve=zeros(1,rnum);j=0;for i=1:rnumif(abs(r(i)-1)<0.1)j=j+1;tsolve(j)=tdouble(i);endendnumsolve=tsolve(1:j);signal_position=asin(-wavelength/(2*pi*d)*angle(numsolve) )/pi*180;real_position=signal_position(1);for i=2:length(signal_position)%È¥µôÖØ¸ùflag=0;for j=1:i-1if abs(signal_position(i)-signal_position(j))<0.5 flag=1;endendif flag==0real_position=[real_position,signal_position(i)];endenddisp('Çó¸ùmusicËã·¨¼ÆËãÀ´²¨½Ç¶È/¶È');disp(real_position);%À´²¨½Ç¶È。