Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лаб_практикум_ОВИ_03_06_13

.pdf
Скачиваний:
60
Добавлен:
14.04.2015
Размер:
4.1 Mб
Скачать

1

4

2

0

3

3

8

9

A

1

4

 

, B

0

5

 

, C

3

3

 

, D

1

10

 

 

 

 

 

 

 

 

 

A

B

и создайте из них блочную матрицу K

.

C

D

Учитывая, что матрица К состоит из двух строк, в первой строке матрицы А и B, а во второй С и D, блочную матрицу можно сформировать следующим образом:

» К = [А В; С D]

K =

-1

4

2

0

-1

4

0

5

3

-3

8

9

-3

3

1

10

Блочную матрицу можно получить и другим способом, если считать,

что матрица K состоит из двух столбцов, в первом матрицы А и С, а во втором В и D:

» K = [[А; С] [В; D]]

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

1

2

0

2

 

4

10

12

5

 

 

 

P

0

11

10

5

 

 

 

 

 

 

 

 

9

2

3

5

 

 

 

 

 

51

 

 

 

и затем выделите подматрицу с элементами a22 , a23 , a32 , a33 , задав номера строк и столбцов при помощи двоеточия:

»Р1 = Р(2:3,2:3)

Р1 =

1012

1110

Для выделения из матрицы столбца или строки (то есть массива, у

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

»p = P(2, :)

p =

4 10 12 5

При выделении блока до конца матрицы можно не указывать ее размеры, а использовать элемент end:

»p = Р(2, 2:end) p =

10 12 5

3.1.7. Удаление строк и столбцов

В MATLAB парные квадратные скобки [ ] обозначают пустой массив, который, в частности, позволяет удалять строки и столбцы матрицы. Для удаления строки следует присвоить ей пустой массив.

Удалите, например, первую строку квадратной матрицы:

52

»М =[2 0 3; 1 1 4; 6 1 3];

»M(1,:)=[];

»M

M =

1 1 4

6 1 3

Обратите внимание на соответствующее изменение размеров массива, которое можно проверить при помощи size:

» size(M)

ans =

2 3

Аналогичным образом удаляются и столбцы. Для удаления нескольких идущих подряд столбцов (или строк) им нужно присвоить пустой массив. Удалите второй и третий столбец в массиве M

» М(:, 2:3) = []

M =

1

6

Индексация существенно экономит время при вводе матриц,

имеющих определенную структуру.

3.1.8. Заполнение матриц при помощи индексации

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

Однако часто бывает проще сгенерировать матрицу, чем вводить ее,

53

особенно если она обладает простой структурой. Рассмотрим пример такой матрицы:

1

1

1

1

1

 

 

0

0

0

0

0

 

 

 

T

0

0

0

0

0

.

 

 

 

 

 

 

 

0

0

0

0

0

 

 

0

0

1

1

 

 

 

1

Генерация матрицы Т осуществляется в три этапа:

1.Создание массива T размера пять на пять, состоящего из нулей.

2.Заполнение первой строки единицами.

3.Заполнение части последней строки минус единицами до последнего элемента.

Соответствующие команды MATLAB приведены ниже.

» A(1:5, 1:5) = 0

A=

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

» A(1, :) = 1

A=

1

1

1

1

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

54

» A(end, 3:end) = -1 A=

1

1

1

1

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

-1 -1 -1

Создание некоторых специальных матриц в MATLAB

осуществляется при помощи встроенных функций.

3.1.9. Создание матриц специального вида

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

» A = zeros(2, 6) A =

0 0 0 0 0 0

0 0 0 0 0 0

Один аргумент функции zeros приводит к образованию квадратной матрицы заданного размера:

» A = zeros(3)

A =

0 0 0

0 0 0

0 0 0

55

Единичная матрица инициализируется при помощи функции eye:

» I = eye(3)

I=

1 0 0

0 1 0

0 0 1

Функция eye с двумя аргументами создает прямоугольную матрицу,

у которой на главной диагонали стоят единицы, а остальные элементы равны нулю:

» I = eye(4, 8)

I =

1 0 0 0 0 0 0 0

0 1 0 0 0 0 0 0

0 0 1 0 0 0 0 0

0 0 0 1 0 0 0 0

Матрица, состоящая из единиц, образуется в результате вызова

функции ones:

» E = ones(3, 7)

E =

1 1 1 1 1 1 1

1 1 1 1 1 1 1

1 1 1 1 1 1 1

Использование одного аргумента в ones приводит к созданию квадратной матрицы, состоящей из единиц.

56

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

функции randn — матрица чисел, распределенных по нормальному закону:

» R = rand(3, 5) R =

0.9501 0.4860 0.4565 0.4447 0.9218

0.2311 0.8913 0.0185 0.6154 0.7382

0.6068 0.7621 0.8214 0.7919 0.1763

Один аргумент функций rand и randn приводит к формированию квадратных матриц.

Часто возникает необходимость создания диагональных матриц, т.е.

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

строки, располагая их элементы по диагонали матрицы:

»d = [1; 2; 3; 4];

»D = diag(d)

D =

1 0 0 0

0 2 0 0

0 0 3 0

0 0 0 4

Функция diag служит и для выделения диагонали матрицы в вектор,

например

» A = [10 1 2; 1 20 3; 2 3 30];

57

» d = diag(A)

d =

10

20

30

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

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

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

2

5

1

1 2

8

A

3

4

9

 

, B

7

3

.

 

 

 

5

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

» С = А.*В

С =

-2 10 -8 21 -12 -45

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

» R1 = А./В1

58

R1 =

-2.0000 2.5000 -0.1250 0.4286 -1.3333 -1.8000

» R2 = А.\В1

R2 =

-0.5000 0.4000 -8.0000 2.3333 -0.7500 -0.5556

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

3.1.11. Визуализация матриц

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

MATLAB служит функция spy. Посмотрим шаблон матрицы G

2

1

0

0

0

0

0

 

1

2

1

0

0

0

0

 

 

 

 

0

1

2

1

0

0

0

 

 

 

 

 

 

 

 

 

 

G 0 0

1

2

1

0

0

 

0

0

0

1

2

1

0

 

 

 

 

0

0

0

0

1

2

1

 

 

0

0

0

0

0

1

2

 

 

 

» spy(G)

После выполнения команды spy на экране появляется графическое окно Figure No. 1. На вертикальной и горизонтальной осях отложены

59

номера строк и столбцов. Ненулевые элементы обозначены маркерами,

внизу графического окна указано число ненулевых элементов (nz = 19).

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

цвет которого соответствует величине элемента. Для того чтобы узнать соответствие цвета и величины элемента, следует использовать команду colorbar, выводящую рядом с изображением матрицы шкалу цвета (Insert

(в графическом окне Figure No. 1), colorbar). Наконец, для печати на монохромном принтере удобно получить изображение в оттенках серого цвета, используя команду colormap(gray) (Edit (в графическом окне

Figure No. 1), Colormap, Colormap Editor, Tools, gray). Мы будем работать с матрицей G. Набирайте команды, указанные ниже, и следите за состоянием графического окна:

»imagesc(G)

»colorbar

»colormap(gray)

Врезультате получается наглядное представление матрицы.

3.2.Индивидуальные задания

1.Создайте журнал выполнения лабораторной работы.

2.Введите две матрицы A и B размерностью три на три.

3.Выполните над матрицами операции сложения, вычитания и умножения.

4.Выполните транспонирование матриц A и B.

5.Создайте из матриц A и B матрицу C с комплексными числами,

причем, элементы матрицы A должны стать действительными частями

60

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