- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
武汉理工大学信息理论编码实验
实验1
1.p=0.00001:0.001:0.99999;
h=-p.*log2(p)-(1-p).*log2(1-p);
plot(p,h);
title(二进熵函数曲线);
ylabel(H(p,1-p))
2. p=linspace(eps,1-eps,100);
q=linspace(eps,1-eps,100);
[P,Q]=meshgrid(p,q);
P_Q=P+Q;
for n=1:100
for m=1:100
if P_Q(n,m)=1
Q(n,m)=nan;
end
end
end
H=-P.*log2(P)-Q.*log2(Q)-(1-P-Q).*log2(1-P-Q);
mesh(P,Q,H)
title(三维熵函数的图形)
3.function H=entropy(p)
%该函数用来计算包含任意多个符号的信源熵
%p为DMS的概率分布,行向量
if sum(p)~=1 %判断是否满足概率完备性
error(!!!不满足概率完备性,重新输入信源分布)
return
else
L=length(p) %得到信源符号的个数
H=0; %熵值初始化为零
for i=1:L
H=H-p(i)*log2(p(i)); %累加熵函数各个子项
end
end
3.[p,q]=meshgrid(0.000001:0.01:1,0.000001:0.01:1);
Hnoise=-p.*log2(p)-(1-p).*log2(1-p); % 噪声熵
x=(1-p).*q+p.*(1-q);
I=-x.*log2(x)-(1-x).*log2(1-x)-Hnoise;
mesh(p , q , I)
实验2
代码
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
for i=1:N %各行概率累加求和
s(i)=0;
for j=1:M
s(i)=s(i)+p_yx(i,j);
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(i,j);
end
end
for i=1:N %计算a(i)
d(i)=0;
for j=1:M
if(p_yx(i,j)==0)
d(i)=d(i)+0;
else
d(i)=d(i)+p_yx(i,j)*log(p_yx(i,j)/q(j));
end
end
a(i)=exp(d(i));
end
u=0;
for i=1:N %计算u
u=u+p(i)*a(i);
end
IL=log2(u); %计算IL
IU=log2(max(a));%计算IU
n=1;
while((IU-IL)=b) %迭代计算
for i=1:N
p(i)=p(i)*a(i)/u; %重新赋值p(i)
end
for j=1:M %计算q(j)
q(j)=0;
for i=1:N
q(j)=q(j)+p(i)*p_yx(i,j);
end
end
for i=1:N %计算a(i)
d(i)=0;
for j=1:M
if(p_yx(i,j)==0)
d(i)=d(i)+0;
文档评论(0)