📄 code_interleaver_decoder.m
字号:
%%%%%%%%%编码%%%%%%%%%%%%%%%%%%
G= poly2trellis([3],[7 5]);%生成trellis结构
L=[1 0 1 1 1];%待编码的信息
C=convenc(L,G);%编码
%%%%%%%%结束%%%%%%%%%%%%%%%%%%%%
A=[];B=[];B_e=[];%初始化
%%%%%%%交织%%%%%%%%%%%%%%%%%%%%
D=10;% 交织深度
for x=1:D %%%%%%%10个码字交织
A(x,:)=C;%形成交织深度为D的交织矩阵
end
B=A'; %%%%%%%交织-交织器为10X10
error=[1 1 1 1 1 0 0 0 0 0];%未使用交织的加错
C_t=mod(C+error,2);%未交织但是有5个错
error2=[1 1 1 1 1 1 1 1 1 1];%加交织的10个错误模式,所有错误在第一行,即为长连错。
B(1,:)=mod(B(1,:)+error2,2); %第一行加错——模2求和
B_e=B;
%%%%%%%%%%%%%viterbi译码%%%%%%%%%%%%%
C_out1=vitdec(C,G,2,'trunc','hard');%未交织且没有加错时
C_out2=vitdec(C_t,G,2,'trunc','hard');%未交织加5个错时
[number1,r1]=biterr(C_out1,L);%number1没有加错时,译码后的错误个数统计,ratio1为误码率
[number2,r2]=biterr(C_out2,L);%number2未交织加5个错时,译码后的错误个数统计,ratio2为误码率
A_e=B_e'; %解交织,此时第一行共加了10错误
for y=1:10
C_e2(y,:)=vitdec(A_e(y,:),G,2,'trunc','hard');%对每个接收码字进行viterbi译码,然后构成一个10X10的码字矩阵
end
r3=0;
[number3,ratio3]=biterr(C_e2,L);
for d=1:D% D为交织深度
r3=r3+ratio3(d); %D个码字的误码率之和
end
r3=r3/D;%归一化
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -