2017-01-06 15 views
0

У меня есть матрица m и постройте гистограмму третьего столбца. Я ищу пик в первых 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)' Я получаю одно значение обратно. Это левый или правый binEdge или в моем случае нижний или верхний край? – Chaostante

+1

Не спрашивайте - попробуйте сами ... :) (подсказка: вектор «BinEdges» длиннее на 1, чем «Значения») –

ответ

1

Я могу думать о двух простых способов сделать это:

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 Добро пожаловать! –