2017-01-06 8 views
0

私は行列mを持ち、3番目の列のヒストグラムをプロットします。最初の100ビンのピークを検索し、頻度をa、ビンのインデックスをbとします。今私はインデックスbとビンのエッジが必要です。どうすれば入手できますか?ヒストグラムからビンエッジをビンのインデックスで取得する

nbins = 1000; 
histo = histogram(m(:,3),nbins,'Orientation','horizontal'); 
[a,b] = max(histo.Values(1:100)) 
+1

'histcounts'または' histo.BinEdges'の出力を使用します。 –

+0

ありがとうございます! :D 'c = histo.BinEdges(b)'と書くと、値が1つ戻ってきます。これは、左または右のbinEdgeですか、私の場合は、下端または上端ですか? – Chaostante

+1

質問しないでください - 自分自身で試してみてください:)(ヒント: 'BinEdges'ベクトルは' Values'より1長いです) –

答えて

1

私はこれを行うには2つの簡単な方法を考えることができます。

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)); 

あなたは「トリック」についての説明が必要な場合は - そう言ってください。

+0

ありがとうございました:) – Chaostante

+0

@Chaostanteよろしくお願いします! –

関連する問題