⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smldpe55_cnv.m

📁 信道解码viterbi算法的matlab实现
💻 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 + -