如果我有一组数据Y和一组以X为中心的箱子,我可以使用HIST命令查找每个箱子中每个Y的数量。
N = hist(Y,X)
我想知道的是,如果有内置函数可以告诉我每个Y进入哪个bin,那么
[N,I] = histMod(Y,X)
意味着Y(I == 1)将返回bin 1中的所有Y,等等。
我知道如何编写这个函数,所以我只是想知道MATLAB中是否已经内置了这个函数。
答案 0 :(得分:7)
相关函数histc
执行此操作,但它要求您定义bin边缘而不是bin中心。
Y = rand(1, 10);
edges = .1:.1:1;
[N, I] = histc(Y, edges);
计算Bincenters的边缘也很容易。在一个班轮中:
N = hist(Y, X);
变为
[Nc, Ic] = histc(Y, [-inf X(1:end-1) + diff(X)/2, inf]);
Nc == N,最后加一个额外的空箱(因为我假设Y中没有值匹配inf)。
请参阅doc histc
。
答案 1 :(得分:2)
如果对使用bin边缘而不是bin来满意,
[N,bin] = histc(y,binedges)
的工作原理。 Aaargh,MATLAB你的函数定义是如此不直观