📄 detection_plus.m
字号:
clear all;close all;clcDFP_num1=floor(0.1/0.00016917);DFP_num2=floor(0.2/0.00016917);DFP_num3=floor(0.3/0.00016917);LC_num1=floor(0.1/0.00006500);LC_num2=floor(0.2/0.00006500);LC_num3=floor(0.3/0.00006500);LS_num1=floor(0.1/0.00144250);LS_num2=floor(0.2/0.00144250);LS_num3=floor(0.3/0.00144250);p=[1 0 0 1 0 1;1 1 0 1 1 1];p=p(:,2:6);init=[1 1 1 1 1];state=kron(init,[1;1]);c=[];for i=1:31 output=mod(sum(p.*state,2),2); state=[output state(:,1:4)]; c=[c output];end;a=2*c(1,:).'-1;b=2*c(2,:).'-1;s=[];for i=1:31 b=[b(2:31);b(1)]; s=[s a.*b];end;s1=s(:,3)./sqrt(31);s2=s(:,4)./sqrt(31);s3=s(:,5)./sqrt(31);s4=s(:,6)./sqrt(31);s5=s(:,7)./sqrt(31);s6=s(:,8)./sqrt(31);s7=s(:,9)./sqrt(31);b1=rand(1,DFP_num3);b2=rand(1,DFP_num3);b3=rand(1,DFP_num3);b4=rand(1,DFP_num3);b5=rand(1,DFP_num3);b6=rand(1,DFP_num3);b7=rand(1,DFP_num3);%----------定义6个用户数据A1=1;A2=1.4125;A3=1.4125;A4=1.4125;A5=1.4125;A6=1.4125;A7=1.4125;%---------各用户增益c1=s1;for i=1:DFP_num3 if(b1(i)>0.5) b1(i)=1; else b1(i)=-1; endendr1=c1*b1;c2=s2;for i=1:DFP_num3 if(b2(i)>=0.5) b2(i)=1; else b2(i)=-1; endendr2=c2*b2;c3=s3;for i=1:DFP_num3 if(b3(i)>0.5) b3(i)=1; else b3(i)=-1; endendr3=c3*b3;c4=s4;for i=1:DFP_num3 if(b4(i)>0.5) b4(i)=1; else b4(i)=-1; endendfor i=DFP_num2:DFP_num3 b4(i)=0;endr4=c4*b4;c5=s5;for i=1:DFP_num3 if(b5(i)>0.5) b5(i)=1; else b5(i)=-1; endendfor i=1:DFP_num1 b5(i)=0;endfor i=DFP_num2:DFP_num3 b5(i)=0;endr5=c5*b5;r=A1*r1+A2*r2+A3*r3+A4*r4+A5*r5;SNR=20;r=awgn(r,SNR);%---------------------LCDPFCMA-------------------------w=s1;u=1*10^-3;B=eye(31)-s1*s1';x=zeros(31,1);H=eye(31);ticfor i=1:DFP_num3% if mod(i,100)==0% i% end X=r(:,i); y(i)=w'*X; e=2*(y(i)^2-1)*y(i); g=e*B*X; if i==1 p=-H*g; R=eye(31); else j=x-x1; k=g-g1; H=H-(H*j*j'*H)/(j'*H*j)+k*k'/(k'*k);% H=H-(H*k*k'*H)/(k'*H*k)+(j*j')/(k'*j);% H=H-(H*j*j'*H)/(j'*H*j)+k*k'/(k'*k)+(j'*H*j)*((k)/(k'*k)-(H*j)/(j'*H*j))'*((k)/(k'*k)-(H*j)/(j'*H*j));% H=H-(H*k*k'*H)/(k'*H*k)+(j*j')/(k'*j)+(k'*H*k)*((j)/(k'*j)-(H*k)/(k'*H*k))'*((j)/(k'*j)-(H*k)/(k'*H*k)); p=-H*g; end g1=g; x1=x; x=x+u*p; w=s1+B*x; if i<=DFP_num1 n=(A2*w'*s2)^2+(A3*w'*s3)^2+(A4*w'*s4)^2+w'*0.01*w; SINR11(i)=((A1*w'*s1)^2)/n; end if i>DFP_num1&i<=DFP_num2 n=(A2*w'*s2)^2+(A3*w'*s3)^2+(A4*w'*s4)^2+(A5*w'*s5)^2+w'*0.01*w; SINR11(i)=((A1*w'*s1)^2)/n; end if i>DFP_num2 n=(A2*w'*s2)^2+(A3*w'*s3)^2+w'*0.01*w; SINR11(i)=((A1*w'*s1)^2)/n; end endtoc%---------------------LCCMA-------------------------p=[1 0 0 1 0 1;1 1 0 1 1 1];p=p(:,2:6);init=[1 1 1 1 1];state=kron(init,[1;1]);c=[];for i=1:31 output=mod(sum(p.*state,2),2); state=[output state(:,1:4)]; c=[c output];end;a=2*c(1,:).'-1;b=2*c(2,:).'-1;s=[];for i=1:31 b=[b(2:31);b(1)]; s=[s a.*b];end;s1=s(:,3)./sqrt(31);s2=s(:,4)./sqrt(31);s3=s(:,5)./sqrt(31);s4=s(:,6)./sqrt(31);s5=s(:,7)./sqrt(31);s6=s(:,8)./sqrt(31);s7=s(:,9)./sqrt(31);b1=rand(1,LC_num3);b2=rand(1,LC_num3);b3=rand(1,LC_num3);b4=rand(1,LC_num3);b5=rand(1,LC_num3);b6=rand(1,LC_num3);b7=rand(1,LC_num3);%----------定义6个用户数据A1=1;A2=1.4125;A3=1.4125;A4=1.4125;A5=1.4125;A6=1.4125;A7=1.4125;%---------各用户增益c1=s1;for i=1:LC_num3 if(b1(i)>0.5) b1(i)=1; else b1(i)=-1; endendr1=c1*b1;c2=s2;for i=1:LC_num3 if(b2(i)>=0.5) b2(i)=1; else b2(i)=-1; endendr2=c2*b2;c3=s3;for i=1:LC_num3 if(b3(i)>0.5) b3(i)=1; else b3(i)=-1; endendr3=c3*b3;c4=s4;for i=1:LC_num3 if(b4(i)>0.5) b4(i)=1; else b4(i)=-1; endendfor i=LC_num2:DFP_num3 b4(i)=0;endr4=c4*b4;c5=s5;for i=1:LC_num3 if(b5(i)>0.5) b5(i)=1; else b5(i)=-1; endendfor i=1:LC_num1 b5(i)=0;endfor i=LC_num2:LC_num3 b5(i)=0;endr5=c5*b5;r=A1*r1+A2*r2+A3*r3+A4*r4+A5*r5;SNR=20;r=awgn(r,SNR);w=s1;u=1*10^-3;B=eye(31)-s1*s1';x=zeros(31,1); H=eye(31);ticfor i=1:LC_num3% if mod(i,100)==0% i% end X=r(:,i); y(i)=w'*X; g=B'*(y(i)^2-1)*y(i)*X; x=x+u*g; w=s1-B*x; if i<=LC_num1 n=(A2*w'*s2)^2+(A3*w'*s3)^2+(A4*w'*s4)^2+w'*0.01*w; SINR31(i)=((A1*w'*s1)^2)/n; end if i>LC_num1&i<=LC_num2 n=(A2*w'*s2)^2+(A3*w'*s3)^2+(A4*w'*s4)^2+(A5*w'*s5)^2+w'*0.01*w; SINR31(i)=((A1*w'*s1)^2)/n; end if i>LC_num2 n=(A2*w'*s2)^2+(A3*w'*s3)^2+w'*0.01*w; SINR31(i)=((A1*w'*s1)^2)/n; endendtocp=[1 0 0 1 0 1;1 1 0 1 1 1];p=p(:,2:6);init=[1 1 1 1 1];state=kron(init,[1;1]);c=[];for i=1:31 output=mod(sum(p.*state,2),2); state=[output state(:,1:4)]; c=[c output];end;a=2*c(1,:).'-1;b=2*c(2,:).'-1;s=[];for i=1:31 b=[b(2:31);b(1)]; s=[s a.*b];end;s1=s(:,3)./sqrt(31);s2=s(:,4)./sqrt(31);s3=s(:,5)./sqrt(31);s4=s(:,6)./sqrt(31);s5=s(:,7)./sqrt(31);s6=s(:,8)./sqrt(31);s7=s(:,9)./sqrt(31);b1=rand(1,LS_num3);b2=rand(1,LS_num3);b3=rand(1,LS_num3);b4=rand(1,LS_num3);b5=rand(1,LS_num3);b6=rand(1,LS_num3);b7=rand(1,LS_num3);%----------定义6个用户数据A1=1;A2=1.4125;A3=1.4125;A4=1.4125;A5=1.4125;A6=1.4125;A7=1.4125;%---------各用户增益c1=s1;for i=1:LS_num3 if(b1(i)>0.5) b1(i)=1; else b1(i)=-1; endendr1=c1*b1;c2=s2;for i=1:LS_num3 if(b2(i)>=0.5) b2(i)=1; else b2(i)=-1; endendr2=c2*b2;c3=s3;for i=1:LS_num3 if(b3(i)>0.5) b3(i)=1; else b3(i)=-1; endendr3=c3*b3;c4=s4;for i=1:LS_num3 if(b4(i)>0.5) b4(i)=1; else b4(i)=-1; endendfor i=LS_num2:LS_num3 b4(i)=0;endr4=c4*b4;c5=s5;for i=1:LS_num3 if(b5(i)>0.5) b5(i)=1; else b5(i)=-1; endendfor i=1:LS_num1 b5(i)=0;endfor i=LS_num2:LS_num3 b5(i)=0;endr5=c5*b5;r=A1*r1+A2*r2+A3*r3+A4*r4+A5*r5;SNR=20;r=awgn(r,SNR);%---------------------LSCMA-------------------------w=s1;R=eye(31);ticfor i=1:LS_num3% if mod(i,100)==0% i% end X=r(:,i); y(i)=w'*X; d=y(i)./abs(y(i)); e=y(i)-d; R=R+X*X'; w=w-pinv(R)*X*e;% X=r;% y=w'*X;% d=y./abs(y);% e=y-d;% R=X*X';% w=pinv(R)*X*d'; if i<=LS_num1 n=(A2*w'*s2)^2+(A3*w'*s3)^2+(A4*w'*s4)^2+w'*0.01*w; SINR21(i)=((A1*w'*s1)^2)/n; end if i>LS_num1&i<=LS_num2 n=(A2*w'*s2)^2+(A3*w'*s3)^2+(A4*w'*s4)^2+(A5*w'*s5)^2+w'*0.01*w; SINR21(i)=((A1*w'*s1)^2)/n; end if i>LS_num2 n=(A2*w'*s2)^2+(A3*w'*s3)^2+w'*0.01*w; SINR21(i)=((A1*w'*s1)^2)/n; endendtoc% plot(i,10*log10(SINR11(i)),'k-*');% hold on% plot(i,10*log10(SINR21(i)),'k->');% plot(i,10*log10(SINR31(i)),'k-O');i=1:30:LC_num3;plot(0.00006500*i,10*log10(SINR31(i)),'k-');hold oni=1:10:DFP_num3;plot(0.00016917*i,10*log10(SINR11(i)),'k--');i=1:LS_num3;plot(0.00144250*i,10*log10(SINR21(i)),'k:');legend('LCDFPCMA','LCCMA','LSCMA',4)xlabel('迭代时间(S)');ylabel('信号干扰噪声比SINR(dB)');title('CMA多用户检测');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -