📄 turbo_code.m
字号:
function turbo_code=turbo_code(data)
%进行turbo编码,data是输入数据turbo_code是编码后的turbo码
g=[1 0 1 1;1 1 0 1];
K=2752;
f1=143;
f2=172;
x1=data;
for i=0:K-1
j=rem((f1*i+f2*i*i),K);
x2(i+1)=x1(j+1);
end
%完成交织,K是交织长度,也是data的数据长度
for i=1:3
x1(K+i)=0;
x2(K+i)=0;
end
%将最后3位设为0,实现状态的归0
[n,k]=size(g);
m=k-1;
state1=zeros(1,3);
state2=zeros(1,3);
%初始状态设为0
for i=1:K+3
a_k1=rem(g(1,:)*[x1(i) state1]',2);
a_k2=rem(g(1,:)*[x2(i) state2]',2);
output1(i)=rem(g(2,:)*[a_k1 state1]',2);
output2(i)=rem(g(2,:)*[a_k2 state2]',2);
state1=[a_k1,state1(1:m-1)];
state2=[a_k2,state2(1:m-1)];
end
%实现编码,三路输出x1,output1,output2
n=1;
for i=1:K+3
y(n)=x1(i);
y(n+1)=output1(i);
y(n+2)=output2(i);
n=n+3;
end
%实现三路数据合并为一路串行数据
turbo_code=y;
%输出的数据为turbo码,作为返回值
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -