最近在學習中,需要用到用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 然...