Индекс максимального и минимального значения в массиве
Как я могу найти индекс максимального элемента в массиве без цикла?
Например, если у меня есть:
a = [1 2 999 3];
Я хочу определить функцию indexMax, чтобы indexMax(a) возвращал 3.
Аналогично для определения indexMin.
Ответ 1
Как указано Evgenimax и min может возвращать argmax и argmin в качестве вторых аргументов.
Стоит отметить, что вы можете использовать эти функции по определенным параметрам:
A = rand(4); % 4x4 matrix
[ row_max row_argmax ] = max( A, [], 2 ); % max for each row - 2nd dimension
[ col_min col_argmin ] = min( A, [], 1 ); % min for each column - 1st dimension
Обратите внимание на пустой [] второй аргумент - крайне важно max( A, [], 2 ) не равно эквивалентно max( A, 2 ) (я оставлю его вам как небольшое упражнение, чтобы увидеть, что max( A, 2 )).
Аргмакс/argmin, возвращаемый из этих вызовов "вдоль измерения", представляет собой индексы строк/столбцов.
Ответ 2
Встроенная функция max имеет эту функцию, когда указаны два выходных аргумента: