Мне нужно найти индекс максимального элемента в каждой строке в матрице в MATLAB. Что-то вродеИндекс элемента максимального значения в каждой строке (последний индекс)
[~,indexes] = maxValues = max(p_y_x,[],2);
отлично работает, но мне нужно, чтобы получить последний индекс (если есть больше чем один с максимальным значением). Теперь у меня есть что-то вроде этого:
N=size(p_y_x,1);
maxValues = max(p_y_x,[],2);
indexes=zeros(1,N);
for n=1:N
indexes(n)=find(p_y_x(n,:)==maxValues(n),1,'last');
end
Что является сложным и не очень эффективно (из цикла for
).
Я сомневаюсь в том, что тривиальное должно быть сделано таким образом. Существует ли более оптимальное решение?
Обратите внимание, что это самый быстрый вариант, безусловно. По моим таймингам Мой ответ так же быстро, как оригинал (на удивление достаточно), @ Divakar's на 35% быстрее, это на 70% быстрее. – Adriaan
@Adriaan Спасибо за время! –
Да, это действительно самое быстрое решение. – michalsol