Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
matlab_final.doc
Скачиваний:
80
Добавлен:
24.09.2019
Размер:
5.3 Mб
Скачать

1.5. Операции с матрицами

MATLAB ориентирован в первую очередь на работу с матрицами, поэтому среда разработки предоставляет пользователю довольно обширную библиотеку операций и функций для работы с ними. Некоторые матричные операторы приведены в таблице 1.3.

Таблица 1.3

+

Сложение матриц

-

Вычитание матриц

*

Перемножение матриц

.*

Перемножение элементов матриц

./

Деление элементов матриц

.\

Поэлементное обратное деление элементов матриц (деление правого операнда на левый)

.'

Транспонирование

'

Расчет комплексно-сопряженной (эрмитово-сопряженной) матрицы. Транспонирование матрицы и применение комплексного сопряжения к ее элементам.

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

>> a = [1 0 -2 10 13];

>> b = [-5 1 -1 2 7];

>> a + b

ans =

-4 1 -3 12 20

>> a + 5

ans =

6 5 3 15 18

>> a - b

ans =

6 -1 -1 8 6

>> a.'

ans =

1

0

-2

10

13

>> a.' * b

ans =

-5 1 -1 2 7

0 0 0 0 0

10 -2 2 -4 -14

-50 10 -10 20 70

-65 13 -13 26 91

>> a * b.'

ans =

108

>> a .* b

ans =

-5 0 2 20 91

>> a ./ b

ans =

-0.2000 0 2.0000 5.0000 1.8571

>> a .\ b

ans =

-5.0000 Inf 0.5000 0.2000 0.5385

>> c = [1 + 5i, -5 - 2i

1i, 10 + 3i]

c =

1.0000 + 5.0000i -5.0000 - 2.0000i

0 + 1.0000i 10.0000 + 3.0000i

>> c'

ans =

1.0000 - 5.0000i 0 - 1.0000i

-5.0000 + 2.0000i 10.0000 - 3.0000i

В таблице 1.4 приведены некоторые стандартные функции для работы с матрицами.

Таблица 1.4

sum

Расчет суммы элементов векторов. Расчет суммы элементов в каждом столбце или строке матрицы.

prod

Расчет произведения элементов векторов. Расчет произведения элементов в каждом столбце или строке матрицы.

mean

Расчет среднего значения для строк или столбцов матрицы.

min / max

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

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

>> x = [1 0 -2 10 13];

>> sum (x)

ans =

22

>> sum (x.')

ans =

22

Если функции sum передать двумерную матрицу размерностью M x N в качестве единственного параметра, то она вернет матрицу размерностью 1 x N, каждый элемент которой равен сумме всех элементов в соответствующем столбце:

>> a = [1 3 10 -5; 2 4 6 8; -10 -12 0 14]

a =

1 3 10 -5

2 4 6 8

-10 -12 0 14

>> sum (a)

ans =

-7 -5 16 17

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

>> sum (a, 1)

ans =

-7 -5 16 17

Если второй аргумент равен 2, то суммирование происходит не по столбцам, а по строкам, и для матрицы размерностью M x N результатом будет матрица размерностью M x 1:

>> sum (a, 2)

ans =

9

20

-8

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

>> sum (sum (a))

ans =

21

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

>> x = [1 2 -2 10 13];

>> prod (x)

ans =

-520

>> prod (x.')

ans =

-520

>> a = [1 3 10 -5; 2 4 6 8; -10 -12 0 14]

a =

1 3 10 -5

2 4 6 8

-10 -12 0 14

>> prod (a)

ans =

-20 -144 0 -560

>> prod (a, 1)

ans =

-20 -144 0 -560

>> prod (a, 2)

ans =

-150

384

0

>> prod (prod (a) )

ans =

0

Аналогично работает и функция mean, которая возвращает среднее арифметическое для элементов строк или столбцов матрицы:

>> x = [1 2 -2 10 13];

>> mean (x)

ans =

4.8000

>> mean (x.')

ans =

4.8000

>> a = [1 3 10 -5; 2 4 6 8; -10 -12 0 14]

a =

1 3 10 -5

2 4 6 8

-10 -12 0 14

>> mean (a)

ans =

-2.3333 -1.6667 5.3333 5.6667

>> mean (a, 1)

ans =

-2.3333 -1.6667 5.3333 5.6667

>> mean (a, 2)

ans =

2.2500

5.0000

-2.0000

>> mean (mean (a) )

ans =

1.7500

Подобным образом работают и функции min и max, в том числе для нахождения минимального и максимального элементов в столбцах соответственно.

>> x = [1 2 -2 10 13];

>> min (x)

ans =

-2

>> max (x)

ans =

13

>> a = [1 3 10 -5; 2 4 6 8; -10 -12 0 14]

a =

1 3 10 -5

2 4 6 8

-10 -12 0 14

>> min (a)

ans =

-10 -12 0 -5

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

C = min (A, [], dim)

C = max (A, [], dim)

Здесь A - матрица, в которой нужно найти минимальные (максимальные) элементы, а dim - номер измерения матрицы, в котором нужно искать минимальные (максимальные) значения. Если dim = 1, то такие значения будут искаться в столбцах, что равносильно вызову функций min или max без параметров. Если dim = 2, то минимальные (максимальные) элементы ищутся в каждой строке матрицы.

>> a = [1 3 10 -5; 2 4 6 8; -10 -12 0 14]

a =

1 3 10 -5

2 4 6 8

-10 -12 0 14

>> min (a, [], 2)

ans =

-5

2

-12

Также возможно вызывать функции min / max, передавая им в качестве аргументов две матрицы A и B одинаковой размерности M x N. В этом случае результатом вызова этих функций будет матрица C, размерностью M x N, элементы которой будут равны:

  • для функции min: C(i, j) = min (A(i, j), B(i, j));

  • для функции max: C(i, j) = max (A(i, j), B(i, j));

для всех i = 1,... , M, j = 1,... , N. Такое использование функций min / max показано в следующем примере:

>> a = [1 3 10 -5; 2 4 6 8; -10 -12 0 14]

a =

1 3 10 -5

2 4 6 8

-10 -12 0 14

>> b = [2 1 5 -5; -2 -4 10 11; -5 10 2 7]

b =

2 1 5 -5

-2 -4 10 11

-5 10 2 7

>> min (a, b)

ans =

1 1 5 -5

-2 -4 6 8

-10 -12 0 7

>> max (a, b)

ans =

2 3 10 -5

2 4 10 11

-5 10 2 14

Если в качестве второго аргумента функциям min / max передать действительно число (что равносильно матрице 1 x 1), то это равносильно тому, что в качестве второго аргумента была бы передана матрица, размерность которой совпадает с матрицей, переданной в качестве первого аргумента, элементы которой равны переданному числу:

>> a = [1 3 10 -5; 2 4 6 8; -10 -12 0 14]

a =

1 3 10 -5

2 4 6 8

-10 -12 0 14

>> min (a, 2)

ans =

1 2 2 -5

2 2 2 2

-10 -12 0 2

>> max (a, 5)

ans =

5 5 10 5

5 5 6 8

5 5 5 14

Функции min / max, имеют еще один способ вызова, когда эти функции возвращают два параметра. В этом случае в качестве первого параметра будет возвращено то же значение, что и при описанных выше способах вызова, а в качестве второго значения будет возвращена матрица, содержащая номера строк или столбцов, содержащие соответствующие элементы из первой матрицы. Такой вызов функции min показан в следующем примере:

>> a = [1 3 10 -5; 2 4 6 8; -10 -12 0 14]

a =

1 3 10 -5

2 4 6 8

-10 -12 0 14

>> [c, indexes] = min (a)

c =

-10 -12 0 -5

indexes =

3 3 3 1

>> [c, indexes] = min (a, [], 2)

c =

-5

2

-12

indexes =

4

1

2

Описание функций min и max показывает, что в MATLAB одна и та же функция может быть вызвана различными способами или, с другой стороны, может быть создано несколько разных функций с одинаковыми именами, но различными входными или выходными параметрами.

Математические функции, встроенные в MATLAB (такие как cos, sin, sqrt и т.д.) могут принимать в качестве аргумента матрицы (как уже говорилось, числа в MATLAB являются частным случаем матриц размерностью 1 x 1), в результате выполнения таких операций возвращается матрица, того же размера, что и переданный аргумент, а элементы этой матрицы представляют собой элементы первой матрицы, к которым был применена соответствующая функция. Например:

>> x = [0, pi / 3, pi / 2, -pi / 6];

>> cos (x)

ans =

1.0000 0.5000 0.0000 0.8660

>> y = [1 -1 -2 5];

>> abs (y)

ans =

1 1 2 5

>> exp (y)

ans =

2.7183 0.3679 0.1353 148.4132

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]