channel_coding.m

来自「OFDM的详细仿真代码」· M 代码 · 共 53 行

M
53
字号

function coded_user_bit = channel_coding( user_bit , UserRS_Coding , UserTrellis ,...
                          TraceBackLen, turn_on )
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 根据不同用户的信道编码参数,进行信道编码
% 输入: user_bit, 用户比特
%       UserRS_Coding, 每个用户的RS码参数
%       UserTrellis,每个用户的卷积码trellis 结构体
%       TraceBackLen, 卷积码译码深度
%       turn_on, 是否打开此功能
% 输出: coded_user_bit, 已编码的用户比特

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


if turn_on
    
    N_user = size( UserRS_Coding ,2);
    for u = 1:N_user
        user_rscode{u} = rsenco(user_bit{u} ,UserRS_Coding(1,u),UserRS_Coding(2,u));

        % 卷积编码
        user_rscode2{u} = [ user_rscode{u} ; zeros( TraceBackLen , 1)];
        
        user_convcode{u} = convenc(user_rscode2{u},UserTrellis(u));

%         user_convdecode{u} = vitdec(user_convcode{u},UserTrellis(u),TraceBackLen ,'cont','hard');
%         
%         user_convdecode{u} = user_convdecode{u}(TraceBackLen + 1:end);
%         
%         
%         comp(u) = sum(abs(user_rscode{u} - user_convdecode{u}));
%         
%         
%         user_rsdecode{u} = rsdeco(user_convdecode{u},UserRS_Coding(1,u),UserRS_Coding(2,u));
%     
%         user_rsdecode{u} = user_rsdecode{u}(1:length(user_bit{u}));
%     
%         comp(u) = sum(abs(user_bit{u} - user_rsdecode{u}'));


    end   
    
    coded_user_bit = user_convcode;
    
else
    
    coded_user_bit = user_bit;

end


⌨️ 快捷键说明

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