2010-09-30 82 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你的函数定义非常直观

相关问题