2009-06-12 316 views
4

好吧,這裏是在MATLAB一些代碼:我使用histc錯誤,還是這個MATLAB的錯?

data = [1 1.5 2 3 4 4.5 5 6 7 7 7 0 0 0]; 

histc(data, [1:1:5]) 
histc(data, [1:1:5, inf]) 
histc(data, [-inf, 1:1:5]) 

其輸出以下:

ans = 2  1  1  2  1 
ans = 2  1  1  2  5  0 
ans = 3  2  1  1  2  1 

我的問題是,爲什麼MATLAB返回一個無用的0,當你在bin大小使用INF(來在這種情況下意味着> = 5)?

它不會總是零嗎?該幫助表示輸出將始終與倉大小相同,但在這種情況下,這不是一個糟糕的規格嗎?

回答

7

這實際上是HISTC的正確行爲。當您使用的語法:

n = histc(x,edges); 

然後,從文檔:

N(k)的計數值x(i)如邊緣(K) < = X(I)<邊緣第(k + 1)。最後一個箱子 計算與邊緣匹配的x的任何值(結束)。

因此,您給出的最後一個邊緣值返回恰好與匹配的數量。當inf是最後的邊緣值時,其計數爲0(即,在數據中沒有infs)。當5是最後一個邊緣值時,它在數據中完全匹配1個值。

相關問題