我有一個矩陣m
並繪製了第三列的直方圖。我搜索前100個分箱中的峯值,得到的頻率爲a
,分箱索引爲b
。現在我需要索引b
的垃圾箱邊緣。我怎樣才能得到它們?通過容器索引從直方圖獲取容器邊緣
nbins = 1000;
histo = histogram(m(:,3),nbins,'Orientation','horizontal');
[a,b] = max(histo.Values(1:100))
我有一個矩陣m
並繪製了第三列的直方圖。我搜索前100個分箱中的峯值,得到的頻率爲a
,分箱索引爲b
。現在我需要索引b
的垃圾箱邊緣。我怎樣才能得到它們?通過容器索引從直方圖獲取容器邊緣
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));
如果你需要的「招數」的解釋 - 請說出來。
非常感謝:) – Chaostante
@Chaostante不客氣! –
使用'histcounts'或'histo.BinEdges'的輸出。 –
謝謝! :D 當我寫'c = histo.BinEdges(b)'我得到一個值。這是左邊還是右邊的binEdge,或者在我的情況下,是下邊還是上邊? – Chaostante
不要問 - 自己試試...... :)(提示:BinEdges向量比'Values'長1) –