L1-SRACV

来源:互联网 发布:单片机温度报警器程序 编辑:程序博客网 时间:2024/06/03 20:55

%2017%function:L1_SRCAV算法clcclear 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)); %导向矢量endS=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));endSumvector=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_beginvariables r(length(Searching_doa))variables gvariable B(length(Searching_doa),M)  complex;expression bb(length(Searching_doa),1) minimize(g);subject toSumvector'*r<=g;        %第一个不等式约束for q=1:length(Searching_doa)       %第二个不等式约束    bb(q,:)=norm(B(q,:));endbb=cvx(zeros(length(Searching_doa),1));for q=1:length(Searching_doa)    bb(q)<=r(q);endnorm(y-PHI*vec(B))<=sqrt(yita);for q=1:length(Searching_doa)    bb(q,:)=norm(B(q,:));endcvx_endp=abs(bb(:,1))/max(abs(bb(:,1)));           %归一化clear Bclear gclear rclear cvx_cputime clear cvx_optpnt clear cvx_optval clear cvx_problem clear cvx_slvitr clear cvx_slvtol  clear cvx_statusclear cvx_optbndplot(Searching_doa,p);xlabel('Searching_doa(degree)');ylabel('power');title('L1-SRACV');grid on
效果:低信噪比,角度差较小时有伪峰

原创粉丝点击