璀璨人生57
發(fā)布時間:2017-01-14 來源: 人生感悟 點擊:
璀璨人生57篇一:北郵信息論附加題
信息論附加題(2)
一、 實驗?zāi)康募耙?/p>
選擇一定長度的英文文本,去除標點符號,保留空格,不區(qū)分大小寫。 要求:
(1) 不考慮符號間的依賴關(guān)系,統(tǒng)計每個符號出現(xiàn)的頻率,計算獨立信源熵H(X)。
(2) 考慮每個符號與前一個符號的依賴關(guān)系,計算一階馬氏源熵H(X2|X1)。
(3) 比較H(X)和H(X2|X1),對結(jié)果進行討論。
(4) 把仿真結(jié)果與《信息論基礎(chǔ)》57 頁的結(jié)果進行比較,并進行討論。
二、 實驗步驟
1. 導(dǎo)入一段英文樣本文件(《我的璀璨人生》,文本見附件;
2. 統(tǒng)計這段文本中英文字母(不區(qū)分大小寫)和空格出現(xiàn)的個數(shù),以及所有字符的個數(shù),進而得到各個字母出現(xiàn)的概率p(x);
3. 利用公式:H(X)=-Σp(x)log p(x) ,計算樣本的熵H(X);
4. 統(tǒng)計文本中相鄰兩個字符出現(xiàn)的概率p(xy),通過計算邊緣概率分布可得p(x),然后利用公式p(y|x)=p(xy)/p(x)條件分布概率p(y|x);
5. 利用公式:
計算得到樣本的一階馬氏源熵
三、 實驗結(jié)果及討論
(一) 實驗結(jié)果:
獨立信源熵:H1=4.0483比特/符號
一階馬氏源熵:H2=3.3348比特/符號
(二) 討論:
1.比較H(X)和H(X2|X1),對結(jié)果進行討論
(1)考慮到英文不同字母和空格的實際出現(xiàn)概率后,英文信源的信息熵H1(X)要比把字母和空格視為等概率出現(xiàn)時的信息熵要小一些。也即在考慮到英文字母和空格的實際出現(xiàn)概率后,英文信源的平均不確定性,比把字母和空格視為等概率出現(xiàn)時英文信源的平均不確定性小一些。
(2)對比H(X)和H(X2|X1),可以看到,在考慮到前后兩個字符間的依賴關(guān)系即將英文信源視為一階馬氏源后,信源熵進一步減小,即英文信源的平均不確定性進一步減小了。
2.把仿真結(jié)果與《信息論基礎(chǔ)》57 頁的結(jié)果進行比較,并進行討論。
課本上的H1=4.03比特/符號,H2=3.32比特/
符號,此次實驗進行計
算的結(jié)果為H1=4.0483比特/符號,H2=3.3348比特/符號,均十分接近書本上的結(jié)果,只是稍微略大一些。原因是使用的樣本文件中文本字符個數(shù)有限,統(tǒng)計的概率并未達到理想的效果。此外,由于在實際處理中,我將各個標點符號和回車符號都替換成了空格鍵,也對結(jié)果造成了一定的影響。
四、 MATLAB源代碼
fid=fopen('f:\text.txt','r');
text1=fscanf(fid,'%c');%讀出文件
text=strrep(text1,char(0),char(32));
% for i=0:31
% text=strrep(text,char(i),char(32));
% end
for i=33:64
text=strrep(text,char(i),char(32));
end
for i=91:96
text=strrep(text,char(i),char(32));
end
for i=123:127
text=strrep(text,char(i),char(32));
end
%%%%%%%%%%%%%%以上為對文本進行優(yōu)化處理%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%計算獨立信源熵?%%%%%%%%%%%%%%
str=strrep(text1,b,c);
M=size(text);
row=M(1,1);
line=M(1,2);
N=zeros(1,27);%存儲每個符號出現(xiàn)的次數(shù)
for i=1:row
for j=1:line
if double(text(i,j))>96&&double(text(i,j))<=122
N(1,double(text(i,j))-96)=N(1,double(text(i,j))-96)+1; elseif double(text(i,j))>64&&double(text(i,j))<=90
N(1,double(text(i,j))-64)=N(1,double(text(i,j))-64)+1; elseif double(text(i,j))==32
N(1,27)=N(1,27)+1;
end
end
end
P=zeros(1,27);%存儲所有符號的概率
Log=zeros(1,27);
total=sum(N,2);%存儲、計算所有的有效字符
for i=1:27
P(1,i)=N(1,i)/total(1,1);%統(tǒng)計所有的字符的概率
Log(1,i)=P(1,i)*log2(1/P(1,i));
end
H=sum(Log,2)
%%%%%%%%%計算一階馬氏源熵%%%%%%%%%%%%%%%
J=zeros(27,27);%統(tǒng)計聯(lián)合個數(shù)
for i=1:row
for j=2:line
if double(text(i,j))>96&&double(text(i,j))<=122
if double(text(i,j-1))>96&&double(text(i,j-1))<=122
J(double(text(i,j-1))-96,double(text(i,j)-96))=J(double(text(i,j-1))-96,double(text(i,j)-96))+1;
elseif double(text(i,j-1))>64&&double(text(i,j-1))<=90
J(double(text(i,j-1))-64,double(text(i,j)-96))=J(double(text(i,j-1))-64,double(text(i,j)-96))+1;
elseif double(text(i,j-1))==32
J(27,double(text(i,j)-96))=J(27,double(text(i,j)-96))+1;
end
elseif double(text(i,j))>64&&double(text(i,j))<=90
if double(text(i,j-1))>96&&double(text(i,j-1))<=122
J(double(text(i,j-1))-96,double(text(i,j)-64))=J(double(text(i,j-1))-96,double(text(i,j)-64))+1;
elseif double(text(i,j-1))>64&&double(text(i,j-1))<=90
J(double(text(i,j-1))-64,double(text(i,j)-64))=J(double(text(i,j-1))-(轉(zhuǎn) 載 于:www.zuancaijixie.com 蒲 公英文 摘:璀璨人生57)64,double(text(i,j)-64))+1;
elseif double(text(i,j-1))==32
J(27,double(text(i,j)-64))=J(27,double(text(i,j)-64))+1;
end
elseif double(text(i,j))==32||double(text(i,j))==13
if double(text(i,j-1))>96&&double(text(i,j-1))<=122
J(double(text(i,j-1))-96,27)=J(double(text(i,j-1))-96,27)+1; elseif double(text(i,j-1))>64&&double(text(i,j-1))<=90
J(double(text(i,j-1))-64,27)=J(double(text(i,j-1))-64,27)+1; elseif double(text(i,j-1))==32
J(27,27)=J(27,27)+1;
end
end
end
end
xsum=sum(J,2);
t=sum(xsum);
JP=zeros(27,27);%聯(lián)合概率密度
P2=zeros(27,27);%條件概率分布
for i=1:27
for j=1:27
JP(i,j)=J(i,j)/t;
P2(i,j)=JP(i,j)/P(1,i);
end
end
%計算H(Y|x)
H_Y_x=zeros(27,1);
for i=1:27
for j=1:27
if(P2(i,j)~=0)
H_Y_x(i,1)=H_Y_x(i,1)+P2(i,j)*log2(1/P2(i,j));
end
end
end
%計算H(X2|X1
H2=P*H_Y_x
五、 實驗總結(jié)和心得體會
通過本次MATLAB仿真實驗,我學會了對一段文本信源進行信源熵和一階馬氏源熵的計算,可見,當考慮到文本字符的依賴性時,可以大大縮小信源熵值,在實際應(yīng)用中即可通過這種方法,壓縮傳輸文字,很大地提高傳輸和存儲英文消息的效率。
由于之前并未使用過MATLAB進行編程和仿真,對MATLAB中的一些函數(shù)不夠了解,所有在此次作業(yè)的代碼中,很大程度上借鑒了C++中的語言風格和思想,使得代碼看上去有些臃腫繁復(fù)。若能熟悉使用一些矩陣運算的函數(shù),代碼能夠變得更加簡練。
璀璨人生57篇二:年金險比較
年金險比較
1
2
3
4
5
璀璨人生57篇三:熱播電視連續(xù)劇系列匯編
相關(guān)熱詞搜索:璀璨 人生 璀璨人生57大結(jié)局預(yù)告 璀璨人生57全集
熱點文章閱讀