Code covered by the BSD License  

Highlights from
DVB-T

from DVB-T by Salaheddin Hosseinzadeh
GUI based simulation of DVB-T Interneaver Enhancement

ConvEncoder(msg, coderate, state)
function [code ConvEncNewState] = ConvEncoder(msg, coderate, state)
% msg was vector in the main body of dvb function, sent tot ConvEncoder as
% a Column though, msg (input) is a column in this functuin


trel = poly2trellis(7, [171 133]); % Trellis with contraint length 7 and generator polynomials o'133' o'171'
if state == 0
    if strcmp(coderate, '1/2') == 1
         msg=[msg;zeros(48,1)];
        [code ConvEncNewState] = convenc(msg,trel); % Encode the message.
        code=code(1:end-48);

    elseif strcmp(coderate, '2/3') == 1
        s=4-rem(size(msg,1),4);
        msg=[msg;zeros(s,1)];
        [code ConvEncNewState] = convenc(msg,trel,[1 1 0 1]); % Encode the message.
        code=code(1:end-s);
        %assignin('base','code0',code) 
 
    elseif strcmp(coderate, '3/4') == 1
         s=6-rem(size(msg,1),6);
         msg=[msg;zeros(s,1)];
        [code ConvEncNewState] = convenc(msg,trel,[1 1 0 1 1 0]); % Encode the message.
        code=code(1:end-s);
    elseif strcmp(coderate, '5/6') == 1
         s=10-rem(size(msg,1),10);
         msg=[msg;zeros(s,1)];
        [code ConvEncNewState] = convenc(msg,trel,[1 1 0 1 1 0 0 1 1 0]); % Encode the message.
        code=code(1:end-s);
        
    elseif strcmp(coderate, '7/8') == 1
        s=14-rem(size(msg,1),14);
        msg=[msg;zeros(s,1)];
        [code ConvEncNewState] = convenc(msg,trel,[1 1 0 1 0 1 0 1 1 0 0 1 1 0]); % Encode the message.
        code=code(1:end-s);
    end
else
    if strcmp(coderate, '1/2') == 1
         msg=[msg;zeros(48,1)];
        [code ConvEncNewState] = convenc(msg,trel,state); % Encode the message.
        code=code(1:end-48);
    elseif strcmp(coderate, '2/3') == 1
         s=4-rem(size(msg,1),4);
         msg=[msg;zeros(s,1)];
        [code ConvEncNewState] = convenc(msg,trel,[1 1 0 1],state); % Encode the message.
        code=code(1:end-s);
    elseif strcmp(coderate, '3/4') == 1
         s=6-rem(size(msg,1),6);
         msg=[msg;zeros(s,1)];
        [code ConvEncNewState] = convenc(msg,trel,[1 1 0 1 1 0],state); % Encode the message.
        code=code(1:end-s);
    elseif strcmp(coderate, '5/6') == 1
         s=10-rem(size(msg,1),10);
         msg=[msg;zeros(s,1)];
        [code ConvEncNewState] = convenc(msg,trel,[1 1 0 1 1 0 0 1 1 0],state); % Encode the message.
        code=code(1:end-(s));
    elseif strcmp(coderate, '7/8') == 1
        s=14-rem(size(msg,1),14);
        msg=[msg;zeros(s,1)];
        [code ConvEncNewState] = convenc(msg,trel,[1 1 0 1 0 1 0 1 1 0 0 1 1 0],state); % Encode the message.
        code=code(1:end-s);
    end        
end

Contact us