turbo_decode.m
来自「turbo码BPSK仿真」· M 代码 · 共 35 行
M
35 行
% rec ----接收序列,(加入了噪声的1 -1 序列)
% niter ---迭代次数
% method ---译码方案 0--logmapo
% 1--sova0
% 程序最终输出 x_decode_msg 为1 0 行向量
function x_decode_msg=turbo_decode(rec,g,Alpha,puncture,niter,method)
[n,k] = size(g);
m = k - 1;
L=length(rec);
yk=demultiplex(rec,Alpha,puncture);
L_e(1:1:L/(2+puncture))=zeros(1,L/(2+puncture));
for iter=1:niter
%解码器1
L_a(Alpha)=L_e;
if method==0
L_all=logmapo(yk(1,:),g,L_a,1);
else
L_all=sova0(yk(1,:),g,L_a,1);
end
L_e=L_all-2*yk(1,1:2:2*L/(2+puncture))-L_a;
%解码器2
L_a=L_e(Alpha);
if method==0
L_all=logmapo(yk(2,:),g,L_a,2);
else
L_all=sova0(yk(2,:),g,L_a,2);
end
L_e=L_all-2*yk(2,1:2:2*L/(2+puncture))-L_a;
end
x_decode_msg(Alpha)=(sign(L_all)+1)/2;
L=length(x_decode_msg);
tmp=x_decode_msg(1:1:L-m);
x_decode_msg=tmp;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?