如果我有一组数据Y和一组以X为中心的存储箱,我可以使用HIST命令来查找每个存储箱中每个Y的数量。

N = hist(Y,X)

我想知道的是,如果有一个内置函数可以告诉我每个Y进入哪个bin,那么
[N,I] = histMod(Y,X)

这意味着Y(I==1)将返回bin 1中的所有Y,等等。
我知道如何编写这个函数,所以我只想知道是否已经有一个内置的MATLAB来实现这个功能。

最佳答案

相关函数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]);

如果Nc==N,则在末尾加上一个额外的空bin(因为我假设Y中没有值与inf匹配)。
doc histc

07-26 03:38