【多天线传输技术】迫零检测算法、串行干扰相消算法、排序串行干扰相消算法

clc;
clear;
close all;
len_s=100000; % 信号长度
snr=0:2:20;%信噪比
len_snr=length(snr);
s2_1=zeros(1,4);
ber_zf=zeros(1,len_snr);
ber_zf_sic=zeros(1,len_snr);
ber_zf_chsic=zeros(1,len_snr);
for ii=1:len_snr
    error_zf2=0;
  for i=1:len_s
    sn=randi([0,1],4,1); %产生随机信号
    mod_sn=pskmod(sn,2);
    sigma =sqrt(0.5.*10.^(-snr(ii)./10));
    %I,Q两路独立产生噪声
    Q_noise = randn(4, 1);
    I_noise = randn(4, 1);
    noise = complex(I_noise,Q_noise);
    noise = sigma.*noise;%高斯白噪声
    H=1/sqrt(2)*(randn(4,4) + 1i*randn(4,4));
    y1=H*mod_sn+noise;
    G=inv(H);  %求逆  
    y1_1=G*y1;
    s=pskdemod(y1_1,2);%BPSK解调
    error_zf1=find(s~=sn);%错误判决
    error_zf2=length(error_zf1)+error_zf2;
  end
    ber_zf(ii)=error_zf2./(len_s*4);
end

for ii=1:len_snr
    error_zf22=0;
    for i=1:len_s
       sn2=randi([0,1],4,1); %产生随机信号
       mod_sn2=pskmod(sn2,2);
       sigma =sqrt(0.5.*10.^(-snr(ii)./10));
       %I,Q两路独立产生噪声
       Q_noise = randn(4, 1);
       I_noise = randn(4, 1);
       noise = complex(I_noise,Q_noise);
       noise = sigma.*noise;%高斯白噪声
       H=1/sqrt(2)*(randn(4,4) + 1i*randn(4,4));
       y2_1_1=H*mod_sn2+noise;  %4*1
       for p=1:4
          G2=pinv(H); %伪逆矩阵
          w2_1=G2(p,:);  %1*4
          y2_1_2=w2_1*y2_1_1;
          s2_1(p)=pskdemod(y2_1_2,2);%BPSK解调
          s2_1_1=pskmod(s2_1(p),2);   %先检测第一个信号
          aH=s2_1_1.*H(:,p);
          y2_1_1= y2_1_1-aH;
          H(:,p)=zeros(4,1);
       end
      error_zf21=find(s2_1.'~=sn2);%错误判决
      error_zf22=length(error_zf21)+error_zf22;
    end
    ber_zf_sic(ii)=error_zf22./(len_s*4);
end
%选信号强度最大的
for ii=1:len_snr
    error_zf22=0;
    for i=1:len_s
       sn2=randi([0,1],4,1); %产生随机信号
       mod_sn2=pskmod(sn2,2);  %bpsk调制
       sigma =sqrt(0.5.*10.^(-snr(ii)./10));
       %I,Q两路独立产生噪声
       Q_noise = randn(4, 1);
       I_noise = randn(4, 1);
       noise = complex(I_noise,Q_noise);
       noise = sigma.*noise;%高斯白噪声
       H=1/sqrt(2)*(randn(4,4) + 1i*randn(4,4));
       y2_1_1=H*mod_sn2+noise;
       G3_1=zeros(4,4);
       for p=1:4
          G3=pinv(H);%伪逆矩阵
          sum1=sum(abs(G3+G3_1).^2,2);%对矩阵行求和
          [x,p1]=min(sum1); %
          G3_1(p1,:)=[1000 1000 1000 1000];
          w2_1=G3(p1,:);
          y2_1_2=w2_1*y2_1_1;
          s2_1(p1)=pskdemod(y2_1_2,2);%BPSK解调
          s2_1_1=pskmod(s2_1(p1),2);
          aH=s2_1_1.*H(:,p1);
          y2_1_1= y2_1_1-aH;
          H(:,p1)=zeros(4,1);
       end
      error_zf21=find(s2_1.'~=sn2);%错误判决
      error_zf22=length(error_zf21)+error_zf22;
    end
    ber_zf_chsic(ii)=error_zf22./(len_s*4);
end
 semilogy(snr,ber_zf,'-k*',snr,ber_zf_sic,'-ko',snr,ber_zf_chsic,'-kx')
 grid on
 legend('迫零检测算法','串行干扰消除算法','排序串行干扰消除算法')
 xlabel('信噪比snr')
 ylabel('误比特率')

在这里插入图片描述

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MR_Promethus

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值