Code covered by the BSD License  

Highlights from
DVB-T

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

ConvDecoderHard(data, coderate, ConvDecInitMetric,ConvDecInitStates,ConvDecInitInputs)
function [decoded ConvDecNewMetric,ConvDecnewStates,ConvDecNewInputs] = ConvDecoderHard(data, coderate, ConvDecInitMetric,ConvDecInitStates,ConvDecInitInputs)

trel = poly2trellis(7, [171 133]); % Trellis with contraint length 7 and generator polynomials o'133' o'171'

if ConvDecInitStates == 0
    if strcmp(coderate, '1/2') == 1
        %s=3-rem(size(data,1),3);
        data=[data' zeros(200,1)']';        
        [decoded ConvDecNewMetric,ConvDecnewStates,ConvDecNewInputs] = vitdec(data,trel,40,'cont','hard'); % Decode.
        decoded=decoded(41:end,1);
    elseif strcmp(coderate, '2/3') == 1
        s=3-rem(size(data,1),3);
        data=[data' zeros(17*2*3+s,1)']';
        [decoded ConvDecNewMetric,ConvDecnewStates,ConvDecNewInputs] = vitdec(data,trel,40,'cont','hard',[1 1 0 1]);
        decoded=decoded(41:end,1);
    elseif strcmp(coderate, '3/4') == 1
        s=4-rem(size(data,1),4);
        data=[data' zeros(13*2*4+s,1)']';
        [decoded ConvDecNewMetric,ConvDecnewStates,ConvDecNewInputs] = vitdec(data,trel,40,'cont','hard', [1 1 0 1 1 0]);
        decoded=decoded(41:end,1);
    elseif strcmp(coderate, '5/6') == 1
        s=6-rem(size(data,1),6);
        data=[data' zeros(10*2*6+s,1)']';              
        [decoded ConvDecNewMetric,ConvDecnewStates,ConvDecNewInputs] = vitdec(data,trel,40,'cont','hard',[1 1 0 1 1 0 0 1 1 0]);
        decoded=decoded(41:end,1);
    elseif strcmp(coderate, '7/8') == 1
        s=8-rem(size(data,1),8);
        data=[data' zeros(7*2*8+s,1)']';             
        [decoded ConvDecNewMetric,ConvDecnewStates,ConvDecNewInputs] = vitdec(data,trel,40,'cont','hard', [1 1 0 1 0 1 0 1 1 0 0 1 1 0]);       
        decoded=decoded(41:end,1);
    end
else
    if strcmp(coderate, '1/2') == 1
        data=[data' zeros(200,1)']';
        [decoded ConvDecNewMetric,ConvDecnewStates,ConvDecNewInputs] = vitdec(data,trel,40,'cont','hard', ConvDecInitMetric,ConvDecInitStates,ConvDecInitInputs); % Decode.
        decoded=decoded(41:end,1);
    elseif strcmp(coderate, '2/3') == 1
        s=3-rem(size(data,1),3);
        data=[data' zeros(17*2*3+s,1)']';
        [decoded ConvDecNewMetric,ConvDecnewStates,ConvDecNewInputs] = vitdec(data,trel,40,'cont','hard', [1 1 0 1], ConvDecInitMetric,ConvDecInitStates,ConvDecInitInputs);        
        decoded=decoded(41:end,1);
    elseif strcmp(coderate, '3/4') == 1
        s=4-rem(size(data,1),4);
        data=[data' zeros(13*2*4+s,1)']';
        [decoded ConvDecNewMetric,ConvDecnewStates,ConvDecNewInputs] = vitdec(data,trel,40,'cont','hard', [1 1 0 1 1 0], ConvDecInitMetric,ConvDecInitStates,ConvDecInitInputs);
        decoded=decoded(41:end,1);
    elseif strcmp(coderate, '5/6') == 1
        s=6-rem(size(data,1),6);
        data=[data' zeros(10*2*6+s,1)']';        
        [decoded ConvDecNewMetric,ConvDecnewStates,ConvDecNewInputs] = vitdec(data,trel,40,'cont','hard', [1 1 0 1 1 0 0 1 1 0], ConvDecInitMetric,ConvDecInitStates,ConvDecInitInputs);
        decoded=decoded(41:end,1);
    elseif strcmp(coderate, '7/8') == 1
        s=8-rem(size(data,1),8);
        data=[data' zeros(2*7*8+s,1)']';
        [decoded ConvDecNewMetric,ConvDecnewStates,ConvDecNewInputs] = vitdec(data,trel,40,'cont','hard', [1 1 0 1 0 1 0 1 1 0 0 1 1 0], ConvDecInitMetric,ConvDecInitStates,ConvDecInitInputs);        
        decoded=decoded(41:end,1);
    end
end

Contact us