📄 facchpe.m
字号:
%全信道误码率,误帧率
function [bit_err_rate,frame_err_rate]=facchPe(snr_in_dB,N,burst)
%噪声功率
E=1;
snr=10^(snr_in_dB/10);
sgma=sqrt((E/snr)/2);%噪声功率
err_bit=0;
err_frame=0;
G=[1 0 0 1 1;1 1 0 1 1];
k=1;
for i=1:N
%信息序列
signal=round(rand(1,184));
%外编码
signal1=fire_sys_encode(signal);
fire_enc=[signal1,0,0,0,0];%加4个0作为尾比特
%内编码
signal2=viterbi_encoder(G,k,fire_enc);
viterbi_enc=signal2(1:456);%去掉后面8个0比特
%交织重排
C=INTER_WEAVE_8(viterbi_enc);
%%%%%%%%%%%%%%%%%%%%%%%%
%经信道加高斯噪声
C=2*C-1;
C=sign(C+sgma*randn(size(C))+eps);
C=(C+1)/2;
%加突发噪声
%经信道加突发干扰
%N_Interval=200; %突发间隔,改变其值会影响误码率曲线
%Noise=BurstNoise(N_Interval,burst,length(C));
%C=rem(C+Noise,2);
%%%%%%%%%%%%%%%%%%%%%%%%
%反交织重排
D=COUNTER_WEAVE_8(C);
%内解码
viterbi_out=viterbi_decoder(G,k,D);
%外解码
[fire_dec,sysinfo]=fire_sys_decode(viterbi_out);
err_num=(length(find(signal~=fire_dec))); %计算每次出错的长度
err_bit=err_bit+err_num; %累积出错长度
err_frame=(length(find(err_num~=0)))+err_frame;%累积出错的帧数
end;
bit_err_rate=err_bit/(N*184); %误比特率
frame_err_rate=err_frame/N; %误帧率
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -