📄 main.asv
字号:
%主函数:输入为信噪比snr_in_dB,产生p1,p2
function [p1,p2]=main(snr_in_dB)
E=1;
G=[1 1 1 1 0 0 1;1 0 1 1 0 1 1];
snr=10^(snr_in_dB/10);
sgma=sqrt((E/snr)/2);%噪声方差
N=60;%桢个数
input=round(rand(1,N*102));%信息序列
u1=2*input-1;
u1=sign(u1+sgma*randn(size(u1))+eps);
u1=(u1+1)/2;
p1=(length(find(input~=u1)))/length(input);%没有经过信道编译码的误码率
%信道编码
for n=0:(N-1)
%CRC编码
encode=CrcEncode(input([1:102]+n*102));
code(1:114)=encode(1:114);
% code(115:120)=[0,0,0,0,0,0];
%out_en=T_SCH_EX_EN(input([1:25]+n*25));
%内编码
in_en=viterbi_encoder1(G,code);%卷积码编码
%in_en=SCH_IN_EN(out_en);
%交织编码
inter_en=interleaver(in_en)
%合成桢
u([1:240]+n*240)=inter_en;
end;
%经信道加高斯燥声
u=2*u-1;
u=sign(u+sgma*randn(size(u))+eps);
u=(u+1)/2;
%信道译码
for n=0:(N-1)
%分离桢
de=u([1:240]+n*240);
%解交织
inter_out=uninterleaver(de);
%内编码解码
[in_de, bestmetric] = VitDec(G, inter_out, 1);%卷积码译码
%in_de=SCH_IN_DE(de);
%去掉CRC编码的12bit
decode(1:102)=in_de(1:102);
%[cc,output]=cyc_sch_decoder(in_de);
%桢合成
receive([1:102]+n*102)=decode;
end;
p2=(length(find(input~=receive)))/length(input);%经过信道编译码的误码率
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -