- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
结果图
信源熵实验程序:
clc; close all; clear;
linwidd=1
fontt=20
p0=0; pd=1; N=20
p=linspace(p0,pd,N);
I=-log2(p);
plot(p,I,k);
title(I=-log2(p) 函数图 );
xlabel(p);ylabel(I);
clc; close all; clear;
linwidd=1
fontt=20
p0=0; pd=1; N=20
p=linspace(p0,pd,N);
H=-p.*log2(p)-(1-p).*log2(1-p);
plot(p,H,k);
title(H=-p.*log2(p)-(1-p).*log2(1-p) 函数图 );
xlabel(p);ylabel(H);
信道容量实验程序:
clc; close all; clear;
linwidd=1
fontt=20
p0=0; pd=1; N=20
p=linspace(p0,pd,N);
r=4
c=log2(r)+(1-p).*log2(1-p)+p.*log2(p/(r-1));
plot(p,c,k);
title( 强对称信道容量数值模拟图 );
有噪信道编码 -- 费诺不等式程序: 结果图
clc;close
all
;clear;
r=3;p0=;pd=;N=2000;
p=linspace(p0,pd,N);
q=1-p;
H=-p.*log2(p)-q.*log2(q);
hold
on
HH=H+p.*log2(r-1)
title(
费诺不等式示意图 );box on
xlabel(
PE );
ylabel(
H(X/Y)
);
plot(p,HH,
k:
)
hold
on
hold
on
fill([p,1],[HH,0],[,,])
stem((r-1)/r,,
)
text,,
最大值 )
香农编码程序:
codelength=zeros(1,n);% 码长初始化
for ii=1:n
clc;clear all;close all;
fprintf([
第,num2str(ii),
个消息对应为 ]);
p=[
];
disp(c{ii});%显示码字
if sum(p)1||sum(p)1
codelength(ii)=length(c{ii});%
error(
输入概率不符合概率分布 )
end
end
n_average=sum(codelength.*p) %
平均码长
[p index]=sort(p,descend);
fprintf(
平均码长为 );disp(n_average);
n=length(p);
H=-sum(p.*log2(p));
pa=zeros(n,1);
fprintf(
信源熵 );disp(H);
for ii=2:n
x=H/(n_average.*log2(2))
pa(ii)=pa(ii-1)+p(ii-1);
fprintf(
编码效率 );disp(x);
end
figure
k=ceil(-log2(p));%
码字长度计算
h=stem(1:n,codelength);%
c=cell(1,n);%
生成元胞数组, 用来存不同长度的
axis([0 n+1 0 n+1]);
码字
set(h,MarkerFaceColor,blue,linewidth,2)
for ii=1:n
实验结果
结果图
c{ii}=;
第 1
个消息对应为 000
tmp=pa(ii);
第 2
个消息对应为 001
for jj=1:k(ii)
第 3
个消息对应为 011
tmp=tmp*2;
第 4
个消息对应为 100
if tmp=1
第 5
个消息对应为 101
tmp=tmp-1;
第 6
个消息对应为 1110
%c{ii}{jj}=1;
第 7
个消息对应为 1111110
c{ii}=[char(c{ii}),1];
n_average =
else
平均码长为
%c{ii}{jj}=0;
信源熵
c{ii}=[char(c{ii}),0];
x =
end
编码效率
end
费诺编码程序:
end
end
c(index)=c;%
换回原来的顺序
for rr=2:2:needgroupnum*2
编码效率 );disp(x);
index2=index_aftergroup(rr,:);
for ii=index2(1):index2(2)
c{ii}=[char(c{ii}),1];
end
end
flag=0;
index_p=[];
for rr=1:needgroupnum*2 indextmp=i
文档评论(0)