Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ_ИТ_Практич_занятия.doc
Скачиваний:
4
Добавлен:
15.11.2019
Размер:
299.01 Кб
Скачать

Поэлементные операции

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

Поэлементные операции с матрицами

Введем две матрицы

.

Умножение каждого элемента одной матрицы на соответствующий элемент другой производится при помощи оператора .*

>> C=A.*B

C =

-2 10 -8

21 -12 -45

Для деления элементов первой матрицы на соответствующие элементы второй используется ./ , а для деления элементов второй матрицы на соответствующие элементы первой служит .\

>> R1=A./B

R1 =

-2.0000 2.5000 -0.1250

0.4286 -1.3333 -1.8000

>> R2=A.\B

R2 =

-0.5000 0.4000 -8.0000

2.3333 -0.7500 -0.5556

Поэлементное возведение в степень осуществляется при помощи .^

>> P=A.^2

P =

4 25 1

9 16 81

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

>> PB=A.^B

PB =

1.0e+003 *

0.0005 0.0250 0.0010

2.1870 0.0000 0.0000

Применение функций обработки данных к матрицам

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

>> M=[1 -2 -4; 3 -6 4; 2 -2 0];

>> s=sum(M)

s =

6 -10 0

Функция sum по умолчанию вычисляет сумму по столбцам, изменяя первый индекс массива при фиксированном втором. Для того чтобы производить суммирование по строкам, необходимо вызвать sum с двумя аргументами, указав место индекса, по которому следует суммировать

>> s2=sum(M,2)

s2 =

-5

1

0

Заметим, что sum(M) и sum(M,1) приводят к одинаковым результатам. Итак, функция sum суммирует по строкам, или по столбцам, выдавая результат в виде вектора или вектор-строки. Аналогично работает и функция prod:

>> p=prod(M)

p =

6 -24 0

>> p2=prod(M,2)

p2 =

8

-72

0

Функция sort упорядочивает элементы каждого из столбцов матрицы в порядке возрастания. Вызов sort со вторым аргументом, равным двум, приводит к упорядочению элементов строк:

>> MC=sort(M) >> MR=sort(M,2)

MC = MR =

1 -6 -4 -4 -2 1

2 -2 0 -6 3 4

3 -2 4 -2 0 2

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

>> [MC, Ind]=sort(M)

MC =

1 -6 -4

2 -2 0

3 -2 4

Ind =

1 2 1

3 1 3

2 3 2

Функции max и min вычисляют вектор-строку, содержащую максимальные или минимальные элементы в соответствующих столбцах матрицы:

>> mx=max(M) >> mn=min(M)

mx = mn =

3 -2 4 1 -6 -4

Для того чтобы узнать не только значения максимальных и минимальных элементов, но и их номера в столбцах, следует вызвать max или min так:

>> [mx,k]=max(M) >> [mn,n]=min(M)

mx = mn =

3 -2 4 1 -6 -4

k = n =

2 1 2 1 2 1

Обратите внимание, что во втором столбце матрицы M два равных максимальных элемента – первый и третий. Всегда возвращается номер первого максимального элемента. Аналогично и с минимальным элементом.

Рассмотрим функцию rot90, поворачивающую массив на 90 градусов против часовой стрелки. Например:

>> P=[4 3 -1; 2 0 7]

P =

4 3 -1

2 0 7

>> q1=rot90(P)

q1 =

-1 7

3 0

4 2