Перейти к содержимому

Как найти максимальный элемент в матрице

  • автор:

Максимальные элементы столбцов матрицы

Найти максимальный элемент для каждого столбца матриц размерностью N строк M столбцов.

При переборе элементов матрицы по столбцам во внешнем цикле изменяется второй индекс, а во внутреннем — первый. Перед внутренним циклом предполагается, что первый элемент столбца двумерного массива — максимальный элемент данного столбца. Во внутреннем цикле, если обнаруживается, что текущий элемент больше уже найденного максимального, то значение переменной перезаписывается на него.

Найденный максимум сразу выводится на экран или может быть сохранен в отдельном одномерном массиве, размерность которого соответствует количеству столбцов матрицы.

const N = 5; M = 10; var arr: array[1..N, 1..M] of integer; max: integer; i,j: byte; begin randomize; for i := 1 to N do begin for j := 1 to M do begin arr[i, j] := random(100); write(arr[i, j]:4); end; writeln; end; for i := 1 to M do write(' --'); writeln; for j := 1 to M do begin max := arr[1, j]; for i := 2 to N do if arr[i, j] > max then max := arr[i, j]; write(max:4); end; writeln; end.

Пример выполнения программы:

 9 1 39 91 65 93 88 87 75 25 16 96 90 17 99 36 53 72 41 3 82 62 14 53 47 52 73 17 21 39 56 52 41 24 83 45 48 12 85 55 76 31 54 47 71 13 66 84 94 8 -- -- -- -- -- -- -- -- -- -- 82 96 90 91 99 93 88 87 94 55

Как найти максимальный элемент в матрице

Поиск максимума и минимума (вариант 1 — максимальное и минимальное значения):

CONST
kol_strok=5;
kol_stolbcov=4;
VAR
A:array[1..kol_strok,1..kol_stolbcov] of Real;
i,j:integer;
max,min:real;
BEGIN
for i:=1 to kol_strok do
for j:=1 to kol_stolbcov do
Read(A[i,j]);
max:=A[1,1];
min:=A[1,1];
for i:=1 to kol_strok do
for j:=1 to kol_stolbcov do
begin
if A[i,j]>max then max:=A[i,j];
if min>A[i,j] then min:=A[i,j];
end;
Writeln(‘Максимальный элемент = ‘,max:4:2);
Writeln(‘Минимальный элемент = ‘,min:4:2);
END.

max:=A[1,1]; — начальное значение максимума, предполагаем, что максимальный элемент стоит на пересечении 1-ой строки и 1-го столбца;
min:=A[1,1]; — начальное значение минимума, предполагаем, что минимальный элемент стоит на пересечении 1-ой строки и 1-го столбца;
for i:=1 to kol_strok do — перечисляем все строки
for j:=1 to kol_stolbcov do — перечисляем все столбцы
if A[i,j]>max then max:=A[i,j]; — если текущий элемент матрицы А больше значения переменной max, то переменной max присваиваем значение этого элемента
if min>A[i,j] then min:=A[i,j]; — если значение переменной min больше текущего элемента матрицы А, то переменной min присваиваем значение этого элемента

Поиск максимума и минимума (вариант 2 — позиции максимального и минимального элементов):

CONST
kol_strok=5;
kol_stolbcov=4;
VAR
A:array[1..kol_strok,1..kol_stolbcov] of Real;
i,j:integer;
max_stroka,max_stolbec,min_stroka,min_stolbec:integer;
BEGIN
for i:=1 to kol_strok do
for j:=1 to kol_stolbcov do
Read(A[i,j]);
max_stroka:=1;
max_stolbec:=1;
min_stroka:=1;
min_stolbec:=1;
for i:=1 to kol_strok do
for j:=1 to kol_stolbcov do
begin
if A[i,j]>A[max_stroka,max_stolbec] then
begin
max_stroka:=i;
max_stolbec:=j;
end;
if A[min_stroka,min_stolbec]>A[i,j] then
begin
min_stroka:=i;
min_stolbec:=j;
end;
end;
Writeln(‘Максимальный элемент = ‘,A[max_stroka,max_stolbec]:4:2);
Writeln(‘Минимальный элемент = ‘,A[min_stroka,min_stolbec]:4:2);
END.

max_stroka:=1; — предположим, что максимальный элемент находится в 1-ой строке
max_stolbec:=1; — предположим, что максимальный элемент находится в 1-ом столбце
min_stroka:=1; — предположим, что минимальный элемент находится в 1-ой строке
min_stolbec:=1; — предположим, что минимальный элемент находится в 1-ом столбце
if A[i,j]>A[max_stroka,max_stolbec] then — если текущий элемент матрицы А больше элемента находящегося на пересечении max_stroka и max_stolbec, то сохраняем его позицию в наших переменных
if A[min_stroka,min_stolbec]>A[i,j] then — если элемент находящийся на пересечении min_stroka и min_stolbe больше текущего элемента матрицы А, то сохраняем позицию текущего элемента в наших переменных

Program Primer;
USES
CRT;
CONST
kol_strok=5;
kol_stolbcov=4;
VAR
A:array[1..kol_strok,1..kol_stolbcov] of Real;
i,j:integer;
max_stroka,max_stolbec,min_stroka,min_stolbec:integer;
BEGIN
Writeln(‘Введите элемента матрицы А:’);
for i:=1 to kol_strok do
for j:=1 to kol_stolbcov do
Read(A[i,j]);
max_stroka:=1;
max_stolbec:=1;
min_stroka:=1;
min_stolbec:=1;
for i:=1 to kol_strok do
for j:=1 to kol_stolbcov do
begin
if A[i,j]>A[max_stroka,max_stolbec] then
begin
max_stroka:=i;
max_stolbec:=j;
end;
if A[min_stroka,min_stolbec]>A[i,j] then
begin
min_stroka:=i;
min_stolbec:=j;
end;
end;
ClrScr;
Writeln(‘Матрица А:’);
for i:=1 to kol_strok do
begin
for j:=1 to kol_stolbcov do
Write(A[i,j]:4:2,’ ‘);
Writeln;
end;
Writeln;
Writeln(‘Максимальный элемент A[‘,max_stroka,’;’,max_stolbec,’] = ‘,A[max_stroka,max_stolbec]:4:2);
Writeln(‘Минимальный элемент A[‘,min_stroka,’;’,min_stolbec,’] = ‘,A[min_stroka,min_stolbec]:4:2);
Readln;
END.

Как найти максимальное значение в массиве java

Чтобы найти максимальное значение в массиве необходимо пройтись по всем элементам в цикле, каждый раз сравнивая промежуточный максимум с очередным элементом массива. Если элемент в массиве больше промежуточного максимума, то нужно сохранить новое значение, как новый промежуточный максимум.

int[] arr = 10, 7, 1, 4, 7, 4, 11>; // Предположим, что нулевой элемент максимальный int max = arr[0]; // В цикле начинаем с первой ячейки for (int i = 1; i  arr.length; i++)  if (arr[i] > max)  max = arr[i]; > > System.out.println(max); // => 11 

Документация

M = max( A ) возвращает максимальные элементы массива.

  • Если A является вектором, то max(A) возвращает максимум A .
  • Если A является матрицей, то max(A) является вектором — строкой, содержащим максимальное значение каждого столбца.
  • Если A является многомерным массивом, то max(A) действует вдоль первого измерения массива, размер которого не равняется 1 , обрабатывая элементы как векторы. Размер этой размерности становится 1 , в то время как размеры всех других размерностей остаются то же самое. Если A является пустым массивом, первая размерность которого имеет нулевую длину, то max(A) возвращает пустой массив с тем же размером как A .

M = max( A ,[], dim ) возвращает максимальный элемент по измерению dim . Например, если A является матрицей, то max(A,[],2) является вектор-столбцом, содержащим максимальное значение каждой строки.

M = max( A ,[], nanflag ) задает, включать ли или не использовать значения NaN в вычислении. Например, max(A,[],’includenan’) включает все значения NaN в A , в то время как max(A,[],’omitnan’) игнорирует их.

M = max( A ,[], dim , nanflag ) также задает размерность, которую задает направление расчета при использовании опции nanflag .

[ M , I ] = max( ___ ) также возвращает индекс в операционную размерность, которая соответствует максимальному значению A для любого из предыдущих синтаксисов.

M = max( A ,[], ‘all’ ) находит максимум по всем элементам A . Этот синтаксис допустим для версий MATLAB ® R2018b и позже.

M = max( A ,[], vecdim ) вычисляет максимум по размерностям, заданным в векторном vecdim . Например, если A является матрицей, то max(A,[],[1 2]) вычисляет максимум по всем элементам в A , поскольку каждый элемент матрицы содержится в срезе массивов, заданном размерностями 1 и 2.

M = max( A ,[], ‘all’ , nanflag ) вычисляет максимум по всем элементам A при использовании опции nanflag .

M = max( A ,[], vecdim , nanflag ) задает несколько размерностей, которых задают направление расчета при использовании опции nanflag .

[ M , I ] = max( A ,[], ___ ,’linear’) возвращает линейный индекс в A , который соответствует максимальному значению в A . Этот синтаксис не поддержан, когда A имеет, вводят categorical , datetime или duration .

C = max( A , B ) возвращает массив с самыми большими элементами, взятыми из A или B .

C = max( A , B , nanflag ) также задает, как обработать значения NaN .

Примеры

Самый большой векторный элемент

Создайте вектор и вычислите его самый большой элемент.

A = [23 42 37 18 52]; M = max(A)
M = 52

Самый большой комплексный элемент

Создайте комплексный вектор и вычислите его самый большой элемент, то есть, элемент с самым большим значением.

A = [-2+2i 4+i -1-3i]; max(A)
ans = 4.0000 + 1.0000i

Самый большой элемент в каждом столбце матрицы

Создайте матрицу и вычислите самый большой элемент в каждом столбце.

A = [2 8 4; 7 3 9]
A = 2×3 2 8 4 7 3 9
M = max(A)
M = 1×3 7 8 9

Самый большой элемент в каждой матричной строке

Создайте матрицу и вычислите самый большой элемент в каждой строке.

A = [1.7 1.2 1.5; 1.3 1.6 1.99]
A = 2×3 1.7000 1.2000 1.5000 1.3000 1.6000 1.9900
M = max(A,[],2)
M = 2×1 1.7000 1.9900

Самое большое включение элемента NaN

Создайте вектор и вычислите его максимум, исключая значения NaN .

A = [1.77 -0.005 3.98 -2.95 NaN 0.34 NaN 0.19]; M = max(A,[],'omitnan')
M = 3.9800

max(A) также приведет к этому результату, поскольку ‘omitnan’ является опцией по умолчанию.

Используйте флаг ‘includenan’ , чтобы возвратить NaN .

M = max(A,[],'includenan')
M = NaN

Самые большие индексы элемента

Создайте матричный A и вычислите самые большие элементы в каждом столбце, а также индексы строки A , в котором они появляются.

A = [1 9 -2; 8 4 -5]
A = 2×3 1 9 -2 8 4 -5
[M,I] = max(A)
M = 1×3 8 9 -2
I = 1×3 2 1 1

Максимум страницы массивов

Создайте трехмерный массив и вычислите максимум по каждой странице данных (строки и столбцы).

A(. 1) = [2 4; -2 1]; A(. 2) = [9 13; -5 7]; A(. 3) = [4 4; 8 -3]; M1 = max(A,[],[1 2])
M1 = M1(. 1) = 4 M1(. 2) = 13 M1(. 3) = 8

Начиная в R2018b, вычислять максимум по всем размерностям массива, можно или задать каждую размерность в векторном аргументе размерности или использовать опцию ‘all’ .

M2 = max(A,[],[1 2 3])
M2 = 13
Mall = max(A,[],'all')
Mall = 13

Возвратите линейные индексы

Создайте матричный A и возвратите максимальное значение каждой строки в матричном M . Используйте опцию ‘linear’ , чтобы также возвратить линейные индексы I , таким образом что M = A(I) .

A = [1 2 3; 4 5 6]
A = 2×3 1 2 3 4 5 6
[M,I] = max(A,[],2,'linear')
M = 2×1 3 6
I = 2×1 5 6
maxvals = A(I)
maxvals = 2×1 3 6

Самое большое сравнение элемента

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

A = [1 7 3; 6 2 9]
A = 2×3 1 7 3 6 2 9
B = 5; C = max(A,B)
C = 2×3 5 7 5 6 5 9

Входные параметры

A Входной массив
скаляр | вектор | матрица | многомерный массив

Входной массив, заданный как скалярный, векторный, матричный или многомерный массив.

  • Если A является комплексным, то max(A) возвращает комплексное число с самым большим значением. Если значения равны, то max(A) возвращает значение с самым большим значением и самым большим углом фазы.
  • Если A является скаляром, то max(A) возвращает A .
  • Если A является пустым массивом 0 на 0, то max(A) также.

Если A имеет, вводят categorical , то это должно быть порядковым.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | categorical | datetime | duration
Поддержка комплексного числа: Да

dim Размерность, которая задает направление расчета
положительный целочисленный скаляр

Величина для работы, заданная как положительный целый скаляр. Если значение не задано, то по умолчанию это первый размер массива, не равный 1.

dim размерности указывает на размерность, длина которой уменьшает до 1 . size(M,dim) является 1 , в то время как размеры всех других размерностей остаются то же самое, если size(A,dim) не является 0 . Если size(A,dim) является 0 , то max(A,dim) возвращает пустой массив с тем же размером как A .

Рассмотрите двумерный входной массив, A :

  • Если dim = 1 , то max(A,[],1) возвращает вектор — строку, содержащий самый большой элемент в каждом столбце.

max возвращает A , если dim больше, чем ndims(A) .

vecdim — Вектор размерностей
вектор положительных целых чисел

Вектор размерностей, заданных как вектор положительных целых чисел. Каждый элемент представляет размерность входного массива. Продолжительности вывода в заданных операционных размерностях равняются 1, в то время как другие остаются то же самое.

Рассмотрите 2 3х3 входным массивом, A . Затем max(A,[],[1 2]) возвращает 1 1 3 массивами, элементы которых являются максимумами, вычисленными по каждой странице A .

Типы данных: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

B Дополнительный входной массив
скаляр | вектор | матрица | многомерный массив

Дополнительный входной массив, заданный как скаляр, вектор, матрица или многомерный массив. Числовые входные параметры A и B должны или быть одного размера или иметь размеры, которые совместимы (например, A является M -by- N матрица, и B является скаляром или 1 -by- N вектор — строка). Для получения дополнительной информации см. «Совместимые размеры массивов для основных операций».

Если A и B являются datetime, длительностью или категориальными массивами, то они должны быть одного размера, если каждый не скаляр.

  • A и B должны быть совпадающим типом данных, если каждый не double . В этом случае типом данных другого массива может быть single , duration или любой целочисленный тип.
  • Если A и B являются порядковыми категориальными массивами, у них должны быть те же наборы категорий с тем же порядком.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | categorical | datetime | duration
Поддержка комплексного числа: Да

nanflag условие NaN
‘omitnan’ (значение по умолчанию) | ‘includenan’

Условие NaN , заданное как одно из этих значений:

  • ‘omitnan’ — Проигнорируйте все значения NaN во входе. Если всеми элементами является NaN , то max возвращает первый.
  • ‘includenan’ — Включайте значения NaN во вход для вычисления.

Для массивов datetime можно также использовать ‘omitnat’ или ‘includenat’ , чтобы не использовать и включать значения NaT , соответственно.

Функция max не поддерживает опцию nanflag для массивов categorical .

Типы данных: char

Выходные аргументы

M Максимальные значения
скаляр | вектор | матрица | многомерный массив

Максимальные значения, возвращенные как скаляр, вектор, матрица или многомерный массив. size(M,dim) является 1 , в то время как размеры всех других размерностей совпадают с размером соответствующей размерности в A , если size(A,dim) не является 0 . Если size(A,dim) является 0 , то M является пустым массивом с тем же размером как A .

I Индекс
скаляр | вектор | матрица | многомерный массив

Индексируйте, возвращенный как скаляр, вектор, матрица или многомерный массив. I одного размера как первый вывод.

Когда ‘linear’ не задан, I является индексом в операционную размерность. Когда ‘linear’ задан, I содержит линейные индексы A , соответствующего максимальным значениям.

Если самый большой элемент происходит несколько раз, то I содержит индекс к первому вхождению значения.

C Максимальные элементы от A или B
скаляр | вектор | матрица | многомерный массив

Максимальные элементы от A или B , возвращенного как скаляр, вектор, матрица или многомерный массив. Размер C определяется неявным расширением размерностей A и B . Для получения дополнительной информации см. «Совместимые размеры массивов для основных операций».

Тип данных C зависит от типов данных A и B :

  • Если A и B являются совпадающим типом данных, то C совпадает с типом данных A и B .
  • Если или A или B является single , то C является single .
  • Если или A или B являются целочисленным типом данных с другим скалярный double , то C принимает целочисленный тип данных.

Расширенные возможности

«Высокие» массивы
Осуществление вычислений с массивами, которые содержат больше строк, чем помещается в памяти.

Эта функция поддерживает высокие массивы с ограничением:

  • 2D выходной синтаксис [Y,I] = max(. ) не поддержан.

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Указания и ограничения по применению:

  • Если вы задаете dim , то это должна быть константа.
  • Опция ‘linear’ не поддержана.
  • «Смотрите информацию о генерации кода функций Toolbox (MATLAB Coder) в разделе «»Ограничения переменных размеров»».».
  • Смотрите генерацию кода для комплексных данных с мнимыми частями с нулевым знаком (MATLAB Coder).

Массивы графического процессора
Ускорьте код путем работы графического процессора (GPU) с помощью Parallel Computing Toolbox™.

Указания и ограничения по применению:

  • Опция ‘linear’ не поддержана.

Распределенные массивы
Большие массивы раздела через объединенную память о вашем кластере с помощью Parallel Computing Toolbox™.

Указания и ограничения по применению:

  • Опция ‘linear’ не поддержана.

Смотрите также

Темы

Представлено до R2006a
Документация MATLAB
Поддержка
  • MATLAB Answers
  • Помощь в установке
  • Отчеты об ошибках
  • Требования к продукту
  • Загрузка программного обеспечения

© 1994-2019 The MathWorks, Inc.

  • Условия использования
  • Патенты
  • Торговые марки
  • Список благодарностей

Для просмотра документации необходимо авторизоваться на сайте
Войти
Памятка переводчика

1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.

2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.

3. Сохраняйте структуру оригинального текста — например, не разбивайте одно предложение на два.

4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.

5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *