0 / 0 / 0
Регистрация: 19.04.2011
Сообщений: 7

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

19.04.2011, 14:24. Показов 12979. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток !
Прошу помочь решить задачу по matlab'у

Построить квадратную матрицу порядка 5 по правилу A(i,j)=sin(j+i/3). Найти наибольший элемент в каждой строке.

Первую половину задачи удалось осилить самому:

Matlab M
1
2
3
4
5
6
7
8
9
m=5; n=5
max=0.00001
A=zeros(m,n);
for i=1:m
    for j=1:n
        A(i,j)=sin(j+i/3);
    end
end
disp('Matrica A'); disp(A);


теперь, как я понимаю, необходимо задать два цикла: по строке и по элементу строки, в которых программа будет проводить сравнение и-того элемента с неким МАКСИМАЛЬНЫМ заранее заданным.

Заранее благодарен !
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.04.2011, 14:24
Ответы с готовыми решениями:

Нахождение наибольшего элемента в строке матрицы
не могу понять в чём ошибка сделал функцию которая должна искать наибольший элемент в строке массива #include <stdio.h> ...

Нахождение наибольшего элемента в строке и этот элемент должен быть минимальным в столбце
a)Матрица задана формулой A=0.1*(N*N-pow((j-N/2+0.2),2))*pow((i-N/2-0.3),2); Нужно вывести вектор x из пункта б б)Элемент матрицы...

Определение наибольшего значения из наименьших по каждой строке матрицы
Ребята, пожалуйста, помогите сделать 2 задачи новичку, пожалуйста кто-то откликнитесь( 2. Разработать консольное приложение,...

10
 Аватар для Галина Борисовн
2835 / 2132 / 87
Регистрация: 02.05.2010
Сообщений: 3,194
19.04.2011, 17:00
Лучший ответ Сообщение было отмечено как решение

Решение

Так будет проще
C
1
2
3
4
n=5;
[i, j] = meshgrid(1:5);
A=sin(j+i/3)
Amax=max(A(1:n,:)')
Результат:
A =
0.9719 0.9954 0.9093 0.7231 0.4573
0.7231 0.4573 0.1411 -0.1906 -0.5013
-0.1906 -0.5013 -0.7568 -0.9290 -0.9990
-0.9290 -0.9990 -0.9589 -0.8133 -0.5782
-0.8133 -0.5782 -0.2794 0.0501 0.3742
Amax =
0.9954 0.7231 -0.1906 -0.5782 0.3742
3
536 / 523 / 38
Регистрация: 13.03.2011
Сообщений: 728
19.04.2011, 18:35
Отличное решение в духе MATLAB!
Только строку 4 я бы чуточку упростил, избавившись от операции транспонирования:
Code
1
Amax = max(A, [], 2)
2
 Аватар для Галина Борисовн
2835 / 2132 / 87
Регистрация: 02.05.2010
Сообщений: 3,194
19.04.2011, 18:40
Цитата Сообщение от Sledge5 Посмотреть сообщение
Отличное решение в духе MATLAB!
Спасибо за похвалу. У Вас учусь краткости. Спасибо за науку.
0
0 / 0 / 0
Регистрация: 19.04.2011
Сообщений: 7
19.04.2011, 23:48  [ТС]
Благодарю Вас за помощь!
0
0 / 0 / 0
Регистрация: 19.04.2011
Сообщений: 7
02.05.2011, 17:24  [ТС]
Всех с прошедшим праздником!

У меня возникло несколько вопросов по предложенному ранее варианту решения данной задачи,
надеюсь у Вас найдутся время и силы помочь

1. Прежде всего, оператор meshgrid - не совсем понял, что означает единица в скобке (1,5), просто до этого всегда матрицы приходилось задавать в циклах.

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

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

Спасибо !
0
 Аватар для Галина Борисовн
2835 / 2132 / 87
Регистрация: 02.05.2010
Сообщений: 3,194
02.05.2011, 18:01
Цитата Сообщение от Progr4mist Посмотреть сообщение
был бы рад увидеть решение в виде задания циклов, о которых шла речь в первом сообщении, ибо это предпочтительный вариант решения задачи.
Предпочтительней потому, что Вам так понятней или от того, что так требует преподаватель?
[i, j] = meshgrid(1:5) Здесь задаются две матрицы вида. Значения элементов матрицы изменяются от 1 до 5 с шагом 1. Обе матрицы создают базу, на которой рассчитывается матрица-функция
A=sin(j+i/3) i =
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
j =
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
5 5 5 5 5
Amax = max(A, [], 2) Это другая форма функции max. Она ищет максимальный элемент в строках (по 2-му индексу матрицы). Было бы Amax = max(A, [],1) искала бы максимальный в столбцах.
2
536 / 523 / 38
Регистрация: 13.03.2011
Сообщений: 728
02.05.2011, 18:09
2. И, конечно, в большей степени вызвала интерес вот эта строка
Amax = max(A, [], 2)
как я понимаю, здесь: А - матрица, в которой ищем максимум, [] - не совсем понял что , 2 поиск по строке вроде, но тоже не понял на чем основана такая символика обозначений.
Давайте разбираться. Функция max ищет максимум между двумя значениями, которые могут быть и числами, и матрицами, и массивами любой размерности (но обязательно одинаковыми!).
Code
1
Xmax = max(A, B)
Если искать максимум только в одной переменной (векторе, матрице, массиве с любой размерностью), то проблем со вторым параметром нет:
Code
1
Amax = max(A)
Но беда в том, что в этом случае функция max находит максимальный элемент в первом измерении, т.е. по строкам в каждом столбце. Чтобы искать максимум в каждой строке по столбцам, нужно указать размерность массива, вдоль которой проводить поиск максимального значения. Легко догадаться, что номер размерности в этом случае равен 2.
Возникает новая проблема: как задействовать в вызове функции 3-й параметр, не указывая при этом 2-ой? Решается он явным указанием пустого значения ([]) в качестве 2-го параметра. Теперь получается, что 2-ой параметр ничего не изменил, но такое его указание дало нам возможность использовать 3-ий параметр вызываемой функции.

Такой приём можно использовать, если при вызове функции MATLAB нужно пропустить какой-нибудь параметр вызова этой функции. Кстати, параметр размерности (в справке обозначен везде переменной dim), вдоль которой ведется вычисление встречается в функциях MATLAB достаточно часто.

Добавлено через 5 минут
Использование циклов в MATLAB вместо встроенных функций и поэлементных операций как раз НЕ ЯВЛЯЕТСЯ предпочтительным.
2
0 / 0 / 0
Регистрация: 19.04.2011
Сообщений: 7
02.05.2011, 18:27  [ТС]
Галина Борисовн,
Sledge5,

Спасибо за подробные ответы !
Галина Борисовн,
Что касается решения через циклы, если честно, мне так легче и сам преподаватель посоветовал пойти этим путем. Собственно потому то у меня и возникли вопрос на счет предложенного ранее решения.
Sledge5,
После прочтения Вашего подробного разъяснения работы оператора max в данной задаче, у меня остался лишь один вопрос:
За что отвечает 2-ой параметр (в нашем случае "пустышка" []) и почему мы не можем сразу вместо нее вписать 2, т.е. как мы решили что нам нужно задействовать именно 3-ий параметр, минуя 2-ой.

Прошу прощенья, если мои вопросы звучат крайне некомпетентно, буду рад Вашей помощи !


ps получается, что
2-ой параметр - это i
3 - j ?
0
536 / 523 / 38
Регистрация: 13.03.2011
Сообщений: 728
02.05.2011, 23:08
Цитата Сообщение от Progr4mist Посмотреть сообщение
За что отвечает 2-ой параметр (в нашем случае "пустышка" []) и почему мы не можем сразу вместо нее вписать 2, т.е. как мы решили что нам нужно задействовать именно 3-ий параметр, минуя 2-ой.
2-ой параметр - это имя второй матрицы (вектора или массива). У нас его нет, потому и пустое значение указываем.
Почему мы так решили? Это не мы решили, а программисты Mathworks. Это они так определили заголовок функции. И это логично! Почему это логично? Потому что максимум обычно ищется среди двух значений. Эти значения находятся в соответствующих позициях массивов, указанных в качестве первого и второго параметра.
Пример: допустим, у нас есть две матрицы 3х3 случайных чисел (переменные a и b)
Code
1
max(a)
В этом случае получаем матрицу 1х3, где каждое число - максимальное значение в соответствующем столбце. Про матрицу b не буду писать - там всё аналогично.

Code
1
x = max(a, b)
В этом случае получаем матрицу 3х3, где каждое число - максимальное значение в соответствующей позиции из двух матриц. Т.е.
Code
1
2
3
x(1,1) = max(a(1,1), b(1,1))
x(2,1) = max(a(2,1), b(2,1))
и т.д.
Второй параметр нельзя пропускать, потому что подразумевается, что там будет имя второго массива.

Все параметры встроенных функций описаны в справке:
Code
1
help max
или
Code
1
doc max
1
0 / 0 / 0
Регистрация: 19.04.2011
Сообщений: 7
02.05.2011, 23:57  [ТС]
Вот теперь для меня целиком прояснилась ситуация. Очень хорошо и доступно объяснили, за что превелико благодарен. Думаю теперь я в силах привести подробное обоснование решения задачи преподавателю.

Ещё раз спасибо за Вашу отзывчивость и терпение !
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.05.2011, 23:57
Помогаю со студенческими работами здесь

Поиск наибольшего количества подряд идущих нулей в строке матрицы
Надо найти наибольшее кол-во подряд идущих нулей в строке и отсортировать матрицу по возрастанию, т.е. первыми будут строки с наименьшим...

Найти сумму наибольшего и наименьшего из значений в каждой строке матрицы
Дана действительная матрица размера n на m. Получить последовательность b1,..,bn, где bk- это сумма наибольшего и наименьшего из значений...

Получить сумму наибольшего значения элементов матрицы и наименьшего в этой же строке
Доброго времени суток, помогите пожалуйста решить задачку: Дана целочисленная матрица размером m×n. Получить сумму наибольшего...

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

С помощью процедуры определить порядковые номера наибольшего элемента в каждой строке матрицы
Задали матрицу Z размерности (5х6). Составить схему алгоритма и программу, в которой с помощью процедуры определить порядковые номера...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru