计算离散信源熵、离散信道容量
1 实验任务和目的
实验任务:
(1)简要总结信源的熵、信道容量的物理意义,概念;
(2)写出离散信源熵、离散信道容量计算的基本步骤,画出实现离散信源
熵、离散信道容量计算的程序流程图;
(3)讨论信源的熵的大小与前后符号之间相关性的关系,讨论信道容量与
信源先验概率及信道转移概率的关系。
实验目的:
掌握信源的熵、信道容量的物理意义,概念;熟练掌握离散信源熵、离散信道
容量的计算方法步骤;利用Matlab编写离散信源熵、离散信道容量的计算程序;
验证程序的正确性。
2 实验过身上长猴子 程和结果
2.1
实验过程
1、简要总结信源的熵、信道容量的物理意义,概念。
信源熵的物理意义是指信源中的各个符号的平均不确定性;熵是信源符号的平均
信息量,是信源符号的平均不确定度。
信道容量 概念:在信道可以传输的基本前提下,对信源的一切可能的概率分布
而言,信道能够传输的最大(接收)熵速率称为信道容量。
意义:求出了某个信道的信道容量,也就找到了信源的最佳概率分布。从而指导
人们改造信源,使之最大可能地利用信道的传输能力。
2、写出离散信源熵、离散信道容量计算的基本步骤,画出实现离散信源熵、
离散信道容量计算的程序流程图;
离散信源熵的计算步骤:
q
1
HXElogpaloga
rii
rr
p(a)
i
i1
信道容量的计算步骤:
CIX;Ybit/符号
max
PX
1
输入
p(x)p(x)
ii
(0)
p(y/x)
ji
aexpp(y/x)ln
iji
j
p(x)p(y/x)
iji
p(x)a
ii
i
p(x)
i
p(x)a
ii
Cn1,nlnp(x)a
1ii
i
i
Cn1,nlnmaxa
2i
i
否
Cn1,nCn1,n
12
是
CCn1,n
1
结束
3、(1)讨论信源的熵的大小与前后符号之间相关性的关系,讨论信道容量与信源先验
概率及信道转移概率的关系。
信源的相关性是信源符号间的依赖程度的度量。由于交易合同 信源输出符号间的
依赖关系也就是 信源的相关性使信源的实际熵减小。信源输出符号间统
计约束关系越长,信源的实际熵越小。当信源输出符号间彼此不存在依赖关
系且为等概率分布时,信源的实际熵等于最大熵。
(2)信道容量与信源先验概率及信道转移概率的关系。
信道容量是信道的一个参数,反映了信道所能传输的最大信息量,其大
小与信源无关。对不同的输入概率分布,互信息一定存在最大值。我们将这
个最大值定义为信道的容量。一但转移概率矩阵最强狂兵txt 确定以后,信道容量也完全
确定了。尽管信道容量的定义涉及到输入概率分布,但信道容量的数值与输
入概率分布无关。我们将不同的输入概率分布称为试验信源,对不同的试验
信源,互信息也不同。其中必有一个试验信源使互信息达到最大。这个最大
值就是信道容量。
实验结果
计算离散信源熵:
2
计算离散信道容量:
3 实验总结和心得
通过本次的试验,让我加深了对信息论与编码这门课知识点的认识,学会
了怎么样去计算信源熵以及信道容量,怎样去把它具体实现出来。在此次实验
过程中,让我认识到了做实验之前预习是很重要的,通过查找资料可以解决一
些我们不能解决的问题的方法。还有就是不懂的问题及时问老师,能解决的问
题随堂解决。
4 附录(代码)
fprintf('输入信道矩阵概率n')
计算信道容量: for i=1:N
clc;clear all; for j=1:M
N = input('输入信源符号X的个数N='); p_yx(i,j)=input('p_yx=');%输入信道矩阵概率
M = input('输出信源符号Y的个数M='); if p_yx(i)<0
p_yx=zeros(N,M); %程序设计需要信道矩阵初 error('不符合概率分布')
始化为零 end
3
end for i=1:N %计算a(i)
end d(i)=0;
for i=1:N %各行概率累加求和 for j=1:M
s(i)=0; if(p_yx(i,j)==0)
for j=1:M d(i)=d(i)+0;
s(i)=什么叫沟通 s(i)+p_yx(i,j); el
end d(i)=d(i)+p_yx(i,j)乔丹高清壁纸 *log(p_yx(i,j)/q(j));
end end
for i=1:N %判断是否符合概率分布 end
if (s(i)<=0.999999||s(i)>=1.000001) a(i)=exp(d(i)); end u=0;
error('不符合概率分布') for i=1:N %计算u
end u=u+p(i)*a(i);
end end
b=input('输入迭代精度:');%输入迭代精 IL=log2(u); %计算IL
度 for i=1:N IU=log2(max(a));%计算IU n=n+1;
p(i)=1.0/N; %取初始概率为均匀分布 end
end fprintf('信道矩阵为:n'); disp(p_yx);
for j=1:M %计算q(j) fprintf('迭代次数n=%dn',n);
q(j)=0; fprintf('信道容量C=%f比特/符号',IL);
for i=1:N 计算离散信源熵:
q(j)=q(j)+p(i)*p_yx(i,j); %用MATLAB编程实现单符号离散无记忆信
end 源熵的计算
end function H = entropy(p)
for i=1:N %计算a(i) d(i)=0; %该函数用来计算包含任意多个符号的信源熵
for j=1:M (比特)
if(p_yx(i,j)==0) d(i)=d(i)+0; el %p为DMS数学教学论文 的概率分布,行向量
d(i)=d(i)+p_yx(i,j)*log(p_yx(i,j)/q(j)); 美国航母排水量 if sum(p)~=1 %判断是否满足概率完备
end 性 (~= 不等于的意思)
end 陈皮的药用价值及用途 error('!!!不满足概率完备性,请重新输
a(i)=抓药 exp(d(i)); end u=0; 入信源分布')
for i=1:N %计算u return;
u=u+p(i)*a(i); end el
IL=log2(u); %计算IL L = length(p) %得到信源符号的个数
IU=log2(max(a));%计算IU n=1; H=0; %熵值初始化为零
while((IU-IL)>=b) %迭代计算 for i=1:L
for i=1:N H=H-p(i)*log2(p(i)); %累加
p(i)=p(i)*a(i)/u; %重新赋值p(怎么玩滑板 i) 熵函数各个子项
end end
for j=1:M %计算q(j) end
q(j)=0; %sum(A):求数组A的元素之和
for i=1:N %length(X):求矢量X的长度
q(j)=q(j)+p(i)*p_yx(i,j); %log2(X):计算以2为底X的对数
end %error:显示错误信息
end
4
本文发布于:2023-04-22 16:10:14,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/fan/89/842965.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |