Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MATLAB-1.doc
Скачиваний:
0
Добавлен:
18.11.2019
Размер:
295.42 Кб
Скачать
    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.

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