Материал: MATLAB1

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

Перестановка в матрице строк со столбцами даст транспонированную матрицу A', или AT. Если элементы матрицы комплексно-сопряженные, то это комплексно-сопряженная матрица А. Если элементы транспонированной матрицы A' комплексно-сопряженные, то матрица А* называется сопряженной с А. Определитель квадратной матрицы А обозначается или det A. В табл. 2.4 представлены примеры операций с матрицами.

Таблица 2.4

Ввод матрицы A

Ввод матрицы B

Транспони-

рование A

Определи-

тель B

Собственные числа матрицы B

»A = [5 6 4;7 10 5]

A =

5 6 4

7 10 5

»B = [5 6 4;7 10 5; 3 6 9]

B =

5 6 4

7 10 5

3 6 9

»A'

ans =

5 7

6 10

4 5

»det(B)

ans =

60

»eig(B)

ans =

18.7965

0.7104

4.4931

Некоторые типы матриц естественно возникают при решении разных задач [4], имеют специальные названия и соответствуют некоторому определяющему условию: 1) симметричная , 2) кососимметричная , 3) ортогональная , или , 4) стохастическая для , 5) эрмитова , 6) унитарная , или .

Не менее важны специальные типы матриц, используемые в качестве вспомогательных (тестовые матрицы, матрицы Адамара, Гильберта и др.). Приведем некоторые из них:

1) Н = hadamard(n) – формирует матрицу Адамара порядка n. Матрица Адамара – это квадратная матрица размера n, составленная из двух значений 1 и –1, столбцы которой ортогональны, так что справедливо соотношение Н'*Н = n*I, где = eye(n, n) – единичная квадратная матрица размера  n:

»H2 = hadamard(2)

H2 =

1 1

1 –1

Матрицы Адамара применяются в различных областях, включая комбинаторику, численный анализ, обработку сигналов. Матрица Адамара размера  n при > 2 существует, если n делится на 4 без остатка. Алгоритм Matlab вносит дополнительные ограничения, вычисляя матрицы Адамара только для тех n, когда или n, или n/12, или n/20 являются степенями по основанию 2.

2) hilb(n) – возвращает матрицу Гильберта порядка n. Матрица Гильберта является примером плохо обусловленной матрицы. Элементы матрицы Гильберта определяются как H(i, j) = l/(+ j  1).

Таблица 2.5

Матрица Гильберта

Инверсная матрица

Произведение прямой и инверсной матриц

»H = hilb(2)

H =

1.0000 0.5000

0.5000 0.3333

»H1 = invhilb(2)

H1 =

4 –6

–6 12

»H * H1

ans =

1 0

0 1

3) invhilb(n) – возвращает матрицу, обратную матрице Гильберта порядка n (< 15). Для > 15 функция invhilb(n) возвращает приближенную матрицу. Получение матриц представлено в табл. 2.5. Точная обратная матрица – это матрица с очень большими целочисленными значениями, которые могут быть представлены как числа с плавающей запятой без погрешности округления до тех пор, пока порядок матрицы n не превышает 15.

    1. Формирование матриц

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

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

Первый способ. Объединение массивов «по горизонтали» (одинаковое число строк) – [A, B, C] или [A B C] и «по вертикали» (одинаковое число столбцов) – [A; B; C]. Обеспечивается операция «конкатенация».

Таблица 2.6

Единичная матрица

Матрица нулей

Матрица c

»a = eye(2)

a =

1 0

0 1

»b = zeros(2)

b =

0 0

0 0

»c = [0 1; 1 0]

c =

0 1

1 0

Пусть сформированы матрицы, представленные в табл. 2.6. На их основе можно построить матрицу, содержащую 4 матрицы:

»CNOT = [a b; b c]

CNOT =

1 0 0 0

0 1 0 0

0 0 0 1

0 0 1 0

Второй способ. Команда С = cat(dim, А, В) – объединяет массивы А и B в соответствии со спецификацией размерности dim и возвращает объединенный массив (табл. 2.7): dim = 1 – вертикальная конкатенация, dim = 2 – горизонтальная, dim = 3 – многомерный массив размерности 3 и т. д.

Таблица 2.7

Вертикальная конкатенация

Горизонтальная конкатенация

»CNOT1 = cat(1, a, b)

»CNOT2 = cat(1, b, c)

»CNOT = cat(2, CNOT1, CNOT2)

CNOT1 =

1 0

0 1

0 0

0 0

CNOT2 =

0 0

0 0

0 1

1 0

CNOT =

1 0 0 0

0 1 0 0

0 0 0 1

0 0 1 0

Таблица 2.8

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

Копирование матрицы

Выборка по столбцам

»w = [1 0 2;6 5 2]

»t = repmat (w, 2, 2)

»s = reshape(w, 3, 2)

w =

1 0 2

6 5 2

t =

1 0 2 1 0 2

6 5 2 6 5 2

1 0 2 1 0 2

6 5 2 6 5 2

s =

1 5

6 2

0 2

Третий способ. Для создания матриц, состоящих из других матриц, используются функции: repmat(А, m, n) – возвращает матрицу B, состоящую из m  n копий матрицы A, т. е. в матрице m  n каждый элемент заменяется на копию матрицы A; reshape(А, m, n) – возвращает матрицу B размера m  n, сформированную из А последовательной выборкой по столбцам. Если число элементов А не равно m  n, то выдается сообщение об ошибке.

Варианты реализации команд третьим способом приведены в табл. 2.8.

2. Перестановки элементов матриц. Для перестановок элементов матриц служат следующие функции:

1) B = fliplr(A) – зеркально переставляет столбцы матрицы А относительно вертикальной оси; 2) B = flipud(A) – зеркально переставляет строки матрицы А относительно горизонтальной оси; 3) P = perms(v) – возвращает матрицу P, которая содержит все возможные перестановки элементов вектора v, каждая перестановка в отдельной строке. Матрица Р содержит n! строк и n столбцов; 4) rot90(A, n) – поворот матрицы А на 90*n. Варианты выполнения перестановок элементов матриц представлены в табл. 2.9.

Таблица 2.9

Зеркальная перестановка столбцов

Зеркальная перестановка строк

Поворот матрицы

»F = [1 2 3;5 45 3]

F =

1 2 3

5 45 3

»fliplr(F)

ans =

3 2 1

3 45 5

»flipud(F)

ans =

5 45 3

1 2 3

»F1 = [1 2 3]

F1 =

1 2 3

»perms(F1)

ans =

3 2 1

3 1 2

2 3 1

2 1 3

1 2 3

1 3 2

»a

a =

1 0

0 1

»rot90(a, 3)

ans =

0 1

1 0

3. Изменение размеров массива. Для удаления отдельных столбцов и строк матрицы используются пустые квадратные скобки [ ]. Примеры удалений приведены в табл. 2.10.

Таблица 2.10

Матрица

Удаление второго столбца

Удаление первой строки

»M = [1 2 3; 4 5 6; 7 8 9]

M =

1 2 3

4 5 6

7 8 9

»M(:, 2) = [ ]

M =

1 3

4 6

7 9

»M(1, :) = [ ]

M =

4 6

7 9

Таблица 2.11

Удаление одинаковых

элементов вектора

Объединение

множеств

Пересечение

множеств

Разность

множеств

»f = [1 1 3 4 4 5 6]

f =

1 1 3 4 4 5 6

»unique(f)

ans =

1 3 4 5 6

»f = [2 3]

f =

2 3

»d = [4 5 6]

d =

4 5 6

»union(f, d)

ans =

2 3 4 5 6

»f = [4 3]

f =

4 3

»d = [4 5 6]

d =

4 5 6

»intersect(d, f)

ans =

4

»f = [4 3]

f =

4 3

»d = [4 5 6]

d =

4 5 6

»setdiff(d, f)

ans =

5 6

Имеется возможность объединения множеств – union(X, Y), пересечения intersect(X, Y), разности – setdiff(X, Y). Можно также удалить одинаковые элементы вектора функцией unique(X). Примеры приведены в табл. 2.11.

Источник: https://studfile.net/preview/16488556/