1 简介
信源数估计是空间谱估计中的关键技术,研究符合实际应用环境的稳健的信源数估计方法具有十分重要的现实意义.基于空间谱估计中用于估计信源数的传统盖氏圆盘法,该程序用于计算均匀直线阵(ULA)中信号源个数估计性能随SNR的变化情况,采用Monte-Carlo模拟。
2 完整代码
%该程序用于计算均匀直线阵(ULA)中信号源个数估计性能随SNR的变化情况,采用Monte-Carlo模拟。%算法:GDE%by GangLi%==========================================================================clearclcclose all%==========================================================================Ne=8; %单元个数lambda=1; %波长beta=2*pi/lambda;d=lambda/2;%===============================产生信号===================================M=100; %快拍数thetas=[-10,0,5]*pi/180; %信号来波方向Ns=length(thetas);%信号源个数for n=1:NsSS(n,1:M)=randn(1,M)+j*randn(1,M);SS(n,1:M)=SS(n,1:M)/sqrt(SS(n,1:M)*SS(n,1:M)'/M);A(1:Ne,n)=exp(j*[0:Ne-1].'*beta*d*sin(thetas(n)));end%================================Monte-Carlo===============================SNR=-10:2:20;monte=1000; %Monte-Carlo模拟的次数for nsnr=1:length(SNR);SNR(nsnr)Ns_est=0;for mk=1:monteRenoise=randn(Ne,M);Imnoise=randn(Ne,M);%=========产生零均值,方差为1的高斯白噪声==========for n=1:NeRenoise(n,:)=Renoise(n,:)./std(Renoise(n,:));Renoise(n,:)=Renoise(n,:)-mean(Renoise(n,:));Imnoise(n,:)=Imnoise(n,:)./std(Imnoise(n,:));Imnoise(n,:)=Imnoise(n,:)-mean(Imnoise(n,:));noise(n,:)=(Renoise(n,:)+j*Imnoise(n,:))./...sqrt(Renoise(n,:).^2+Imnoise(n,:).^2);end%================================================Ps=10.^(SNR(nsnr)./10); %信号功率S=sqrt(Ps).*SS;Y=A*S+noise; %接收到的信号R=Y*Y'/M; %计算协方差矩阵%====================GDE=========================Rp=R(1:Ne-1,1:Ne-1);[U,D]=eig(Rp);U=fliplr(U);T=zeros(Ne,Ne);T(1:Ne-1,1:Ne-1)=U;T(Ne,Ne)=1;Rt=T'*R*T;r=abs(Rt(1:Ne-1,Ne));DL=0.01;GDE=r(1:Ne-1)-DL./(Ne-1)*sum(r);%================================================k0=0;for k=1:Ne-1if GDE(k)<0k0=k;breakendendNs_est(mk)=k0-1;endProb(nsnr)=length(find(Ns_est==Ns))/monte; %估计到的信号源个数endfigure(1)plot(SNR,Prob,'o-')xlabel('SNR(dB)')ylabel('Probability of Detection')
3 仿真结果

4 参考文献
[1]刘志斌, 杨明华. 一种改进的盖氏圆盘估计信源数方法[J]. 云南大学学报:自然科学版, 2007, 29(6):570-573.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。

