📄 smldpe55_cnv.m
字号:
function [p]=smldPe55_cnv(snr_in_dB)
%smldPe55_cnv.m 二进制双极性(2,1,3)卷积码通信系统的蒙特卡罗仿真函数
%snr_in_dB 信噪比
%p 误码率
E=1;
SNR=exp(snr_in_dB*log(10)/10);%Eb/N0
sgma=E/sqrt(2*SNR);
N=16;
loop=10^5/N;
Ns=N*loop; %仿真序列长度10^5,运行时间约5分钟
dsource=zeros(1,N);
G=[1 0 1 1;1 1 1 1], %(2,1,3)卷积码编码矩阵
k=1,
output_cnv_encd=cnv_encd(G,k,dsource);
channel_output=zeros(1,length(output_cnv_encd));
[decoder_output,survivor_state,cumulated_metric]=viterbi(G,k,channel_output);
numoferr_cnv=0;
for j=1:loop
for i=1:N
temp=rand;
if (temp<0.5)
dsource(i)=0;
else
dsource(i)=1;
end
end
%length(dsource)
output_cnv_encd=cnv_encd(G,k,dsource);
%length(output_cnv_encd)
for i=1:length(output_cnv_encd)
if(output_cnv_encd(i)==0)
r=-E+gngauss(sgma);
else
r=E+gngauss(sgma);
end
if (r<0)
channel_output(i)=0;
else
channel_output(i)=1;
end
end
[decoder_output,survivor_state,cumulated_metric]=viterbi(G,k,channel_output);
%length(decoder_output),pause
for i=1:length(dsource)
if(decoder_output(i)~=dsource(i))
numoferr_cnv=numoferr_cnv+1;
end
end
end
numoferr_cnv,
p=numoferr_cnv/Ns;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -