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