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

📄 butongneima.m

📁 级联码仿真 改变不同的参数进行仿真
💻 M
字号:
    N=20;
frame_no=104;
rs_N=15;
rs_k=13;
Nrows=12;
Ncols=10;
tblen=34;
EbNo=-5:15;
M=2;
modobj=modem.pskmod('M', 2, 'PhaseOffset', 0, 'SymbolOrder',...
    'binary', 'InputType', 'bit');

demodobj= modem.pskdemod('M', 2, 'PhaseOffset', 0, ...
    'SymbolOrder', 'binary', 'OutputType', 'bit', ...
    'DecisionType', 'hard decision');
for n=1:length(EbNo)
    
    coderate=0.5*223/255;

% Ebn0=2;
trel=poly2trellis(3, [7 5]);
SNR(n) = EbNo(n) -10*log10(1/coderate);
    error_no=0;
% error_no_conv=0;
 for i=1:N
        % i
        raw_data=randint(1,frame_no,2);
        t1=reshape(raw_data,8,13);
        t2=bi2de(t1','left-msb');
        msg = gf(t2,8);
        t3=rsenc(msg',rs_N,rs_k);
        t4=de2bi(double(t3.x),8,'left-msb');
        t4=reshape(t4',120,1);

        intrlved= matintrlv(t4,Nrows,Ncols);
        % trel=poly2trellis(7, [133 171]);
       t5=convenc(intrlved,trel);
      
       a0=modulate(modobj,t5);
        a0=pskmod(t5,2);
%         a1=filter(chan,a0);
        a2=awgn(a0,SNR(n));
        set(demodobj,'OutputType','bit','DecisionType', 'Approximate LLR', 'NoiseVariance', 10^(-SNR(n)/10));
             a3=demodulate(demodobj,a2);
%       
        decoded3 = vitdec(a3, trel, tblen, 'trunc', 'unquant');
        deintrlved= matdeintrlv(decoded3,Nrows,Ncols);
        t9=reshape(deintrlved,8,15);
        tt=bi2de(t9','left-msb');
        msg1 = gf(tt,8);
        [dec,cnumerr] = rsdec(msg1',rs_N,rs_k);
        % t10=t2'-double(dec.x);
        dec_data=de2bi((double(dec.x))',8,'left-msb');
        dec_data1=reshape(dec_data',104,1);
        [t12,t13]=biterr(dec_data1,raw_data');
        [t14,t15]=biterr(decoded3,intrlved);
        error_no=error_no+t13;
%        error_no_conv=error_no_conv+t15;
    end
    ber_cont1(n)=error_no/N;
    
    
    
    

trel=poly2trellis(2, [3 2]);
SNR(n) = EbNo(n) -10*log10(1/coderate);
    error_no=0;

 for i=1:N
      
        raw_data=randint(1,frame_no,2);
        t1=reshape(raw_data,8,13);
        t2=bi2de(t1','left-msb');
        msg = gf(t2,8);
        t3=rsenc(msg',rs_N,rs_k);
        t4=de2bi(double(t3.x),8,'left-msb');
        t4=reshape(t4',120,1);

        intrlved= matintrlv(t4,Nrows,Ncols);
        % trel=poly2trellis(7, [133 171]);
       t5=convenc(intrlved,trel);
      
       a0=modulate(modobj,t5);
        a0=pskmod(t5,2);
%         a1=filter(chan,a0);
        a2=awgn(a0,SNR(n));
        set(demodobj,'OutputType','bit','DecisionType', 'Approximate LLR', 'NoiseVariance', 10^(-SNR(n)/10));
             a3=demodulate(demodobj,a2);
%       
        decoded3 = vitdec(a3, trel, tblen, 'trunc', 'unquant');
        deintrlved= matdeintrlv(decoded3,Nrows,Ncols);
        t9=reshape(deintrlved,8,15);
        tt=bi2de(t9','left-msb');
        msg1 = gf(tt,8);
        [dec,cnumerr] = rsdec(msg1',rs_N,rs_k);
        % t10=t2'-double(dec.x);
        dec_data=de2bi((double(dec.x))',8,'left-msb');
        dec_data1=reshape(dec_data',104,1);
        [t12,t13]=biterr(dec_data1,raw_data');
        [t14,t15]=biterr(decoded3,intrlved);
        error_no=error_no+t13;
%        error_no_conv=error_no_conv+t15;
    end
    ber_cont2(n)=error_no/N;
    
end
semilogy(EbNo,ber_cont1,'-*',EbNo,ber_cont2,'-+')
grid on;
marker = legend('(7,5)卷积码','(3,2)卷积码',3);
set(marker,'Interpreter','none');
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

⌨️ 快捷键说明

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