decoder_pc.m
来自「本源码介绍了OFDM的基本原理的仿真」· M 代码 · 共 64 行
M
64 行
%%%%%%%%%%%% this is the program of punctured convolutional code decoder%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [decode1]=decoder(codedbit,R)
switch R,
case 1/3,
trel = poly2trellis(9,[557 663 711]);
tcode = -2*codedbit+1;
decode1 = vitdec(tcode,trel,40,'trunc','unquant');
case 1/2,
trel = poly2trellis(7,[171 133]); % Define trellis.
tcode = -2*codedbit+1;
decode1 = vitdec(tcode,trel,35,'trunc','unquant');
case 2/3,
trel = poly2trellis(7,[171 133]); % Define trellis.
tcode = -2*codedbit+1;
codedbit1=zeros(length(codedbit)*4/3,1);
codedbit1(1:4:end)=tcode(1:3:end);
codedbit1(2:4:end)=tcode(2:3:end);
codedbit1(3:4:end)=tcode(3:3:end);
decode1 = vitdec(codedbit1,trel,35,'trunc','unquant');
case 3/4,
trel = poly2trellis(7,[171 133]); % Define trellis.
tcode = -2*codedbit+1;
codedbit1=zeros(length(codedbit)*3/2,1);
codedbit1(1:3:end)=tcode(1:2:end);
codedbit1(2:3:end)=tcode(2:2:end);
decode1 = vitdec(codedbit1,trel,35,'trunc','unquant');
case 4/5,
trel = poly2trellis(7,[171 133]); % Define trellis.
tcode = -2*codedbit+1;
codedbit1=zeros(length(codedbit)*8/5,1);
codedbit1(1:8:end) = tcode(1:5:end); % Write actual data.
codedbit1(3:8:end) = tcode(2:5:end);
codedbit1(5:8:end) = tcode(3:5:end);
codedbit1(7:8:end) = tcode(4:5:end);
codedbit1(8:8:end) = tcode(5:5:end);
decode1 = vitdec(codedbit1,trel,40,'trunc','unquant');
case 4/9,
trel = poly2trellis(9,[557 663 711]);
tcode = -2*codedbit+1;
codedbit1=zeros(length(codedbit)*4/3,1);
codedbit1(1:4:end)=tcode(1:3:end);
codedbit1(2:4:end)=tcode(2:3:end);
codedbit1(3:4:end)=tcode(3:3:end);
decode1 = vitdec(codedbit1,trel,40,'trunc','unquant');
case 15/16,
trel = poly2trellis(7,[171 133]); % Define trellis.
tcode = -2*codedbit+1;
codedbit1=zeros(length(codedbit)*15/8,1);
codedbit1(1:15:end) = tcode(1:8:end);
codedbit1(3:15:end) = tcode(2:8:end);
codedbit1(5:15:end) = tcode(3:8:end);
codedbit1(7:15:end) = tcode(4:8:end);
codedbit1(9:15:end) = tcode(5:8:end);
codedbit1(11:15:end) = tcode(6:8:end);
codedbit1(13:15:end) = tcode(7:8:end);
codedbit1(15:15:end) = tcode(8:8:end);
decode1 = vitdec(codedbit1,trel,35,'trunc','unquant');
otherwise,
error('Unsupported Rate');
end
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?