Реферат Курсовая Конспект
МЕТОДИЧЕСКИЕ УКАЗАНИЯ по курсу "Обработка сигналов и изображений" - Методические Указания, раздел Связь, Министерство Образования И Науки Украины Национальный Технический Ун...
|
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ
НАЦИОНАЛЬНЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
"ХАРЬКОВСКИЙ ПОЛИТЕХНИЧЕСКИЙ ИНСТИТУТ"
МЕТОДИЧЕСКИЕ УКАЗАНИЯ
к лабораторной работе № 2 "Вычисления в пакете MatLab с
использованием матриц"
по курсу "Обработка сигналов и изображений"
для студентов специальностей 7.091501, 7.091502, 7.091503 дневной формы обучения
ХАРЬКОВ НТУ "ХПИ" 2006
ЦЕЛЬ ЛАБОРАТОРНЫХ ЗАНЯТИЙ
Знакомство с рабочей средой пакета MatLab и получение практических навыков работы с пакетом при простейших вычислениях с использованием переменных, векторов и матриц.
ОСНОВЫ РАБОТЫ С МАТРИЦАМИ В ПАКЕТЕ MATLAB
3 1 -1
2 4 3
Для изучения простейших операций над матрицами приведем еще несколько примеров. Рассмотрим другие способы ввода. Введите квадратную матрицу размера три так, как описано ниже:
Начните набирать в командной строке
» В = [4 3 -1
Нажмите клавишу <Enter>. Обратите внимание, что пакет ничего не вычислил. Курсор мигает на следующей строке без символа ». Продолжите ввод матрицы построчно, нажимая в конце каждой строки <Enter>. Последнюю строку завершите закрывающей квадратной скобкой, получается:
2 7 0
-5 1 2]
B =
4 3 1
2 7 0
-5 1 2
Еще один способ ввода матриц состоит в том, что матрицу можно трактовать как вектор-строку, каждый элемент которой является вектор-столбцом. Например, матрицу два на три
можно ввести при помощи команды:
» С = [ [3; 4] [-1; 2] [7; 0] ]
С =
3 -1 7
4 2 0
Посмотрите переменные рабочей среды, набрав в командной строке whos:
А 2x3 48 double array
В 3x3 72 double array
С 2x3 48 double array
Итак, в рабочей среде содержится три матрицы, две прямоугольные и одна квадратная.
6 0 6
6 6 3
» R= С - A
R=
0 -2 8
2 -2 -3
Следите за совпадением размерности, иначе получите сообщение об ошибке:
» S = А+В
??? Error using ==> ±
Matrix dimensions must agree.
Для умножения матриц предназначена звездочка:
» Р = С*В
Р =
-25 9 11
20 26 -4
Умножение матрицы на число тоже осуществляется при помощи звездочки, причем умножать на число можно как справа, так и слева:
» Р =А*3
Р =
9 3 -3
6 12 9
» Р =3*А
Р =
9 3 -3
6 12 9
Транспонирование матрицы, так же как и вектора, производится при помощи .', а символ ' означает комплексное сопряжение. Для вещественных матриц эти операции приводят к одинаковым результатам:
» В’
ans =
4 2 -5
3 7 1
-1 0 2
» В. '
ans =
4 2 -5
3 7 1
-1 0 2
I 1.0000 - 9.0000i
»К.'
ans =
1.0000 + 1.OOOOi 3.0000 + 5.OOOOi
2.0000 - 3.OOOOi 1.0000 + 9.OOOOi
» К.'
ans =
I 3.0000 — 5.OOOOi
I 1.0000 — 9.OOOOi
Замечание 2
При вводе вектор-строк их элементы можно разделять или пробелами, или запятыми. При вводе матрицы К применены запятые для более наглядного разделения комплексных чисел в строке.
Возведение квадратной матрицы в целую степень производится с использованием оператора ^:
» В2 = В^2
В2 =
27 32 -6
22 55 -2
-28 -6 9
Проверьте полученный результат, умножив матрицу саму на себя. Убедитесь, что вы освоили простейшие операции с матрицами в MatLab. Найдите значение следующего выражения
(A + С)B3(A -С)T.
Учтите приоритет операций, сначала выполняется транспонирование, потом возведение в степень, затем умножение, а сложение и вычитание производятся в последнюю очередь.
» (А+С)*В^3*(А-С)'
ans =
1848 1914
10290 3612
Решение систем линейных уравнений
В математике ничего не говорится про деление матриц и векторов, однако в MatLab символ используется для решения систем линейных уравнений. Решим систему из трех уравнений с тремя неизвестными:
Введем матрицу коэффициентов системы в массив А, а вектор правой части системы в массив b . Решим систему при помощи при помощи символа :
» х = Аb
х =
1.0000 1.0000 1.0000
Проверьте правильность ответа, умножив матрицу коэффициентов системы А на вектор-столбец х.
3 -3 8 9
-3 3 1 10
Блочную матрицу можно получить и другим способом, если считать, что матрица К состоит из двух столбцов, в первом - матрицы А и С, а во втором - В и D:
» К = [ [А; С] [В; D]]
Обратной задачей к конструированию блочных матриц является задача выделения блоков. Выделение блоков матриц осуществляется индексацией при помощи двоеточия. Введите матрицу
и затем выделите подматрицу с элементами а42, a43, а52, а53, задав номера строк и столбцов при помощи двоеточия:
»Р1=Р(2:3,2:3)
Р1 =
10 12
11 10
Для выделения из матрицы столбца или строки (то есть массива, у которого один из размеров равен единице) следует в качестве одного из индексов использовать номер столбца или строки матрицы, а другой индекс заменить двоеточием без указания пределов. Например, запишите вторую строку матрицы Р в вектор р
»р = Р(2,:)
р =
4 10 12 5
При выделении блока до конца матрицы можно не указывать ее размеры, а использовать элемент end:
»р = Р(2, 2:end)
Р =
10 12 5
Удаление строк и столбцов
В MatLab парные квадратные скобки [ ] обозначают пустой массив, который, в частности, позволяет удалять строки и столбцы матрицы. Для удаления строки следует присвоить ей пустой массив. Удалите, например, первую строку квадратной матрицы:
» М = [2 0 3
1 1 4
6 1 3];
» М(1, :) = [ ];
» М
М =
1 1 4
6 1 3
Обратите внимание на соответствующее изменение размеров массива, которое можно проверить при помощи size:
» size(M) ans =
2 3
Аналогичным образом удаляются и столбцы. Для удаления нескольких идущих подряд столбцов (или строк) им нужно присвоить пустой массив. Удалите второй и третий столбец в массиве М
» М ( : , 2 : 3 ) = [ ]
М =
Индексация существенно экономит время при вводе матриц, имеющих определенную структуру.
2.7. Заполнение матриц при помощи индексации
Выше было описано несколько способов ввода матриц в MatLab. Однако часто бывает проще сгенерировать матрицу, чем вводить ее, особенно если она обладает простой структурой. Рассмотрим пример такой матрицы:
.
Генерация матрицы Т осуществляется в три этапа:
1. Создание массива Т размера пять на пять, состоящего из нулей.
2. Заполнение первой строки единицами.
3. Заполнение части последней строки минус единицами
последнего элемента.
Соответствующие команды MatLab приведены ниже.
» А(1:5, 1:5) = 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 0
» А(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
» А(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 осуществляется при помощи встроенных функций.
Создание матриц специального вида
Заполнение прямоугольной матрицы нулями производится встроенной функцией zeros, аргументами которой являются число строк и столбцов матрицы:
» A+ zeros (3, 6)
A=
0 0 0 0 0 0
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
Единичная матрица инициализируется при помощи функции eye:
» I = еуе (4)
I=
1 0 0 0
0 1 0 0
0 0 1 0
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:
» Е= 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 приводит к созданию квадратной матрицы, состоящей из единиц.
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=[l; 2; 3; 4 ] ;
» D= diag(d)
D = 1 0 0 0
0 2 0 0
0 0 3 0
0 0 0 4
Функция diag служит и для выделения диагонали матрицы в вектор, например
» А = [10 1 2; 1 20 3; 2 3 30];
»d=diag(A)
d =
Поэлементные операции с матрицами
Поскольку векторы и матрицы хранятся в двумерных массивах, то применение математических функций к матрицам и поэлементные операции производятся так же, как для векторов.
Введите две матрицы
, .
Умножение каждого элемента одной матрицы на соответствующий элемент другой производится при помощи оператора .* :
»C =А. *В
C=
-2 10 -8
21 -12 -45
Для деления элементов первой матрицы на соответствующие элементы второй используется оператор ./, а для деления элементов второй матрицы на соответствующие элементы первой служит .:
» Rl = A./B1
R1 =
-2.0000 2.5000 -0.1250
0.4286 -1.3333 -1.8.000
» R2 = А.В1
R2 =
-0.5000 0.4000 -8.0000
2.3333 -0.7500 -0.5556
Поэлементное возведение в степень осуществляется при помощи оператора .^/ Показатель степени может быть числом или матрицей того же размера, что и матрица, возводимая в степень. Во втором случае элементы первой матрицы возводятся в степени, равные элементам второй матрицы.
СПИСОК ЛИТЕРАТУРЫ
1. Дьяконов В.П. MATLAB 6.5 SP1/7.0 Simulink 5/6/ - М.: СОЛОН-Пресс, 2005. – 575 с.
2. Ануфриев И.Е., Смирнов А.Б., Смирнова Е.Н.Самоучитель MatLab 7. - СПб.: БХВ-Петербург, 2005. - 1104 с.
3. Ануфриев И.Е. Самоучитель MatLab 5.3/6x. - СПб.: БХВ-Петербург, 2004.- 736 с.
4. Кетков Ю. MatLab 6x: Программирование численных методов - СПб.: БХВ-Петербург, 2004. - 672 с.
– Конец работы –
Используемые теги: методические, указания, курсу, quot, обработка, сигналов, изображений, quot0.114
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: МЕТОДИЧЕСКИЕ УКАЗАНИЯ по курсу "Обработка сигналов и изображений"
Если этот материал оказался полезным для Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов