turboenc_1513.m

来自「turbo 码matlab编译码程序」· M 代码 · 共 61 行

M
61
字号
function y=TurboEnc_1513(x)
%1/2 rate turbo
global I
state=0;
register_num=3;
m=2^(register_num-1);
K=length(x);
for i=1:K
    [next_state,output]=nxt_stat1513(state,x(i));
    Parity_1(i)=output;
    state=next_state;
end
for i=K+1:K+register_num
    [next_state,output]=nxt_stat1513(state,0);
    if floor(next_state/m)==1
        x(i)=1;
        [next_state,output]=nxt_stat1513(state,1);
        Parity_1(i)=output;
        state=next_state;
    else
        x(i)=0;
        Parity_1(i)=output;
        state=next_state;
    end
end
% x is not original x
N=K+register_num;
Interleaver_x=Interleaver(x,I);
if state~=0
    fprintf('\n This programme is failure1\n\n');
else
    for i=1:N
        [next_state,output]=nxt_stat1513(state,Interleaver_x(i));
        Parity_2(i)=output;
        state=next_state;
    end
end
% puncturing
Parity_1=Parity_1(1:2:end);
Parity_2=Parity_2(2:2:end);
if length(Parity_1)>length(Parity_2)
    for i=1:length(Parity_2)                       
        Parity(2*i-1)=Parity_1(i);
        Parity(2*i)=Parity_2(i);
    end
    Parity(2*i+1)=Parity_1(length(Parity_1));
else
    for i=1:length(Parity_2)                       
        Parity(2*i-1)=Parity_1(i);
        Parity(2*i)=Parity_2(i);
    end

end
%
for i=1:N
    y(2*i-1)=x(i);
    y(2*i)=Parity(i);
end


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?