Как найти максимум или минимум многомерной матрицы в MATLAB?
У меня есть 4D-массив измерений в MATLAB. Каждое измерение представляет собой другой параметр для измерения. Я хочу найти максимальное и минимальное значение и индекс (т.е. Какой параметр) каждого из них.
Какой лучший способ сделать это? Я полагаю, что могу взять максимум max max в каждом измерении, но это похоже на kludge.
Ответы
Ответ 1
Быстрый пример:
%# random 4 d array with different size in each dim
A = rand([3,3,3,5]);
%# finds the max of A and its position, when A is viewed as a 1D array
[max_val, position] = max(A(:));
%#transform the index in the 1D view to 4 indices, given the size of A
[i,j,k,l] = ind2sub(size(A),position);
Поиск минимума остается в виде упражнения:).
После комментария:
Если вы не знаете количество измерений вашего массива A и поэтому не можете написать часть "[i,j,k,l] =
", используйте этот трюк:
indices = cell(1,length(size(A)));
[indices{:}] = ind2sub(size(A),position);
Ответ 2
для двумерного массива, скажем, я
вы можете просто использовать функцию min/max дважды.
n раз для n мерного массива.
например: a=[2 3 4; 5 6 7; -2 7 87; 911 7 34];
for minimum: min(min(a,[],1))
-> the answer will be -2.
вы можете поместить параметр измерения в min/max равным 2. так как это вызывает функцию дважды, второй раз на векторе минимума/максимума размера u выбираем.
аналогично, вы можете сделать (max(max(a,[],1))
, чтобы узнать максимальный.