Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Матрицы






В двумерном массиве каждому элементу соответствует два индекса. Первый индекс - это номер строки, а второй - номер столбца, где расположен элемент матрицы.

Чтобы обратиться к элементу двумерного массива, достаточно указать имя матрицы и в скобках через запятую индексы (номера) строки и столбца. Например, запись А(2, 3) означает обращение к элементу 2-й строки 3-го столбца.

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

Ввод матрицы можно осуществить следующими способами:

Й вариант

Этот вариант аналогичен 1-му примеру с одномерным массивом. Ввод матрицы осуществим построчно, но элементы матрицы при вводе пока будут не пронумерованы. Матрицу выведем традиционным для ML способом, указав в команде disp имя матрицы, например, disp (X).

Запишем:

clear;

clc;

%n – количество строк

%m – количество столбцов

n=input('Введите n=');

m=input('Введите m=');

for i=1: n

disp(sprintf('Введите эл. %d строки матрицы', i))

for j=1: m

X(i, j)=input('X(i, j)=');

end

end

disp('Матрица X');

disp(X);

На экране получим:

Введите n=2

Введите m=3

Введите эл. 1 строки матрицы

X(i, j)=4

X(i, j)=5

X(i, j)=6

Введите эл. 2 строки матрицы

X(i, j)=1

X(i, j)=2

X(i, j)=3

Матрица X

4 5 6

1 2 3

Приведем 2-ой вариант, в котором элементы матрицы пронумерованы. Запишем:

clc;

clear;

n=input('Введите n=');

m=input('Введите m=');

for i=1: n

for j=1: m

disp(sprintf('Введите %s(%d, %d)=', 'X', i, j))

X(i, j)= input(' ');

end

end

disp('Матрица X');

disp(X);

Получим на экране:

Введите n=2

Введите m=3

Введите X(1, 1)=

Введите X(1, 2)=

Введите X(1, 3)=

Введите X(2, 1)=

Введите X(2, 2)=

Введите X(2, 3)=

Матрица X

4 3 7

4 9 1

Для обработки двумерных массивов используют вложенные циклы. В зависимости от решаемой задачи просмотр матрицы может осуществляться или по строкам, или по столбцам. Когда действия производятся во всей матрице, то порядок обхода элементов неважен. Если необходимо произвести обработку по строкам, сначала обрабатываются все элементы первой строки, затем все элементы второй строки и так до конца массива. Для этого во внешнем цикле изменяется первый индекс (индекс строки), а во внутреннем – второй (индекс столбца). Иными словами, чтобы перемещаться по элементам одной строки, нужно изменять номера столбцов. В случае, если необходимо выполнить действия по столбцам, поступают аналогично, с той лишь разницей, что внешний цикл организуется по столбцам, а внутренний цикл по строкам, т.е. сначала обрабатываются все элементы первого столбца, потом все элементы второго, третьего, и так далее, а для перемещения по элементам столбца изменяется номер строки.

Пример

Определить среднее арифметическое отрицательных элементов в матрице. Если их нет, выдать сообщение. Запишем:

clear;

clc;

n=input('введите n=');

m=input('введите m=');

disp('введите элементы матрицы');

for i=1: n

for j=1: m

X(i, j)=input('X(i, j)=');

end

end

disp('исходная матрица')

disp(X)

s=0;

k=0;

for i=1: n

for j=1: m

if X(i, j)< 0

k=k+1;

s=s+X(i, j);

end

end

end

if s==0

disp('Отрицательных нет');

else

sr=s/k;

disp('sr=');

disp(sr);

end

Получим на экране:

введите n=2

введите m=3

введите элементы матрицы

X(i, j)=1

X(i, j)=2

X(i, j)=3

X(i, j)=4

X(i, j)=5

X(i, j)=6

исходная матрица

1 2 3

4 5 6

Отрицательных нет

Пример






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.