费诺编码的matlab实现.docx

上传人:b****0 文档编号:12820207 上传时间:2023-04-22 格式:DOCX 页数:9 大小:191.25KB
下载 相关 举报
费诺编码的matlab实现.docx_第1页
第1页 / 共9页
费诺编码的matlab实现.docx_第2页
第2页 / 共9页
费诺编码的matlab实现.docx_第3页
第3页 / 共9页
费诺编码的matlab实现.docx_第4页
第4页 / 共9页
费诺编码的matlab实现.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

费诺编码的matlab实现.docx

《费诺编码的matlab实现.docx》由会员分享,可在线阅读,更多相关《费诺编码的matlab实现.docx(9页珍藏版)》请在冰豆网上搜索。

费诺编码的matlab实现.docx

费诺编码的matlab实现

费诺编码的matlab实现

多媒体技术实验报告

 

学院:

城南学院

姓名:

学号:

指导老师:

尹波

时间:

2015年11月25日

 

教师评语:

成绩评阅教师日期

 

实验一:

费诺编码的matlab实现

1.实验目的

3、分解完了,码字出来了,码长也有了,即先有码字后有码长。

因此,费诺编码方法又称为子集分解法。

3.程序设计思路

4.程序代码

clc;

clear;

A=[0.19,0.18,0.17,0.16,0.13,0.10,0.06,0.01];

A=fliplr(sort(A));%降序排列

[m,n]=size(A);

fori=1:

n

B(i,1)=A(i);%生成B的第1列

end

%生成B第2列的元素

a=sum(B(:

1))/2;

fork=1:

n-1

ifabs(sum(B(1:

k,1))-a)<=abs(sum(B(1:

k+1,1))-a)

break;

end

end

fori=1:

n%生成B第2列的元素

ifi<=k

B(i,2)=0;

else

B(i,2)=1;

end

end

%生成第一次编码的结果

END=B(:

2)';

END=sym(END);

%生成第3列及以后几列的各元素

j=3;

while(j~=0)

p=1;

while(p<=n)

x=B(p,j-1);

forq=p:

n

ifx==-1

break;

else

ifB(q,j-1)==x

y=1;

continue;

else

y=0;

break;

end

end

end

ify==1

q=q+1;

end

ifq==p|q-p==1

B(p,j)=-1;

else

ifq-p==2

B(p,j)=0;

END(p)=[char(END(p)),'0'];

B(q-1,j)=1;

END(q-1)=[char(END(q-1)),'1'];

else

a=sum(B(p:

q-1,1))/2;

fork=p:

q-2

ifabs(sum(B(p:

k,1))-a)<=abs(sum(B(p:

k+1,1))-a);

break;

end

end

fori=p:

q-1

ifi<=k

B(i,j)=0;

END(i)=[char(END(i)),'0'];

else

B(i,j)=1;

END(i)=[char(END(i)),'1'];

end

end

end

end

p=q;

end

C=B(:

j);

D=find(C==-1);

[e,f]=size(D);

ife==n

j=0;

else

j=j+1;

end

end

B

A

END

fori=1:

n

[u,v]=size(char(END(i)));

L(i)=v;

end

avlen=sum(L.*A)

H=-sum(A.*log2(A));

disp(['ENtropyofthesource:

',num2str(H),'bits']);

5.实验结果

实验运行结果(以[0.19,0.18,0.17,0.16,0.13,0.10,0.06,0.01]为例)

计算:

信息熵是多少?

上述编码方法的平均码长是多少?

信息熵是2.7829;平均码长是2.88;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1