📄 decoder_pc.m
字号:
%%%%%%%%%%%% 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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -