2017-01-06 1 views
0

J'ai une matrice m et trace un histogramme de la troisième colonne. Je recherche le pic dans les 100 premiers bacs et obtiens la fréquence a et l'index du bac est b. Maintenant, j'ai besoin des bords de la poubelle avec l'index b. Comment puis-je les obtenir?Obtient les bords de la corbeille à partir d'un histogramme par index du corbeille

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

Utilisez les sorties de 'histcounts', ou' histo.BinEdges'. –

+0

Merci! : D Lorsque j'écris 'c = histo.BinEdges (b)' je récupère une valeur. Est-ce le binEdge gauche ou droit ou dans mon cas le bord inférieur ou supérieur? – Chaostante

+1

Ne demandez pas - essayez-le vous-même ... :) (indice: le vecteur 'BinEdges' est plus long de 1 que les' valeurs ') –

Répondre

1

Je peux penser à deux façons simples de le faire:

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

Si vous avez besoin d'une explication pour les « trucs » - s'il vous plaît dire.

+0

Merci beaucoup :) – Chaostante

+0

@Chaostante De rien! –