信息论霍夫曼香农费诺编码.docx

上传人:b****7 文档编号:11085877 上传时间:2023-02-25 格式:DOCX 页数:9 大小:79.39KB
下载 相关 举报
信息论霍夫曼香农费诺编码.docx_第1页
第1页 / 共9页
信息论霍夫曼香农费诺编码.docx_第2页
第2页 / 共9页
信息论霍夫曼香农费诺编码.docx_第3页
第3页 / 共9页
信息论霍夫曼香农费诺编码.docx_第4页
第4页 / 共9页
信息论霍夫曼香农费诺编码.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

信息论霍夫曼香农费诺编码.docx

《信息论霍夫曼香农费诺编码.docx》由会员分享,可在线阅读,更多相关《信息论霍夫曼香农费诺编码.docx(9页珍藏版)》请在冰豆网上搜索。

信息论霍夫曼香农费诺编码.docx

信息论霍夫曼香农费诺编码

信息论霍夫曼、香农-费诺编码

 

信息论第二次作业

——数据压缩算法的实现

 

班别:

1307011班

学号:

130********

姓名:

黄丹丹

 

一、实验目的:

通过该实验,利用香农编码-费诺编码和霍夫曼编码实现图像数据压缩。

matlab7.1

四、实验内容

1、对于给定的信源的概率分布,用香农-费诺编码实现图像压缩

2、对于给定的信源的概率分布,用霍夫曼编码实现图像压缩

五、实验过程

1.香农-费诺编码

编码1

functionc=shannon(p)

%p=[0.20.150.150.10.10.10.10.1]

%shannon(p)

[p,index]=sort(p)

p=fliplr(p)

n=length(p)

pa=0

fori=2:

n

pa(i)=pa(i-1)+p(i-1)

end

k=ceil(-log2(p))

c=cell(1,n)

fori=1:

n

c{i}=”

tmp=pa(i)

forj=1:

k(i)

tmp=tmp*2

iftmp>=1

tmp=tmp-1

c{i(j)='1'

else

c{i}(j)='0'

end

end

end

c=fliplr(c)

c(index)=c  

 

编码2

clc;

clear;

A=[0.4,0.3,0.1,0.09,0.07,0.04];

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)

 

2. 霍夫曼编码

function c=huffman(p) 

n=size(p,2)  

ifn==1  

 c=cell(1,1)      

c{1}=''      

return      

end 

[p1,i1]=min(p)  

index=[(1:

i1-1),(i1+1:

n)]  

p=p(index)  

n=n-1  

[p2,i2]=min(p)  

index2=[(1:

i2-1),(i2+1:

n)]  

p=p(index2); 

i2=index(i2)   

index=index(index2)   

p(n)=p1+p2   

c=huffman(p)   

c{n+1}=strcat(c{n},'1')   

c{n}=strcat(c{n},'0')   

index=[index,i1,i2]  

c(index)=c 

 

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

当前位置:首页 > 高等教育 > 工学

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

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