📄 turbo.asv
字号:
clc
clear
% This is the whole coding and decoding processing
rate=1/3;
K=1021;
m=3;
I=Sinterleaver(K+m);
Iteration=6;
Frame=20;
for SNR=0.5:0.1:0.
SNR_lin=10^(SNR/10);
sgma=1/sqrt(2*SNR_lin*rate);
CONS=-1/(2*(sgma^2));
fprintf('\n****************** SNR=%4.2f **********************\n',SNR);
for frame=1:Frame
%fprintf('\n****************** the frame=%d **********************\n',frame);
X_information=generaterandomdata(K);
[X_parity_1,X_parity_2,X_information]=encode1513(X_information,I);
C_information=X_information;
C_parity_1=X_parity_1;
C_parity_2=X_parity_2;
% BPSK
X_information=bpsk(X_information);
X_parity_1=bpsk(X_parity_1);
X_parity_2=bpsk(X_parity_2);
% add noise
for i=1:K+m
[gsrv1,gsrv2]=gngauss(0,sgma);
Y_system(i)=X_information(i)+gsrv1;
Y_parity_1(i)=X_parity_1(i)+gsrv2;
[gsrv1,gsrv2]=gngauss(0,sgma);
Y_parity_2(i)=X_parity_2(i)+gsrv1;
end
for i=1:K+m
Y_system_inter(i)=Y_system(I(i));
end
prior_information=zeros(1,K+m);
% iteration decoding
for Inter=1:Iteration
input_1=Y_system;
input_2=Y_parity_1;
%[decision_c,extrin_information]=map_decoder_1(input_1,input_2,CONS,prior_information);
[decision_c,extrin_information]=SISO_MAP_decoder_1(input_1,input_2,CONS,prior_information);
prior_information=extrin_information(I);
input_1=Y_system_inter;
input_2=Y_parity_2;
%[decision_c,extrin_information]=map_decoder_2(input_1,input_2,CONS,prior_information);
[decision_c,extrin_information]=SISO_MAP_decoder_2(input_1,input_2,CONS,prior_information);
decision_c(I)=decision_c;
bit_error(frame,Inter)=0;
for t=1:K
if decision_c(t)~=C_information(t)
bit_error(frame,Inter)=bit_error(frame,Inter)+1;
end
end
for i=1:K
prior_information(I(i))=extrin_information(i);
end
end
end
bit_error
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -