知道数据集中哪些元素进入直方图中最高的bin? MATLAB

时间:2016-11-26 05:38:10

标签: matlab

我想知道我的数据集中的哪些元素进入了双变量直方图中最高的bin,并且没有找到有关如何在线执行此操作的信息。我怀疑这是可能的,因为它非常有用。

我知道我可以做一些其他代码来帮助我找到它,但我想知道是否有一种简洁的方法来做到这一点。例如,我可以使用条件搜索数据集,这有助于我提取落入箱中的东西,但我对此不感兴趣。现在我写了

X = [Eavg,Estdev];
hist3(X,[15 15])

结果是15x15 bin双变量直方图。我想以非常简洁的方式提取最高箱中的元素。

我正在做一个统计力学(蒙特卡罗)模拟,如果它值得一提......

1 个答案:

答案 0 :(得分:1)

签名[N, CEN] = hist3(...返回bincounts和bin的中心。 Bin中心可以转换为bin边缘。然后可以使用边来查找哪些数据元素属于特定的bin。

 X =  randi([1 100],10,2);
[N, CEN] = hist3(X,[5 5]);
%find row and column of highest value of histogram
%since there may be multiple histogram values that 
%are equal to maximum value then we select the first one
[r,c]= find(N==max(N(:)),1);
%convert cell of bin centers to vector
R = [CEN{1}];
C = [CEN{2}];
%convert bin centers to edges 
%realmax used to include values that 
%are beyond the first and the last computed edges
ER = [-realmax R(1:end-1)+diff(R)/2 realmax];
EC = [-realmax C(1:end-1)+diff(C)/2 realmax];
%logical indices of rows where data fall into specified bin
IDX = X(:,1)>= ER(r) & X(:,1)< ER(r+1) & X(:,2)>= EC(c) & X(:,2)< EC(c+1)