⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 af_df.asv

📁 协作通信的两种协作方式AF、DF的相关文档和独立编写的仿真程序
💻 ASV
字号:
function  AF_DF(maxsnr)
fprintf( 'AF_DF仿真\n') ;
%产生随机序列
N=5000;
BerSnrTable1 = zeros(maxsnr+1,3);
for SNR=0:maxsnr
    BerSnrTable1(SNR+1,1) = SNR;
    BitTx=floor(rand(1,N)*2);
    %星座图映射,QPSK
    SymQpsk=QpskMapping(BitTx);
    SymQpskd=[];
    M=length(SymQpsk);
    %噪声能量(已归一化)
    zsnl=sqrt(1/(10^((SNR)/10)));
    %==========================================
    for i=1:M
        %生成服从高斯分布的信道系数
        H0=randn+j*randn;
        H2=randn+j*randn;
        %生成加性高斯白噪声
        N0=zsnl*(randn+j*randn);
        N2=zsnl*(randn+j*randn);
        N1=zsnl*(randn+j*randn);
        G=sqrt(0.5/(0.5+zsnl*zsnl));
        %接收信号
        R1=H0*SymQpsk(i)+N0;
        R2=H2*G*(SymQpsk(i)+N1)+N2;
        %信号合成
        S1=conj(H0)*R1/(zsnl*zsnl);
        S2=conj(H2)*R2/(zsnl*zsnl);
        SS=S1+S2;
        %解调
        dh = [1+j -1+j -1-j 1-j]/sqrt(2);
        D1=abs(SS*[1 1 1 1]-dh).^2;
        [minScale1 positionmin1]=min(D1);
        SymQpskd=[SymQpskd dh(positionmin1)];
    end
    BitRx=QpskInverseMapping(SymQpskd);
    [Num,Ber]=symerr(BitTx,BitRx);
    BerSnrTable1(SNR+1,2) = Num ;
    BerSnrTable1(SNR+1,3) = Ber ;
end
  
%产生随机序列
N=5000;
BerSnrTable2=zeros(maxsnr+1,3);
for SNR=0:maxsnr
      BerSnrTable2(SNR+1,1) = SNR;
      BitTx=floor(rand(1,N)*2);
      Symblock=reshape(BitTx,100,50);%未加CRC的信息帧矩阵结构,每一行为一帧
      CrcSymblock=zeros(100,66);%为存储加了CRC的信号做准备
      CrcSymblock1=zeros(100,66);
      CrcSymblock2=zeros(100,66);
      RR1=zeros(100,50);
      BitRRx=zeros(100,66);
      BitR=zeros(100,50);
 for i=1:100
      %在信号桢中加入CRC,以50个比特为一帧
      CrcSymblock(i,:)=crc(Symblock(i,:));
      %星座图映射,QPSK
      SymQpsk=QpskMapping(CrcSymblock(i,:));
      SymQpskd=[];
      M=length(SymQpsk);
      %噪声能量(已归一化)
      zsnl=sqrt(1/(10^((SNR)/10)));
      %==========================================
      %生成加性高斯白噪声
       N1=zsnl*(randn(1,M)+j*randn(1,M));
      %============================================
      %中继接受信号
      R1=SymQpsk+N1;
      %Qpsk解调
        for k=1:M
          dh = [1+j -1+j -1-j 1-j]/sqrt(2);
          D1=abs(R1(k)*[1 1 1 1]-dh).^2;
          [minScale1 positionmin1]=min(D1);
          SymQpskd=[SymQpskd dh(positionmin1)];
        end
        R1d=QpskInverseMapping(SymQpskd);
     %CRC 解调
        remainder=decrc16(R1d);
   if isequal(remainder,[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]);
         % 去掉CRC码
          RR1(i,:)=R1d(1,1:50);
          %在信号桢中加入CRC,以50个比特为一帧
          CrcSymblock1(i,:)=crc(RR1(i,:));
         %星座图映射,QPSK
         SymQpsk1=QpskMapping(CrcSymblock1(i,:));
         SymQpskd1=[];
          for l=1:M
               %生成加性高斯白噪声
               N0=zsnl*(randn+j*randn);
               N2=zsnl*(randn+j*randn);
               R0=SymQpsk(l)+N0;
               R2=SymQpsk1(l)+N2;
               %信号合成
               S1=R0/zsnl*zsnl;
               S2=R2/zsnl*zsnl;
               SS=S1+S2;
               %解调
               dh = [1+j -1+j -1-j 1-j]/sqrt(2);
               D1=abs(SS*[1 1 1 1]-dh).^2;
               [minScale1 positionmin1]=min(D1);
               SymQpskd1=[SymQpskd1 dh(positionmin1)];
          end
               BitRRx(i,:)=QpskInverseMapping(SymQpskd1);
               % 去掉CRC码
               BitR(i,:)=BitRRx(i,1:50);
   else
                   
                  CrcSymblock2=crc(Symblock(i,:));
                  %星座图映射,QPSK
                  SymQpsk2=QpskMapping(CrcSymblock(i,:));
                  SymQpskd2=[];
                  M=length(SymQpsk2);
                    for l=1:M
                       N0=zsnl*(randn+j*randn);
                       R0=SymQpsk(l)+N0;
                       %解调
                       dh = [1+j -1+j -1-j 1-j]/sqrt(2);
                       D1=abs(R0*[1 1 1 1]-dh).^2;
                       [minScale1 positionmin1]=min(D1);
                       SymQpskd2=[SymQpskd2 dh(positionmin1)];
                   end  
                   BitRRx(i,:)=QpskInverseMapping(SymQpskd2);
                   % 去掉CRC码
                   BitR(i,:)=BitRRx(i,1:50);
    end
  end
             BitRx=reshape(BitR,1,N);
            [Num,Ber]=symerr(BitTx,BitRx);
             BerSnrTable2(SNR+1,2) = Num ;
             BerSnrTable2(SNR+1,3) = Ber ;
end
      figure(1);
      semilogy(BerSnrTable1(:,1),BerSnrTable1(:,3),'g*-',BerSnrTable2(:,1),BerSnrTable2(:,3),'ro-');
      xlabel('SNR');
      ylabel('BER');
      title('AF和DF的RER比较');
      h = legend('AF','DF',2);
      set(h,'Interpreter','none');
     
      
      
      
   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -