編程解決下列問題:1,編寫熵函數。2,輸出熵函數隨概率變化的曲線圖。

1.編寫一個熵函數,並對輸入參數進行檢驗,使之滿足概率空間並處理函數計算log0時的Nan問題。

編寫的函數代碼如下:

function H= entropy(p)
%entropy 信息熵函數
%輸入信源的概率空間,輸出信息熵
if p>=0
    if sum(p)==1
        p(find(p==0))=1;  %解決log0的Nan問題
        H=sum(sum(-p.*log2(p)));
    else
        fprintf('不滿足概率表空間!\n');
    end
else
    fprintf('不滿足概率空間!\n');
end
end

測試代碼如下:

p=[1/2 1/8 1/8 1/8 1/8 0];
H=entropy(p)
fprintf('信源熵爲%g\n',H);

運行後結果如圖所示:

2.編寫二元信源熵H(w)隨w變化的曲線圖

代碼如下:

syms  w Hw
XP=[0 1
    w 1-w];
Hw=sum(-XP(2,:).*log2(XP(2,:)));
ezplot(w,Hw,[0,1]);xlabel('w'),ylabel('Hw');
title('H(w)隨w變化曲線圖');

曲線圖如下圖所示:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章