2015-10-14 4 views
0

Для вычисления локальных максимумов 2D матрицы Y, я использую этотMATLAB localmax() возвращает индексы в 1D вектор

[~, indices]= localmax(Y); 

Но indices является 1D. Как преобразовать его обратно в 2D, чтобы получить доступ к соответствующему элементу в Y?

+1

На самом деле вам не нужно преобразовывать обратно в 2D. Вы можете использовать 'Y (индексы)' (линейная индексация) для доступа к этим элементам –

ответ

3

От the documentation for localmax:

Линейные индексы ненулевых значений lmaxima. Используйте ind2sub до , преобразуя линейные индексы в индексы строк и столбцов матрицы.

Например:

inputmatrix = ... 
    [3  2  5  3 
    4  6  3  2 
    4  4  7  4 
    4  6  2  2]; 


[~,indices] = localmax(inputmatrix,4,false); 
[I, J] = ind2sub(size(indices), indices); 

Edit: я должен уточнить, как хорошо. Как упоминает @LuisMendo в комментариях выше, вы можете получить доступ к элементам Y непосредственно с этими linear indices с помощью Y(indices).

Смежные вопросы