%2017 %function:L1_SRCAV算法 clc clear all; close all; d_lamda=1/2; %最大阵元间距 M=8; %阵元数 theta=[0 30]; %信号的入射角度 snr=20; L=500; %快拍数 K=length(theta); %信源数 for k=1:K A(:,k)=exp(-1j*2*pi*[0:M-1]'*d_lamda*sin(theta(k)/180*pi)); %导向矢量 end S=10.^((snr/2)/10)*(randn(K,L)+1j*randn(K,L)); %仿真信号 noise=(1/sqrt(2))*(randn(M,L)+1j*randn(M,L)); X=A*S+noise; %接收到的信号 R=X*X'/L; %信号协方差矩阵 Rn=noise*noise'/L; %噪声协方差矩阵 step=1; %搜索步长 Se_begin=-90; %定义搜索起终点 Se_end=90; Searching_doa = Se_begin:step:Se_end; %谱峰搜索范围 AA = zeros(M,length(Searching_doa)); %初始化稀疏基矩阵,维数(阵元*网格) for m=1:length(Searching_doa) %构造完备基 AA(:,m) = exp(-1j*(0:M-1)*d_lamda*2*pi*sin(Searching_doa(m)*pi/180)); end Sumvector=ones(length(Searching_doa),1); p=0.001; yita=chi2inv(1-p,M^2); y=vec(sqrt(L)*R^(-1/2)*(R-Rn)*R^(-1/2)); PHI=sqrt(L)*kron((R^(-1/2)).',(R^(-1/2)*AA)); %%利用凸工具箱进行二阶锥规划问题的求解 cvx_begin variables r(length(Searching_doa)) variables g variable B(length(Searching_doa),M) complex; expression bb(length(Searching_doa),1) minimize(g); subject to Sumvector'*r<=g; %第一个不等式约束 for q=1:length(Searching_doa) %第二个不等式约束 bb(q,:)=norm(B(q,:)); end bb=cvx(zeros(length(Searching_doa),1)); for q=1:length(Searching_doa) bb(q)<=r(q); end norm(y-PHI*vec(B))<=sqrt(yita); for q=1:length(Searching_doa) bb(q,:)=norm(B(q,:)); end cvx_end p=abs(bb(:,1))/max(abs(bb(:,1))); %归一化 clear B clear g clear r clear cvx_cputime clear cvx_optpnt clear cvx_optval clear cvx_problem clear cvx_slvitr clear cvx_slvtol clear cvx_status clear cvx_optbnd plot(Searching_doa,p); xlabel('Searching_doa(degree)'); ylabel('power'); title('L1-SRACV'); grid on效果:低信噪比,角度差较小时有伪峰
L1-SRACV
猜你喜欢
转载自blog.csdn.net/weixin_38452468/article/details/74995732
今日推荐
周排行