📄 interference1.m
字号:
K=2;N=1;
numbit=10000;
code=[1 1 -1 -1 -1 -1 -1 -1 1 -1 1 1 -1 1 -1 -1 1 -1 1 1 1 1 1 -1 1 -1 1 -1 -1 -1 1 ;...
1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 1 1 -1 1 1 -1 1 1 1 1 1 -1 -1 -1 1 -1 ;...
1 1 1 -1 -1 -1 -1 1 1 -1 -1 1 1 -1 -1 -1 -1 1 -1 -1 -1 1 1 -1 -1 1 1 1 1 1 1 ;...
1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 1 -1 1 1 -1 -1 -1 -1 1 -1 1 1 -1 -1 1 1 -1 ;...
1 1 -1 1 -1 -1 1 -1 -1 1 1 1 1 -1 1 1 -1 -1 1 1 -1 -1 1 1 -1 1 1 1 -1 1 1 ;...
1 -1 1 1 -1 -1 -1 1 -1 -1 -1 -1 1 1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 -1 1 -1 -1 -1 ;...
1 1 1 1 -1 -1 1 1 -1 1 -1 1 -1 1 1 1 1 1 -1 -1 1 -1 1 1 1 -1 1 -1 1 -1 1 ;...
1 -1 -1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 1 -1 1 -1 -1 -1 1 -1 -1 1 1 1 1 1 -1 -1 1 ;...
1 1 -1 -1 1 -1 -1 1 1 1 -1 1 -1 -1 1 1 -1 1 1 1 1 -1 -1 -1 -1 1 -1 -1 1 -1 -1 ;...
1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 -1 1 1 -1 -1 1 1 1 -1 -1 -1 1 -1 -1 1 -1 1 1 1 ;...
1 1 1 -1 1 -1 -1 -1 1 1 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 1 -1 -1 1 -1 1 -1 ;...
1 -1 -1 1 1 -1 -1 1 -1 1 -1 -1 -1 1 -1 1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 1 1;...
1 1 -1 1 1 -1 1 1 -1 -1 -1 1 1 1 -1 -1 1 1 1 1 -1 1 -1 1 1 -1 -1 1 1 1 -1 ;...
1 -1 1 1 1 -1 -1 -1 -1 1 1 -1 1 -1 -1 1 1 1 1 1 1 1 -1 -1 1 1 1 1 1 -1 1 ;...
1 1 1 1 1 -1 1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 1 -1 1 -1 -1 -1 -1 -1 ;...
1 -1 -1 -1 -1 1 1 -1 -1 1 -1 1 1 1 1 -1 1 -1 1 -1 1 1 -1 -1 -1 1 1 -1 1 1 -1 ;...
1 1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 -1 1 1 1 -1 1 -1 1 1 1 -1 1 1 1 -1 1 -1 1 1 ;...
1 -1 1 -1 -1 1 1 1 -1 1 1 1 -1 -1 1 -1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 1 -1 -1 -1;...
1 1 1 -1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 1 1 -1 1 -1 -1 1 -1 1 -1 -1 -1 -1 1 -1 1 ;...
1 -1 -1 1 -1 1 -1 -1 1 -1 -1 1 -1 -1 -1 1 -1 -1 1 -1 -1 -1 -1 1 1 -1 1 1 1 -1 -1 ;...
1 1 -1 1 -1 1 1 -1 1 1 -1 -1 1 -1 -1 -1 1 1 -1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 ;...
1 -1 1 1 -1 1 -1 1 1 -1 1 1 1 1 -1 1 1 1 -1 1 1 -1 -1 1 -1 1 1 -1 -1 1 -1 ;...
1 1 1 1 -1 1 1 1 1 1 1 -1 -1 1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 1 1 -1 1 1 1 1 ;...
1 -1 -1 -1 1 1 1 1 -1 -1 1 1 1 -1 -1 1 -1 1 1 -1 1 -1 1 -1 1 -1 -1 -1 -1 1 1 ;...
1 1 -1 -1 1 1 -1 1 -1 1 1 -1 -1 -1 -1 -1 1 -1 -1 1 1 -1 1 1 -1 -1 1 1 1 1 -1 ;...
1 -1 1 -1 1 1 1 -1 -1 -1 -1 1 -1 1 -1 1 1 -1 -1 1 -1 -1 1 -1 -1 1 -1 1 1 -1 1 ;...
1 1 1 -1 1 1 -1 -1 -1 1 -1 -1 1 1 -1 -1 -1 1 1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 ;...
1 -1 -1 1 1 1 -1 1 1 1 1 1 -1 1 1 -1 1 1 1 -1 -1 1 1 1 -1 1 -1 1 -1 -1 1 ;...
1 1 -1 1 1 1 1 1 1 -1 1 -1 1 1 1 1 -1 -1 -1 1 -1 1 1 -1 1 1 1 -1 1 -1 -1 ;...
1 -1 1 1 1 1 -1 -1 1 1 -1 1 1 -1 1 -1 -1 -1 -1 1 1 1 1 1 1 -1 -1 -1 1 1 1 ;...
1 1 1 1 1 1 1 -1 1 -1 -1 -1 -1 -1 1 1 1 1 1 -1 1 1 1 -1 -1 -1 1 1 -1 1 -1 ;...
1 -1 -1 -1 -1 -1 1 -1 1 1 1 -1 1 1 -1 1 -1 1 -1 -1 1 1 1 1 -1 -1 -1 1 1 -1 -1 ];
EbN0=0:2:30;
snr_in_dB=EbN0-10*log10(31);
bits=sign(randn(K,numbit));
tran=bits'*code(1:K,:);
%--------------------------------------------------
for m=1:length(snr_in_dB)
num_of_err=0;num_of_err1=0;num_of_err2=0;
rec=awgn(tran,snr_in_dB(m),'measured');
%---------------------------------------------------NO_PIC方法检测
for i=1:numbit
for k=1:K
decision_varian=rec(i,:)*code(k,:)';
if(decision_varian<0)
decision0=-1;
else
decision0=1;
end
if(decision0~=bits(k,i))
num_of_err=num_of_err+1;
end
end
%--------------------------------------------------一级PIC方法检测
for k=1:K
decision_varian=rec(i,:)*code(k,:)';
if(decision_varian<0)
decision(k,i)=-1;
else
decision(k,i)=1;
end
end
for k=1:K
decision_1=zeros(1,31);
for j=1:K
decision_1=decision_1+decision(j,i)*code(j,:);
end
decision_varian=(rec(i,:)-decision_1+decision(k,i)*code(k,:))*code(k,:)';
if(decision_varian<0)
decision(k,i)=-1;
else
decision(k,i)=1;
end
if(decision(k,i)~=bits(k,i))
num_of_err1=num_of_err1+1;
end
end
%----------------------------------------------------N级PIC方法检测
for k=1:K
decision_varian=rec(i,:)*code(k,:)';
if(decision_varian<0)
decision1(k,i)=-1;
else
decision1(k,i)=1;
end
end
for n=1:N
for k=1:K
decision_1=zeros(1,31);
for j=1:K
decision_1=decision_1+decision(j,i)*code(j,:);
end
decision_varian=(rec(i,:)-decision_1+decision(k,i)*code(k,:))*code(k,:)';
if(decision_varian<0)
decision1(k,i)=-1;
else
decision1(k,i)=1;
end
if(n==N)
if(decision1(k,i)~=bits(k,i))
num_of_err2=num_of_err2+1;
end
end
end
end
%------------------------------------------------
end
error0(m)=num_of_err/(K*numbit);
error1(m)=num_of_err1/(K*numbit);
error2(m)=num_of_err2/(K*numbit);
end
if (N==1)
semilogy(EbN0,error0,'-b^',EbN0,error1,'-rd');
grid on;
xlabel('Eb/N0');
ylabel('BER');
title('NOPIC与一级PIC的性能比较');
legend('NOPIC','一级PIC');
axis([0 20 1e-5 1e0]);
else
semilogy(EbN0,error0,'-b^',EbN0,error1,'-rd',EbN0,error2,'--gv');
% semilogy(snr_in_dB,error);
grid on;
xlabel('Eb/N0');
ylabel('BER');
title('NOPIC/一级PIC/多级PIC的性能比较');
legend('NOPIC','一级PIC','多级PIC');
axis([0 20 1e-5 1e0]);
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -