Лаб_практикум_ОВИ_03_06_13
.pdf1 |
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