• 大小: 2KB
    文件类型: .m
    金币: 2
    下载: 1 次
    发布日期: 2021-05-29
  • 语言: Matlab
  • 标签: 信道容量  

资源简介

用MATLAB编写信道容量程序%信道容量C计算的Matlab程序 clc;clear all; N = input('输入信源符号X的个数N='); M = input('输出信源符号Y的个数M='); p_yx=zeros(N,M); %程序设计需要信道矩阵初始化为零 fprintf('输入信道矩阵概率\n') for i=1:N for j=1:M p_yx(i,j)=input('p_yx=');%输入信道矩阵概率 if p_yx(i)<0 error('不符合概率分布') end end end

资源截图

代码片段和文件信息

%信道容量C计算的Matlab程序
clc;clear all;
N = input(‘输入信源符号X的个数N=‘); 
M = input(‘输出信源符号Y的个数M=‘); 
p_yx=zeros(NM);   %程序设计需要信道矩阵初始化为零
fprintf(‘输入信道矩阵概率\n‘)
for i=1:N
     for j=1:M
     p_yx(ij)=input(‘p_yx=‘);%输入信道矩阵概率
     if p_yx(i)<0
     error(‘不符合概率分布‘)
     end
     end
end
for i=1:N   %各行概率累加求和
     s(i)=0;
     for j=1:M
         s(i)=s(i)+p_yx(ij);
     end
end
for i=1:N     %判断是否符合概率分布
if (s(i)<=0.999999||s(i)>=1.000001)
   error(‘不符合概率分布‘)
end
end
b=input(‘输入迭代精度:‘);%输入迭代精度
for i=1:N
     p(i)=1.0/N;   %取初始概率为均匀分布
end
for j=1:M   %计算q(j)
     q(j)=0;
   for i=1:N
       q(j)=q(j)+p(i)*p_yx(ij);
   end
end        
for i=1:N     %计算a(i)
     d(i)=0;
     for j=1:M
         if(p_yx(ij)==0)
           d(i)=d(i)+0;
         else
         d(i)=d(i)+p_yx(ij)*log(p_yx(ij)/q(j));
       end

评论

共有 条评论