2010-09-30 56 views
4

如果我有一組數據Y和一組以bin爲中心的分箱,我可以使用HIST命令來查找每個分箱中有多少個Y.在MATLAB中對物品進行分類

N = hist(Y,X) 

我想知道的是,如果有一個內置功能,可以告訴我,每個Y放在哪個箱子,所以

[N,I] = histMod(Y,X) 

將意味着Y(我== 1)會返回bin 1中的所有Y,等等。

我知道如何編寫這個函數,所以我只想知道在MATLAB中是否已經內置了一個這樣的函數。

回答

6

相關函數histc這樣做,但它需要您定義倉邊而不是倉中心。

Y = rand(1, 10); 
edges = .1:.1:1; 
[N, I] = histc(Y, edges); 

計算邊緣的邊緣也很容易。在一個班輪:

N = hist(Y, X); 

成爲

[Nc, Ic] = histc(Y, [-inf X(1:end-1) + diff(X)/2, inf]); 

擁有數控== N,加上在最後一個額外的空箱(因爲我假設Y中沒有值匹配INF)。 見doc histc

+0

實際上,如果bin中心不是均勻間隔的,那麼bin中心和bin邊之間的轉換並不重要。我認爲,MATLAB的hist命令實際上得到了這個錯誤。但是,這很好。謝謝。 – Marc 2010-09-30 18:10:17

2

如果一個人同意使用斌邊緣,而不是垃圾箱,

[N,bin] = histc(y,binedges) 

作品。 Aaargh,MATLAB你的函數定義非常直觀