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

📄 af.asv

📁 此代码是用matlab进行AF协作的性能的仿真对误码率进行分析。
💻 ASV
字号:
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %10/13/2008     zhangsong
 %一个具有差错检测的DF仿真程序
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
echo off;clear all;close all;clc;
tic
N=10;
L=65;    %一帧长度
BerSnrTable=zeros(20,5);
for snr=0:25
    BerSnrTable(snr+1,1) = snr;
    sig=1/sqrt(10^(snr/10));
    %temp=0;
    %temp1=0;
    for i=1:N
        BitsTx = floor(rand(1,L)*2);
        P=mean(abs(BitsTx(:)).^2);
        %BitsTxcrc=CrcEncode(BitsTx);
        BitsTxcnv=cnv( BitsTx);
        Mod8Tx=mod_8psk(BitsTxcnv);
        M=length(Mod8Tx);
        %以下为假设信道模型和噪声模型,由于本次仿真重点不在于此,所以做以下简化
        H1d=RayleighCH();
        H12=RayleighCH();
        H2d=RayleighCH();
        Z1d=randn(1,M)+j*randn(1,M);
        Z12=randn(1,M)+j*randn(1,M);
        Z2d=randn(1,M)+j*randn(1,M);
        % d接收
        
        Y1d=H1d.*Mod8Tx+sig*Z1d;
        %user2接收并解码
        Y12=H12.*Mod8Tx+sig*Z12;
        R12=conj(H12).*Y12;
        BitR12=demod_8psk(R12);
        BitR12viterbi=viterbi(BitR12);
        BitR12viterbi=BitR12viterbi(1:length(BitR12viterbi)-1);
        %[BitR12decrc,error]=CrcDecode(BitR12viterbi);
         %error=0,正确解码   error=1,错误解码
         %非协作情况
        %if(error==1)
            R1d=conj(H1d).*Y1d; 
            BitR1d=demod_8psk(R1d);
            BitR1dviterbi=viterbi(BitR1d);
            BitR1dviterbi=BitR1dviterbi(1:length(BitR1dviterbi)-1);
            %BitR1ddecrc=CrcDecode(BitR1dviterbi);
            %[Num,Ber] = symerr(BitR1ddecrc,BitsTx);
            %BerSnrTable(snr+1,2)=BerSnrTable(snr+1,2)+Num;
        %end
         %协作情况
        %if(error==0)
            G=sqrt(P/(P*abs(H12).^2+2*sig*sig));
            Bits2d=BitR12viterbi;
            %Bits2dcrc=CrcEncode(Bits2d);
            Bits2dcnv=cnv(Bits2d);
            Mod8_2d=mod_8psk(Bits2dcnv);
            Y2d=H2d.*G*(Mod8_2d+sig*Z12)+sig*Z2d;
            %最大合并比在此处的简化形式
            Rd=conj(H2d).*Y2d+conj(H1d).*Y1d;
            BitRd=demod_8psk(Rd);
            BitRdviterbi=viterbi(BitRd);
            BitRdviterbi=BitRdviterbi(1:length(BitRdviterbi)-1);
            %BitRddecrc=CrcDecode(BitRdviterbi);
            [Num,Ber] = symerr( BitRdviterbi,BitsTx);
            BerSnrTable(snr+1,2)=BerSnrTable(snr+1,2)+Num;
            %temp=temp+1;
       % end   
    end
    BerSnrTable(snr+1,3)=BerSnrTable(snr+1,2)/(L*N);  %此处将M改成N
    %BerSnrTable(snr+1,4)=temp;
end   
semilogy(BerSnrTable(:,1),BerSnrTable(:,3),'r*-');
figure
semilogy(BerSnrTable(:,1),BerSnrTable(:,4),'g*-');
time_of_sim = toc
echo on;


⌨️ 快捷键说明

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