资源简介
对一般信道容量进行计算的简单程序,程序说明见注释
代码片段和文件信息
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
end
- 上一篇:s7-200程序电机正反转控制
- 下一篇:Matlab 龙格库塔解常微分方程组练习
评论
共有 条评论