通过 bin 的索引从直方图中获取 bin 边缘
Get bin edges from a histogram by index of the bin
我有一个矩阵 m
并绘制了第三列的直方图。我在前 100 个 bin 中搜索峰值,得到的频率为 a
,bin 的索引为 b
。现在我需要索引为 b
的 bin 的边缘。我怎样才能得到它们?
nbins = 1000;
histo = histogram(m(:,3),nbins,'Orientation','horizontal');
[a,b] = max(histo.Values(1:100))
我可以想到两个简单的方法来做到这一点:
function q41505566
m = randn(10000,5);
nBins = 1000;
% Option 1: using histcounts:
[N,E] = histcounts(m(:,3),nBins);
disp(E(find(N(1:100) == max(N(1:100)),1,'first')+[0 1])); % find() returns the left bin edge
% Option 2: using BinEdges:
histo = histogram(m(:,3),nBins,'Orientation','horizontal');
[a,b] = max(histo.Values(1:100));
disp(histo.BinEdges(b:b+1));
如果您需要 "tricks" 的解释 - 请说明。
我有一个矩阵 m
并绘制了第三列的直方图。我在前 100 个 bin 中搜索峰值,得到的频率为 a
,bin 的索引为 b
。现在我需要索引为 b
的 bin 的边缘。我怎样才能得到它们?
nbins = 1000;
histo = histogram(m(:,3),nbins,'Orientation','horizontal');
[a,b] = max(histo.Values(1:100))
我可以想到两个简单的方法来做到这一点:
function q41505566
m = randn(10000,5);
nBins = 1000;
% Option 1: using histcounts:
[N,E] = histcounts(m(:,3),nBins);
disp(E(find(N(1:100) == max(N(1:100)),1,'first')+[0 1])); % find() returns the left bin edge
% Option 2: using BinEdges:
histo = histogram(m(:,3),nBins,'Orientation','horizontal');
[a,b] = max(histo.Values(1:100));
disp(histo.BinEdges(b:b+1));
如果您需要 "tricks" 的解释 - 请说明。