matlab程式及C語言實現一維多元離散信源熵

2021-07-23 03:42:10 字數 844 閱讀 3399

最近在學習中,需要用到用matlab編寫方程來實現一維多元離散信源熵的計算,下面是相應的程式和改進程式:

format short

p = input('p = ') %input any discrete one-dimensional probability distribution

if sum(p) ~= 1,

error('p is error,sum is not 1') %check whether the sum of probability is 1

endzerop = find(p == 0);

if ~isempty(zerop), %remove the symbol of zero probability

p(zerop) = ;

endh = -sum(p.*log2(p)); %entropy formula

fprintf('entropy is:%d(bit/symbol)',h)

因為matlab本身存在精度問題,我對上述程式進行改進

改進程式

format short

p = input('intput any one-dimensional discrete probability distribution p = ')

if abs(sum(p) - 1) > 1e-8

error('p is eror,sum is not 1')

endzerop = find(p === 0);

if ~isempty(zerop),

p(zerop) = ;

endh = -sum(p.*log2(p));

disp('entropy

C語言實現關機程式

關機程式 include include include sleep的時間可以適當增長點 int main fflush stdout printf n printf 等了這麼久 n sleep 600 printf fflush stdout sleep 600 printf fflush std...

C語言實現matlab的butter函式

2019 04 18 更新 發現有反饋說不同的vs編譯器的complex.h有些許不同,故而自己寫了乙個用到複數的版本.增加乙個免complex.h的檔案,以下是原文 找了半天沒在網上找到關於matlab中butter的c函式,不太清楚是別的開源庫有還是怎麼樣,於是自己手翻了個,只寫了低通和帶通部分...

快速排序及C語言實現

快速排序演算法最壞複雜度很差,相當於插入排序,但是平均效能很好,甚至大多數時候優於堆排序和歸併排序,並且是一種內排序演算法,因此在實際中往往用的最多。快速排序的步驟 將陣列a p.r 劃分為兩個子陣列a p.q 1 和a q 1.r 使得前者的每個元素小於等於a q 後者的每個元素大於等於a q 然...