Найдите индексы максимального и минимального значения матрицы в MATLAB

Опубликовано: 18 Февраля, 2023

Матрицы в MATLAB представляют собой двумерные массивы, которые хранят в основном числовые данные с разными индексами. Теперь, чтобы найти индексы максимального и минимального значений данной матрицы, MATLAB не предоставляет никаких прямых функций, однако мы можем сделать то же самое, используя две другие функции. Сначала мы найдем максимальное или минимальное значение данной матрицы, а затем найдем индексы этих двух значений. В этом сценарии MATLAB предлагает простые функции для выполнения предыдущих задач. В этой статье мы увидим, как сделать то же самое для магического квадрата.

Максимальное и минимальное значения в матрице:

Функции max() и min() находят максимальное и минимальное значения соответственно в массиве по заданному измерению. Результатом этих команд будет вектор-строка (по умолчанию), который будет иметь максимальные/минимальные значения каждого столбца в этом массиве/матрице. Затем мы можем снова применить функцию max()/min(), чтобы найти максимальные/минимальные значения из этого одномерного вектора.

Синтаксис:

To get row vectors with extreme values

max-row = max(matrix)

min-row = min(matrix)

To get extreme value from a given row vector of extreme values

max(max-row)

min(min-row)

Теперь давайте посмотрим то же самое в действии.

Максимальное значение:

Создадим магический квадрат 5х5 и найдем его максимальное значение, которое должно быть 25.

Пример 1:

Matlab




% MATLAB code
matrix = magic(5)
% Nesting the max command
% for finding maximum value
max_val = max(max(matrix))

Выход:

Минимальное значение:

Точно так же мы теперь найдем минимальное значение того же магического квадрата, которое должно быть равно 1.

Пример 2:

Matlab




% MATLAB code for find min_val
matrix = magic(5)
min_val = min(min(matrix))

Выход:

Нахождение индексов максимальных/минимальных значений в одном и том же магическом квадрате:

Теперь мы будем использовать функцию find() для получения индексов максимальных/минимальных значений.

Синтаксис:

max-index = find(matrix==max_val)

min-index = find(matrix==min_val)

Пример 3:

Matlab




% Finding Indices of Max/Min
% Values in the Same Magic Square
matrix = magic(5);
 
% Getting max and min values
min_val = min(min(matrix));
max_val = max(max(matrix));
 
% Getting indices of min and max values in (row, col)
[minx,miny] = find(matrix==min_val);
[maxx,maxy] = find(matrix==max_val);
 
% Displaying the indices
fprintf("minimum index")
disp([minx,miny])
fprintf("maximum index")
disp([maxx,maxy])

Выход:

Поиск максимальных/минимальных значений с несколькими вхождениями:

Мы также можем найти индексы всех вхождений максимального/минимального значения матрицы аналогичным образом. См. следующий код, чтобы понять то же самое.

Пример 4:

Matlab




% Finding Max/Min Values With Multiple Occurrences
matrix = [1 2 3;
        1 23 4;
        2 23 5]
 
%Getting values
min_val = min(min(matrix));
max_val = max(max(matrix));
 
% Getting indices as vectors
% All of minx, miny, maxx, maxy are vectors
 
[minx,miny] = find(matrix==min_val);
[maxx,maxy] = find(matrix==max_val);
 
% Displaying the values
fprintf("minimum index ")
disp([minx,miny])
fprintf("maximum index ")
disp([maxx,maxy])

Выход:

Как видно, минимальное значение 1 приходится на индексы (1,1) и (2,1), а максимальное значение 23 — на индексы (2,2) и (3,2). Те же результаты дает приведенный выше код.