MATLAB - это высокопроизводительный язык для технических расчетов. Он включает в себя вычисления, визуализацию и программирование в удобной среде, где задачи и решения выражаются в форме, близкой к математической. Типичное использование MATLAB - это:
математические вычисления
создание алгоритмов
моделирование
анализ данных, исследования и визуализация
научная и инженерная графика
разработка приложений, включая создание графического интерфейса
MATLAB - это интерактивная система, в которой основным элементом данных является массив. Это позволяет решать различные задачи, связанные с техническими вычислениями, особенно в которых используются матрицы и вектора, в несколько раз быстрее, чем при написании программ с использованием "скалярных" языков программирования, таких как Си или Фортран.
MATLAB развивался в течении нескольких лет, ориентируясь на различных пользователей. В университетской среде, он представлял собой стандартный инструмент для работы в различных областях математики, машиностроении и науки. В промышленности, MATLAB - это инструмент для высокопродуктивных исследований, разработок и анализа данных.
В MATLAB важная роль отводится специализированным группам программ, называемых toolboxes. Они очень важны для большинства пользователей MATLAB, так как позволяют изучать и применять специализированные методы. Toolboxes - это всесторонняя коллекция функций MATLAB (М-файлов), которые позволяют решать частные классы задач. Toolboxes применяются для обработки сигналов, систем контроля, нейронных сетей, нечеткой логики, вэйвлетов, моделирования и т.д.
Система MATLAB состоит из пяти основных частей.
Язык MATLAB. Это язык матриц и массивов высокого уровня с управлением потоками, функциями, структурами данных, вводом-выводом и особенностями объектно-ориентированного программирования.
Среда MATLAB. Это набор инструментов и приспособлений, с которыми работает пользователь или программист MATLAB. Она включает в себя средства для управления переменными в рабочем пространстве MATLAB, вводом и выводом данных, а также создания, контроля и отладки М-файлов и приложений MATLAB.
Управляемая графика. Это графическая система MATLAB, которая включает в себя команды высокого уровня для визуализации двух- и трехмерных данных, обработки изображений, анимации и иллюстрированной графики. Она также включает в себя команды низкого уровня, позволяющие полностью редактировать внешний вид графики, также как при создании Графического Пользовательского Интерфейса (GUI) для MATLAB приложений.
Библиотека математических функций. Это обширная коллекция вычислительных алгоритмов от элементарных функций, таких как сумма, синус, косинус, комплексная арифметика, до более сложных, таких как обращение матриц, нахождение собственных значений, функции Бесселя, быстрое преобразование Фурье.
Программный интерфейс. Это библиотека, которая позволяет писать программы на Си и Фортране, которые взаимодействуют с MATLAB. Она включает средства для вызова программ из MATLAB (динамическая связь), вызывая MATLAB как вычислительный инструмент и для чтения-записи МАТ-файлов.
Simulink, сопутствующая MATLAB программа, - это интерактивная система для моделирования нелинейных динамических систем. Она представляет собой среду, управляемую мышью, которая позволяет моделировать процесс путем перетаскивания блоков диаграмм на экране и их манипуляцией. Simulink работает с линейными, нелинейными, непрерывными, дискретными, многомерными системами.
Blocksets - это дополнения к Simulink, которые обеспечивают библиотеки блоков для специализированных приложений, таких как связь, обработка сигналов, энергетические системы.
Real-Time Workshop - это программа, которая позволяет генерировать С код из блоков диаграмм и запускать их на выполнение на различных системах реального времени.
1. Матрицы
Лучший способ начать работу с MATLAB — это научиться обращаться с матрицами. В этой главе мы покажем вам, как надо это делать. В MATLAB матрица - это прямоугольный массив чисел. Особое значение придается матрицам 1x1, которые являются скалярами, и матрицам, имеющим один столбец или одну строку, — векторам. MATLAB использует различные способы для хранения численных и не численных данных, однако вначале лучше всего рассматривать все данные как матрицы. MATLAB организован так, чтобы все операции в нем были как можно более естественными. В то время как другие программные языки работают с числами как элементами языка, MATLAB позволяет вам быстро и легко оперировать с целыми матрицами.
Ввод матриц
Вы можете вводить матрицы в MATLAB несколькими способами:
вводить полный список элементов
загружать матрицы из внешних файлов
генерировать матрицы, используя встроенные функции
создавать матрицы с помощью ваших собственных функций в М-файлах
Начтем с введения магической матрицы Дюрера (рис. 1) как списка элементов. Вы должны следовать нескольким основным условиям:
отделять элементы строки пробелами или запятыми
использовать точку с запятой ; для обозначения окончания каждой строки
окружать весь список элементов квадратными скобками, [ ].
Чтобы ввести матрицу Дюрера просто напишите:
А = [16 3 2 13; 5 10 11 8; 967 12; 4 15 14 1]
MATLAB отобразит матрицу, которую мы ввели,
A =
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
Если мы ввели матрицу, то она автоматически запоминается средой MATLAB. И мы можем к ней легко обратиться как к А. Сейчас, когда мы имеем А в рабочем пространстве MATLAB, посмотрим, что делает её такой интересной. Почему она называется магической?
Операции суммирования элементов, транспонирования и диагонализации матрицы
Вы возможно уже знаете, что особые свойства магического квадрата связаны с различными способами суммирования его элементов. Если вы берёте сумму элементов вдоль какой-либо строки или столбца, или вдоль какой-либо из двух главных диагоналей, вы всегда получите одно и тоже число. Давайте проверим это, используя MATLAB. Первое утверждение, которое мы проверим -
sum (А)
MATLAB выдаст ответ
ans =
34 34 34 34
Когда выходная переменная не определена, MATLAB использует переменную ans, коротко от answer - ответ, для хранения результатов вычисления. Мы подсчитали вектор-строку, содержащую сумму элементов столбцов матрицы А. Действительно, каждый столбец имеет одинаковую сумму, магическую сумму, равную 34.
А как насчет сумм в строках? Лучший способ получить сумму в строках - это транспонировать нашу матрицу, подсчитать сумму в столбцах, а потом транспонировать результат. Операция транспонирования обозначается апострофом или одинарной кавычкой. Она зеркально отображает матрицу относительно главной диагонали и меняет строки на столбцы. Таким образом
sum(A') '
вызывает результат вектор-столбец, содержащий суммы в строках
ans = 34
34
34
34
Сумму элементов на главной диагонали можно легко получить с помощью функции diag, которая выбирает эту диагональ.
diag (A)
ans = 16
10
7
1
А функция
sum (diag (А) ) вызывает
ans = 34
Другая диагональ, называемая антидиагональю, не так важна математически, поэтому MATLAB не имеет специальной функции для неё. Но функция, которая вначале предполагалась для использования в графике, fliplr, зеркально отображает матрицу слева направо.
sum(diag(fliplr(A)))
ans = 34
Индексы
Элемент в строке i и столбце j матрицы А обозначается A(i,j). Например, А(4,2) - это число в четвертой строке и втором столбце. Для нашего магического квадрата А(4,2) = 15. Таким образом, можно вычислить сумму элементов в четвертом столбце матрицы А, набрав
A(1,4) + А(2,4) + А(3,4) + А(4,4)
получим
ans = 34
Однако это не самый лучший способ суммирования отдельной строки.
Также возможно обращаться к элементам матрицы через один индекс, A(k). Это обычный способ ссылаться на строки и столбцы матрицы. Но его можно использовать только с двумерными матрицами. В этом случае массив рассматривается как длинный вектор, сформированный из столбцов исходной матрицы.
Так, для нашего магического квадрата, А(8) - это другой способ ссылаться на значение 15, хранящееся в А(4,2).
Если вы пытаетесь использовать значение элемента вне матрицы, MATLAB выдаст ошибку:
t=A(4,5)
??? Index exceeds matrix dimensions.
С другой стороны, если вы сохраняете значение вне матрицы, то размер матрицы увеличивается.
X=A;
X(4,5) = 17
X =
16 3 2 13 0
5 10 11 8 0
9 6 7 12 0
4 15 14 1 17
Оператор двоеточия
Двоеточие : - это один из наиболее важных операторов MATLAB. Он проявляется в различных формах. Выражение
1:10
- это вектор-строка, содержащая целые числа от 1 до 10
123456789 10
Для получения обратного интервала, опишем приращение. Например
100:-7:50
что дает
100 93 86 79 72 65 58 51
ИЛИ
0:pi/4:pi
что даст
О 0.7854 1.5708 2.3562 3.1416
Индексное выражение, включая двоеточие, относится к части матрицы.
A(1:k, j)
это первые k элементов j -го столбца матрицы А.
Так
sum(A(l:4,4))
вычисляет сумму четвертой строки. Но есть и лучший способ. Двоеточие, само по себе, обращается ко всем элементам в строке и столбце матрицы, а слово end — к последней строке или столбцу. Так
sum (А (:, end) )
вычисляет сумму элементов в последнем столбце матрицы А
ans = 34
2. Выражения
Как и большинство других языков программирования, MATLAB предоставляет возможность использования математических выражений, но в отличие от многих из них, эти выражения в MATLAB включают матрицы. Основные составляющие выражения:
переменные
числа
операторы
функции
Переменные
В MATLAB нет необходимости в определении типа переменных или размерности. Когда MATLAB встречает новое имя переменной, он автоматически создает переменную и выделяет соответствующий объем памяти. Если переменная уже существует, MATLAB изменяет ее состав и если это необходимо выделяет дополнительную память. Например,
num_students = 25
создает матрицу 1x1 с именем num_students и сохраняет значение 25 в ее единственном элементе.