排序项目到MATLAB箱
题
如果我有一组数据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你的函数定义是非常不直观
不隶属于 StackOverflow