《香農(nóng)費諾編碼的matlab實現(xiàn)》由會員分享,可在線閱讀,更多相關(guān)《香農(nóng)費諾編碼的matlab實現(xiàn)(6頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、信息論與編碼實驗
香農(nóng) -- 費諾編碼的 matlab 實現(xiàn)
學(xué)院:
班級:
姓名: 學(xué)號:
摘要:
用預(yù)先規(guī)定的方法將文字、數(shù)字或其他對象編成數(shù)碼,或?qū)⑿畔?、?shù) 據(jù)轉(zhuǎn)換成規(guī)定的電脈沖信號。編碼在電子計算機、電視、遙控和通訊等方 面廣泛使用。其中費諾編碼有廣泛的應(yīng)用 , 通過本次實驗 , 了解編碼的具體 過程,通過編程實現(xiàn)編碼 , 利用 matlab 實現(xiàn)費諾編碼。
關(guān)鍵字 : 信息論,費諾編碼, matlab
正文:
費諾編碼也是一種常見的信源編碼方法。 信源符號以概率遞減的次序排列進 來,將排列好的信源符號劃分為兩大組 , 使第組的概率和近于相同 ,并各賦于一
2、個 二元碼符號 ”0和””1”然.后 ,將每一大組的信源符號再分成兩組 ,使同一組的兩個小 組的概率和近于相同 , 并又分別賦予一個二元碼符號 .依次下去 ,直至每一個小組 只剩下一個信源符號為止 .這樣 ,信源符號所對應(yīng)的碼符號序列則為編得的碼字 .
香農(nóng) -- 費諾編碼的 matlab 實現(xiàn) 編碼如下: clc;
clear;
A=[0.4,0.3,0.1,0.09,0.07,0.04];
A=fliplr(sort(A));% 降序排列
[m,n]=size(A);
for i=1:n
B(i,1)=A(i);% 生成 B 的第 1 列
end
%生成 B 第 2 列的
3、元素 a=sum(B(:,1))/2;
for k=1:n-1
if abs(sum(B(1:k,1))-a)<=abs(sum(B(1:k+1,1))-a)
break;
end
end
for i=1:n% 生成 B 第 2 列的元素
if i<=k
B(i,2)=0;
else
B(i,2)=1;
end
end
%生成第一次編碼的結(jié)果
END=B(:,2)';
END=sym(END);
%生成第 3 列及以后幾列的各元素
j=3;
while (j~=0)
p=1;
while(p<=n)
x=B(p,j-1);
for q=p:n if
4、x==-1 break;
else if B(q,j-1)==x y=1; continue;
else y=0; break;
end
end
end
if y==1 q=q+1;
end
if q==p|q-p==1 B(p,j)=-1;
else
if q-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; for k=p:q-2
if abs(sum(B(p:k,1))-a)<=abs(sum(
5、B(p:k+1,1))-a); break;
end end for i=p:q-1 if i<=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);
if e==n j=0;
else
j=j+1;
end end B A END for i=1:n
[u,v]=size(char(END(i))); L(i)=v;
end
6、 avlen=sum(L.*A)
CoBBand ffindov
口問岡
Zilc Edit, Duhag Qoklop Window Ifclp
0.4COC
0
-1. 0030
-1.0009
? 1. 0000
-1.0000
-1.
0000
0.3COC
1.0300
0
-1.0003
-1. 0000
-1.0000
■1.
0000
0. 1C0C
1.0300
1.DODO
D
-1. 0000
-1.0000
-1.
0000
0.0700
1.0000
1.00 JO
1.000H
0
-1.00
7、00
-1.
0000
0.0400
1.0000
1. DOJO
1.0003
1. 0000
0
-1.
0000
0
1.0900
J. 0030
1.0009
1. 0000
1.0000
-1.
0000
A =
0.4000
0. JJUU
0. 1UJU
u.uruj
0. 04UU
0
END =
10, 110, )110, 11110, lllllj
avLcn =
1.7800
U. LI口 LII」 J
實驗總結(jié):