Лекция 4 на тему: «Введение в MatLab. Работа с матрицами в MatLab»

advertisement
Лекция 4
по дисциплине
«Информационные технологии»
на тему: «Введение в MatLab.
Работа с матрицами в MatLab»
Мамонова Татьяна Егоровна
http://portal.tpu.ru:7777/SHARED/s/STEPTE
Определения MatLab

MATLAB (сокращение от англ. «Matrix
Laboratory») – пакет прикладных программ для
решения задач технических вычислений и
одноимённый язык программирования,
иcпользуемый в этом пакете.

MATLAB используют более 1 000 000
инженерных и научных работников, он работает
на большинстве современных операционных
систем, включая
1


Операционная среда системы MATLAB x – это
множество интерфейсов, которые поддерживают
связь этой системы с внешним миром.
Язык MATLAB является высокоуровневым
интерпретируемым языком программирования,
включающем основанные на матрицах структуры
данных, широкий спектр функций,
интегрированную среду разработки, объектноориентированные возможности и интерфейсы к
программам, написанным на других языках
программирования.
2
История создания




MATLAB как язык программирования был разработан
Кливом Моулером (англ. Cleve Moler) в конце 1970-х
годов, в университете Нью-Мексико.
Целью разработки служила задача дать студентам
факультета возможность использования программных
библиотек Linpack и EISPACK без необходимости
изучения Фортрана.
Кливом Моулером, Джон Литтл и Стивом Бангертом
переписали MATLAB на C и основали в 1984 компанию
The MathWorks для дальнейшего развития.
Первоначально MATLAB предназначался для
проектирования систем управления (основная
специальность Джона Литтла), но быстро завоевал
популярность во многих других научных и инженерных
областях.
3
Возможности MatLab








диалог с пользователем через командную строку или
графический интерфейс,
просмотр рабочей области и путей доступа,
редактор и отладчик М-файлов,
работа с файлами и оболочкой DOS,
экспорт и импорт данных,
интерактивный доступ к справочной информации,
динамическое взаимодействие с внешними
системами Microsoft Word, Excel Microsoft Word и др.
Реализуются эти интерфейсы через командное окно,
инструментальную панель, системы просмотра
рабочей области и путей доступа, редактор/отладчик
М-файлов, специальные меню и т.п.
4
Применение MatLab
Математика и вычисления

MATLAB предоставляет пользователю большое
количество (несколько сотен) функций для анализа
данных, покрывающие практически все области
математики, в частности:
1)
2)
3)
4)
5)
6)
7)
Матрицы и линейная алгебра
Многочлены и интерполяция
Математическая статистика и анализ данных
Обработка данных
Дифференциальные уравнения
Разреженные матрицы
Целочисленная арифметика
5
Разработка алгоритмов


MATLAB предоставляет удобные средства для
разработки алгоритмов, включая высокоуровневые
с использованием концепций объектноориентированного программирования. В нём
имеются все необходимые средства
интегрированной среды разработки.
Функции для работы с целыми типами данных
облегчают создание алгоритмов для
микроконтроллеров и других приложений, где это
необходимо.
6
Визуализация данных


В составе пакета MATLAB имеется большое
количество функций для построения графиков, в
том числе трёхмерных, визуального анализа
данных и создания анимированных роликов.
Встроенная среда разработки позволяет создавать
графические интерфейсы пользователя с
различными элементами управления, такими как
кнопки, поля ввода и другими.
7
Внешние интерфейсы


Пакет MATLAB включает различные интерфейсы
для получения доступа к внешним
подпрограммам, написанным на других языках
программирования, данным, клиентам и
серверам, общающимся через технологии
Component Object Model или Dynamic Data
Exchange, а также периферийным устройствам,
которые взаимодействуют напрямую с MATLAB.
Многие из этих возможностей известны под
названием MATLAB API
8
Наборы инструментов MatLab

Для MATLAB имеется возможность
создавать специальные наборы
инструментов (англ. toolbox),
расширяющих его функциональность.
Наборы инструментов представляют
собой коллекции функций, написанных на
языке MATLAB для решения
определённого класса задач.
9

Цифровая обработка сигналов, изображений и
данных: DSP Toolbox, Image Processing Toolbox, Wavelet
Toolbox, Communication Toolbox, Filter Design Toolbox –
наборы функций, позволяющих решать широкий спектр
задач обработки сигналов, изображений, проектирования
цифровых фильтров и систем связи.

Системы управления: Control Systems Toolbox, µAnalysis and Synthesis Toolbox, Robust Control Toolbox,
System Identification Toolbox, LMI Control Toolbox, Model
Predictive Control Toolbox, Model-Based Calibration
Toolbox – наборы функций, облегчающих анализ и синтез
динамических систем, проектирование, моделирование и
идентификацию систем управления, включая
современные алгоритмы управления.

Анализ и синтез географических карт, включая
трёхмерные: Mapping Toolbox.
10

Финансовый анализ: GARCH Toolbox, Fixed-Income
Toolbox, Financial Time Series Toolbox, Financial Derivatives
Toolbox, Financial Toolbox, Datafeed Toolbox – наборы
функций, позволяющие быстро и эффективно собирать,
обрабатывать и передавать различную финансовую
информацию.

Сбор и анализ экспериментальных данных: Data
Acquisition Toolbox, Image Acquisition Toolbox, Instrument
Control Toolbox, Link for Code Composer Studio – наборы
функций, позволяющих сохранять и обрабатывать
данные, полученные в ходе экспериментов, в том числе в
реальном времени. Поддерживается широкий спектр
научного и инженерного измерительного оборудования.

Визуализация и представление данных: Virtual Reality
Toolbox – позволяет создавать интерактивные миры и
визуализировать научную информацию с помощью
технологий виртуальной реальности и языка VRML.
11

Средства разработки: MATLAB Builder for COM,
MATLAB Builder for Excel, MATLAB Builder for NET,
MATLAB Compiler, Filter Design HDL Coder –
наборы функций, позволяющих создавать
независимые приложения из среды MATLAB.

Взаимодействие с внешними программными
продуктами: MATLAB Report Generator, Excel Link,
Database Toolbox, MATLAB Web Server, Link for
ModelSim – наборы функций, позволяющие
сохранять данные в различных видов таким
образом, чтобы другие программы могли с ними
работать.
12

Базы данных: Database Toolbox – инструменты
работы с базами данных.

Научные и математические пакеты:
Bioinformatics Toolbox, Curve Fitting Toolbox, FixedPoint Toolbox, Fuzzy Logic Toolbox, Genetic
Algorithm and Direct Search Toolbox, OPC Toolbox,
Optimization Toolbox, Partial Differential Equation
Toolbox, Spline Toolbox, Statistic Toolbox, RF
Toolbox – наборы специализированных
математических функций, позволяющие решать
широкий спектр научных и инженерных задач,
включая разработку генетических алгоритмов,
решения задач в частных производных,
целочисленные проблемы, оптимизацию систем и
другие.
13




Нейронные сети: Neural Network Toolbox –
инструменты для синтеза и анализ нейронных
сетей.
Нечёткая логика: Fuzzy Logic Toolbox –
инструменты для построения и анализа нечётких
множеств.
Символьные вычисления: Symbolic Math
Toolbox – инструменты для символьных
вычислений с возможностью взаимодействия с
символьным процессором программы Maple.
Также существуют тысячи других наборов
инструментов для MATLAB, написанных другими
компаниями и энтузиастами.
14
Командное окно MatLab
15
Главное меню MatLab
16
Инструментальная панель MatLab











создание нового М-файла (New File);
открытие существующего М-файла (Open File);
удаление фрагмента (Cut);
копирование фрагмента (Copy);
вставка фрагмента (Paste);
восстановление только выполненной операции
(Undo);
выполнение отменённой операции (Redo)
вызов приложения Simulink (Open Simulink)
текущая помощь (Help).
текущая директория (Current Directory)
обзор папок (Browse for Folder)
17
Рабочая область MatLab



Рабочая область системы MATLAB –
это область памяти, в которой размещены
переменные системы.
Содержимое этой области можно
просмотреть из командной строки с
помощью команд who и whos.
Команда who выводит только имена
переменных, а команда whos информацию о размерах массивов и типе
переменной.
18
19
Представление массивов различного типа:
 A – трехмерный массив чисел удвоенной точности;
 B – массив разреженной структуры;
 С – массив ячеек;
 S – массив символов;
 patient – массив записей.
20
Сохранение переменных рабочей
области

Команда save позволяет сохранить
содержимое рабочей области в
двоичном MAT-файле,который можнов
дальнейшем вызваль командой load.
Команда save также доступна в качестве
опции Save Workspace меню File.
21
22
Ввод матрицы в MatLab




Вводить небольшие по размеру матрицы удобно
прямо из командной строки.
Для хранения матрицы используется двумерный
массив с именем. При вводе учитывается, что
матрицу можно рассматривать как вектор-столбец
из двух элементов, каждый из которых является
вектор-строкой длиной три.
Следовательно, строки при наборе отделяются
точкой с запятой.
Введём матрицу:
 3 1  1

A  
2 4 3 
23
24

Способ 2.



Ввод матрицы начинается
с открытой скобки [.
Далее, не закрывая
скобки и нажав клавишу
<Enter>, можно перейти к
следующей строке
Способ 3.
состоит в том, что матрицу
можно трактовать как
вектор-строку, каждый

элемент которой является вектор-столбцом.
Например, матрицу два на три можно ввести при
помощи команды:
25
Посмотреть
переменные
рабочей среды
можно набрав в
командной строке
whos:
26
Обращение к элементам матриц в
пакете MatLab



Доступ к элементам матриц
осуществляется при помощи двух
индексов – номеров строки и столбца,
заключенных в круглые скобки, например
С(2, 3).
Элементы матриц могут входить в состав
выражений.
Матрица А размера m на n хранится в
виде вектора длины mn, в котором
элементы матрицы расположены один за
другим по столбцам:
[А(1,1) А(2,1) ... А(m,1) ... А(1,n) А(2,n) ... А(m,n)].
27
Для доступа к элементам матрицы можно
использовать один индекс, задающий порядковый
номер элемента матрицы в векторе.
 Матрица С, определенная ранее, содержится в
векторе
[C(1,1) C(2,1) C(1,2) С(2,2) С(1,3) С(2,3)],
который имеет шесть компонент.
 Доступ к элементам матрицы осуществляется
следующим образом:

28
Операции над матрицами в пакете
MatLab

1)
2)
При использовании матричных операций
следует помнить:
для сложения или вычитания матрицы
должны быть одного размера,
при перемножении число столбцов
первой матрицы обязано равняться
числу строк второй матрицы.
29
Сложение и вычитание матриц


Сложение и вычитание матриц, так же как чисел и
векторов, осуществляется при помощи знаков
плюс и минус.
Следует следить за совпадением размерности,
иначе получите сообщение об ошибке.
30
Умножение матриц

Умножение матрицы на
число тоже
осуществляется при
помощи звездочки, причем
умножать на число можно
как справа, так и слева:

Транспонирование матрицы, так же как и
вектора, производится при помощи .‘.

Символ ' означает комплексное сопряжение.
Для вещественных матриц эти операции
приводят к одинаковым результатам.

31

1)
2)

Комплексно-сопряженная
матрица получается из
исходной в два этапа:
выполняется
транспонирование исходной
матрицы,
все комплексные числа
заменяются на комплексносопряженные.
Сопряжение и
транспонирование матриц,
содержащих комплексные
числа, приведут к созданию
разных матриц.
Замечание:
При вводе вектор-строк их элементы
можно разделять или
пробелами, или запятыми.

32

Возведение квадратной матрицы в целую
степень производится с использованием
оператора ^:
33
Умножение матриц и векторов

Вектор-столбец или вектор-строка в MatLab
являются матрицами, у которых один из размеров
равен единице, поэтому все вышеописанные
операции применимы и для умножения матрицы на
вектор-столбец или вектор-строки на матрицу.
34
Блочные матрицы
Блочные матрицы – это матрицы, составленные
из непересекающихся подматриц (блоков).
 Пример:
Создать блочную матрицу

если
1 2 

A  
3 4
A B

K  
C D
 2 0

B  
0 5
 3  3

C  
  3 3
8 9 

D  
1 10 
35
Решение:
36




Способ 2. Блочную матрицу можно получить, если
считать, что матрица К состоит из двух столбцов, в
первом - матрицы А и С, а во втором – В и D: К =
[[А; С] [В; D]].
Обратной задачей к конструированию блочных
матриц является задача выделения блоков.
Выделение блоков матриц осуществляется
индексацией при помощи двоеточия.
Пусть
 1 2 0 2


 4 10 12 5 
P
0 11 10 5 


 3 3 4 5



Необходимо выделить подматрицу с
элементами a22,a23,a32, a33, задав номера строк и
столбцов при помощи двоеточия:
37
Решение:
38

Для выделения из матрицы столбца или строки
(то есть массива, у которого один из размеров
равен единице) следует в качестве одного из
индексов использовать номер столбца или строки
матрицы, а другой индекс заменить двоеточием
без указания пределов.

При выделении блока до конца матрицы можно не
указывать ее размеры, а использовать элемент
end.
39
Удаление строк и столбцов



В MatLab парные
квадратные скобки [ ]
обозначают пустой массив,
который, в частности,
позволяет удалять строки и
столбцы матрицы.
Для удаления строки
следует присвоить ей пустой
массив.
Для удаления нескольких
идущих подряд столбцов
(или строк) им нужно
присвоить пустой массив.
40
Заполнение матриц при помощи
индексации
Часто бывает проще сгенерировать матрицу, чем
вводить ее, особенно если она обладает простой
структурой.
1 1 1 1 1 


Пример

0
T  0

0
0

0 0 0 0
0 0 0 0

0 0 0 0
0  1  1  1
Генерация матрицы Т осуществляется в три этапа:
1. Создание массива T размера пять на пять,
состоящего из нулей.
2. Заполнение первой строки единицами.
3. Заполнение части последней строки минус
единицами до последнего элемента.
41
42
Создание матриц специального вида

Заполнение прямоугольной матрицы нулями
производится встроенной функцией zeros,
аргументами которой являются число строк и
столбцов матрицы
>>A = zeros(3, 6)
Один аргумент функции zeros приводит к
образованию квадратной матрицы заданного
размера.
Единичная матрица инициализируется при помощи
функции eye.
 Функция eye с двумя аргументами создает
прямоугольную матрицу, у которой на главной
диагонали стоят единицы, а остальные элементы
равны нулю.

43
Матрица, состоящая из единиц, образуется в
результате вызова функции ones.
>>E = ones(3, 7)
 Использование одного аргумента в ones
приводит к созданию квадратной матрицы,
состоящей из единиц.

44
Результатом функции rand является матрица чисел,
распределенных случайным образом между нулем и
единицей, а функции randn – матрица чисел,
распределенных по нормальному закону.
>>R = rand(3, 5)
 Один аргумент функций rand и randn приводит к
формированию квадратных матриц.


Функция diag формирует диагональную матрицу из
вектор-столбца или вектор-строки, располагая их
элементы по диагонали матрицы.
45
Функция diag служит и для выделения диагонали
матрицы в вектор.
Например

46
Поэлементные операции с матрицами
Т.к. векторы и матрицы хранятся в двумерных
массивах, то применение математических функций к
матрицам и поэлементные операции производятся
так же, как для векторов.
 Единственное отличие – точка перед
соответствующей операцией.
Например, умножение каждого элемента одной
матрицы на соответствующий элемент другой
производится при помощи оператора .*
Для деления элементов первой матрицы на
соответствующие элементы второй используется
оператор ./, а для деления элементов второй
матрицы на соответствующие элементы первой
служит .\

47
Визуализация матриц


Матрицы с достаточно большим количеством
нулей называются разреженными. Часто
необходимо знать, где расположены ненулевые
элементы, т.е. получить так называемый шаблон
матрицы. Для этого в MatLab служит функция spy.
После выполнения команды spy на экране
появляется графическое окно Figure No. На
вертикальной и горизонтальной осях отложены
номера строк и столбцов. Ненулевые элементы
обозначены маркерами, внизу графического окна
указано число ненулевых элементов (nz = 6).
48
49




Наглядную информацию о соотношении величин
элементов матрицы дает функция imagesc,
Данная функция интерпретирует матрицу как
прямоугольное изображение.
Каждый элемент матрицы представляется в виде
квадрата, цвет которого соответствует величине
элемента.
Для того чтобы узнать соответствие цвета и
величины элемента следует использовать
команду colorbar, выводящую рядом с
изображением матрицы шкалу цвета.
50
51
Спасибо за внимание
Download