资源描述:
《基于压缩感知的doa估计程序》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、程序可运行,有图有真相,MATLAB得事先装好cvx优化包。clc;clear;close;lambda=1;d=lambda/2;%阵元间距离,取为入射波长的一半K=500;%采样快拍数theta=[-510];%入射角度SignalNum=length(theta);%入射信号数量Nnum=5;%%阵列阵元数量SNR1=-10;%%信噪比Aratio=sqrt(10^(SNR1/10));%信号幅度与噪声幅度比值,并假设信号幅度为1Fs=5*10^3;%信号频率Fc=[2*10^3,5*10^3,8*10^3];%入射信号频率fs=20*10^3
2、;thetatest=(-90*pi/180:1*pi/180:90*pi/180);%theta角度搜索范围thetanum=length(thetatest);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%计算信号协方差矩阵%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%T_Vector=(1:K)/fs;A=zeros(Nnum,SignalNum);SignalVector=zeros(SignalNum,K);%NoiseVector=zeros(Nnum,K);Xt=zeros(Nnum,K);%%构
3、造A矩阵fork2=1:SignalNumfork1=1:Nnum%1:12At(k1)=exp(j*(k1-1)*2*pi*d*sin(theta(k2)*pi/180)/lambda);A(k1,k2)=At(k1);endend%%%构造信号矩阵和噪声矩阵fork1=1:SignalNumSignalVector(k1,:)=exp(j*2*pi*Fc(k1).*T_Vector);%信号endXtt=A*SignalVector;%NoiseVector=sqrt(0.5)*(randn(Nnum,K)+j*randn(Nnum,K));fo
4、rkk=1:NnumXt(kk,:)=awgn(Xtt(kk,:),SNR1,'measured');endRx=(Xt*Xt')./K;Rs=(SignalVector*SignalVector')./K;sigm_s=Rs(:,1);%%%%%%%%%%%%%%%%%%%%%%%%%%%-----特征值分解----%M%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%[V,D]=eig(Rx);%X*V=V*DDD=diag(D);%对角阵变矢量%[DDidx]=sort(DD,'descend');%按从大往小排
5、序特征值Un=V(:,1:Nnum-SignalNum);%噪声子空间Us=V(:,Nnum-SignalNum+1:end);%信号子空间e1=[1,zeros(1,Nnum-1)].';sigm_n=min(DD);%最小特征值^作为的估计I=eye(Nnum);fork1=1:thetanumAtemp0=exp(j*2*pi*d/lambda*sin(thetatest(k1))*[0:Nnum-1]).';S(k1)=1/(Atemp0'*Un*Un'*Atemp0);endfigure(1)plot(thetatest.*180./pi,
6、10*log10(abs(S)/(max(abs(S)))));%输出功率(dB)gridon;gridon;title('Music')xlabel('方位角(度)')ylabel('输出功率(dB)')%%%%%%%%%%%%%%%%%%%%%%%%%%----构造--G--selection矩阵%%%%%%%%%%%%%%M=Nnum;G=zeros(M*M,2*M-1);J0=eye(M);G(:,M)=J0(:);%fork=1:M-1fori=1:M-1J=[zeros(M-i,i),eye(M-i);zeros(i,i),zeros(i
7、,M-i)];G(:,M-i)=J(:);J1=J';G(:,M+i)=J1(:);end%%%%%%----Bthita------%%%%Bthita=zeros(2*M-1,thetanum);Bt=zeros(1,2*M-1);fork2=1:thetanum%相当于文章thita1---thitaQfork1=1:MBt(1,k1+M-1)=exp(-j*(k1-1)*2*pi*d*sin(thetatest(k2))/lambda);Bt(1,k1)=exp(j*(M-k1)*2*pi*d*sin(thetatest(k2))/lambd
8、a);Bthita(:,k2)=Bt';endend%%%----u---K稀疏矢量----u=zeros(