如果我有一组数据Y和一组在X为中心箱,我可以使用HIST命令查找多少每个Y都在每个区间。

N = hist(Y,X)

我想知道的是,如果有一个内置功能,可以告诉我,每个Y进入,这斌这样

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

将意味着Y(I == 1)将返回所有Y在箱1,等等。

我知道如何写这个功能,所以我只是想知道,如果是已经有一个内置的MATLAB中做这个工作。

有帮助吗?

解决方案

相关功能histc做到这一点,但它需要你定义的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

其他提示

如果一个满足用箱的边缘,而不是箱,

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

的工作原理。 Aaargh,MATLAB你的函数定义是非常不直观

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top