?? smldpe55_cnv.m
字號(hào):
function [p]=smldPe55_cnv(snr_in_dB)
%smldPe55_cnv.m 二進(jìn)制雙極性(2,1,3)卷積碼通信系統(tǒng)的蒙特卡羅仿真函數(shù)
%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,運(yùn)行時(shí)間約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;
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -