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

📄 main_backer.m

📁 RS编解码过程,并包括进制转换和域的变换,可用于RS码仿真
💻 M
字号:
%加高斯信道以及交织
clear
echo off
n=14; k=10;             % Codeword and message word length
m=4;                    % Number of bits per symbol
N=840;                  %帧的长度
M=2^4;                                                      
snr=5:1:15;  
for j=1:length(snr)
    for i=1:N            %多进制信源
        temp=rand;
        msource(i)=floor(M*temp);
    end
    [primsg,t]=decommsg(msource,k);  %将信息分帧,primsg是t*k的矩阵,即帧结构
    msg  = gf(primsg,m);             % 将多进制符号映射到伽逻华域,
    encode_out = rsenc(msg,n,k);     % 对多进制符号进行编码
    ss=encode_out.x;                 %将伽逻华域映射到多进制符号
    ss_16=reshape(ss,1,t*n);         % ss_16是十六进制
    interweaver_out=ss(:)';          %交织
    ss_2=Hex2Two(interweaver_out);   %16进制变为2进制
    add_head=add_frame_head1313(ss_2(:)');   %加同步帧头
    channel_out=AWGN_Channel(add_head,snr(j)); % 经过AWGN信道 
    for q=1:N*m*n/k+52
        if channel_out(q)>0.5        %判决
            channel_out(q)=1;
        else channel_out(q)=0;
        end
    end                            
    sub_head_2=backercode65(channel_out);      %去同步帧头
    sub_head_16=Two2Hex(sub_head_2);        %把二进制转换成十六进制   
    rsdec_in=reshape(sub_head_16 ,t,n);
    [code_out,cnumerr] = rsdec(gf(rsdec_in,m),n,k); %对多进制符号进行译码
    cc=code_out.x;
    receivetemp=code_out.x;  %将译码输出的码字进行合并成一串多进制符号
    receive=reshape(receivetemp',1,k*t);     
    receive_2=reshape(Hex2Two(receive),1,m*N);
    msource_2=reshape(Hex2Two(msource),1,m*N);
    sumerror(j)=0;    
    for i=1:N*m
        if(msource_2(i)~=receive_2(i))    %译码输出与信源比较
            sumerror(j)=sumerror(j)+1;
        end
    end
    ber2(j)=sumerror(j)/(N*m);       %计算误码率
end
semilogy(snr,ber2,'-ro')

⌨️ 快捷键说明

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