Найдите индексы максимального и минимального значения матрицы в MATLAB
Матрицы в 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). Те же результаты дает приведенный выше код.