📄 turbo_demo.m
字号:
% turbo code
poly_g1 = 5; % 1 0 1
poly_g2 = 7; % 1 1 1
MemLen = 2;
poly_g1 = 11; % 1 0 1 1
poly_g2 = 13; % 1 1 0 1
MemLen = 3;
puncture =0; % puncture = 0,rate=1/2;puncture = 1,no puncture rate =1/3
nIter = 6;
CodeRate = 1/(2+puncture);
[Inner_intl_table] = interleave(Packet_msg_L+MemLen, floor(sqrt((Packet_msg_L+MemLen)/2)));
[Outer_intl_table] = interleave(Packet_code_L*Packet_number,floor(sqrt((Packet_code_L*Packet_number)/2)))+1;
% Main loop
msg=randint(Packet_number,Packet_msg_L,2); % Random data
for np=1:Packet_number
%code_p(np,:)=turbo_encode(msg(np,:),1,length(Inner_intl_table),Inner_intl_table);
code_p(np,:) = TuEnc(msg(np,:), puncture, Inner_intl_table, poly_g1, poly_g2);
end
code=reshape(code_p,1,Packet_code_L*Packet_number);
code=code(Outer_intl_table);
for np=1:Packet_number
%[decoded LLR_all(np,:)]=logmapdec(Dem_signal_p(np,:),1,length(Inner_intl_table),max(nIter-n,3),Inner_intl_table);
[decoded, LLR_all(np,:)] = TuDecLogMapNew(Dem_signal_p(np,:), puncture, nIter, Inner_intl_table, 1, 1, poly_g1, poly_g2);
errors(n+1)=errors(n+1)+sum(abs(decoded(1:Packet_msg_L)-msg(np,1:Packet_msg_L)));
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -