4

如果我有一组数据 Y 和一组以 X 为中心的 bin,我可以使用 HIST 命令找出每个 bin 中有多少 Y。

N = hist(Y,X)

我想知道的是是否有一个内置函数可以告诉我每个 Y 进入哪个 bin,所以

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

这意味着 Y(I == 1) 将返回 bin 1 中的所有 Y 等。

我知道如何编写这个函数,所以我只是想知道 MATLAB 中是否已经有一个内置函数可以做到这一点。

4

2 回答 2

7

The related function histc does this, but it requires you to define the bin edges instead of bin centers.

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

Computing the edges given the bincenters is easy too. In a one liner:

N = hist(Y, X);

becomes

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

with Nc == N, plus one extra empty bin at the end (since I assume no value in Y matches inf). See doc histc.

于 2010-09-30T15:29:00.120 回答
2

如果对使用 bin 边缘而不是 bin 感到满意,

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

作品。Aaargh,MATLAB 你的函数定义太不直观了

于 2010-09-30T15:41:10.243 回答