В системе MATLAB реализовано два типа арифметических операций. Операции над матрицами определены в соответствии с правилами линейной алгебры, а операции над массивами выполняются поэлементно. Чтобы различать эти операции, операции над массивом предшествует точка. Операции сложения и вычитания над матрицами и массивами дают одинаковый результат. Все операции с матрицами и массивами сведены в таблицу 1.
Таблица 1 – Операции с матрицами и массивами
Знак |
Операция |
Условия выполнения операции |
+ |
Сложение: А + В |
Слагаемые должны быть одинакового размера или одно из слагаемых (любое) может быть скаляром. При этом скаляр добавляется ко всем элементам другого операнда. |
- |
Вычитание: А - В |
Величины А, В должны быть одинакового размера либо одна из них (любая) – скаляр; действия со скаляром выполняются по аналогии с операцией сложения. |
* |
Умножение матриц: А*В |
При умножении матриц или матриц и векторов число столбцов первого сомножителя должно быть равно числу строк второго. Если один из сомножителей – скаляр, то он умножается на все элементы другого сомножителя |
.* |
Умножение массивов: А.*В |
Поэлементное перемножение двух массивов одинакового размера. На скаляр умножаются все элементы |
inv(A) |
Функция обращения матрицы А |
Вычисляется матрица, обратная заданной А. Исходная матрица А должна быть квадратной и невырожденной (det(A)≠0) |
\ |
Решение систем линейных уравнений: АХ=В |
А – квадратная невырожденная матрица размера n×n, В – прямоугольная матрица размера n×k; решение по методу исключения Гаусса имеет вид: Х=А\В. Операция А\В равносильна операции произведению матриц: inv(A)*B. |
.\ |
Левое деление массивов: А.\В |
Результатом является матрица с элементами B(i,j)/A(i,j); матрицы должны быть одинаковых размеров за исключением случая, когда одна из них вырождается в скаляр |
/ |
Решение систем линейных уравнений: ХА=В |
А – квадратная матрица размера n×n, В – прямоугольная матрица размера k×n; решение имеет вид: Х=В/A. Операция В/A равносильна операции: B*inv(A) |
./ |
Правое деление массивов: А./В |
Результатом является матрица с элементами А(i,j)/В(i,j); матрицы должны быть одинаковых размеров за исключением случая, когда одна из них вырождается в скаляр |
^ |
Степень матрицы: A^p |
Если p – целое положительное число, то степень матрицы вычисляется перемножением ее на себя p раз; если p – целое отрицательное число, то тоже самое относится к обратной матрице. Для других значений p вычисление степени матрицы А связано с нахождением ее собственных значений |
.^ |
Степень массива: A.^В |
Результатом является матрица с элементами А(i,j)^В(i,j); матрицы должны быть одинаковых размеров за исключением случая, когда одна из них вырождается в скаляр |
' |
Транспонирование матрицы: А' |
Например, А' – транспонированная матрица А; для комплексных матриц транспонирование дополняется сопряжением |
.' |
Транспонирование массива: А.' |
Для действительных и комплексных массивов строки просто заменяются столбцами; для комплексных массивов операция сопряжения не выполняется |
Вычисление определителя матрицы выполняется с помощью функции det(A).
Рассмотрим некоторые графические возможности системы MATLAB. Сформируем два вектора х и y:
» x=0:0.01:2; y=sin(x);
Вызовем функцию:
» plot(x,y)
Получим на экране график функции (рисунок 5).
Рисунок 5 – График функции y=sin(x)
MATLAB отображает графические объекты в специальных графических окнах, имеющих в заголовке слово Figure. Не убирая с экрана дисплея первое графическое окно, введем с клавиатуры выражение:
» z=cos(x);
» plot(x,z)
Получим новый график функции в том же самом графическом окне (при этом старые оси координат и график пропадают – этого также можно добиться командой clf).
Если нужно второй график провести «поверх первого графика», то перед вторичным вызовом графической функции plot нужно выполнить команду hold on, которая предназначена для удержания текущего графического окна:
» x=0:0.01:2; y=sin(x);
» plot(x,y)
» z=cos(x);
» hold on
» plot(x,z)
Рисунок 6 – Графики функций y=sin(x), z=cos(x), построенные в одном графическом окне
Если нужно одновременно визуализировать несколько графиков так, чтобы они не мешали друг другу, то это можно сделать двумя способами.
Первым вариантом является построение их в разных графических окнах. Для этого перед вторичным вызовом функции plot следует набрать команду figure, которая создает новое графическое окно и заставляет все последующие за ней функции построения графиков выводить их туда.
Вторым решением является использование функции subplot. Эта функция позволяет разбить область вывода графической информации на несколько подобластей, в каждую из которых можно вывести графики различных функций.
Например, для ранее выполненных вычислений с функциями sin и cos построим графики этих двух функций в первой подобласти, а график функции exp(х) – во второй подобласти одного и того же графического окна (рисунок 7):
» w=exp(x);
» subplot(1,2,1); plot(x,y,x,z)
» subplot(1,2,2); plot(x,w)
Рисунок 7 – Графики функций y=sin(x), z=cos(x) и w=exp(x), построенные в двух подобластях одного графического окна
Диапазоны изменения переменных на осях координат этих подобластей независимы друг от друга. Функция subplot принимает три числовых аргумента, первый из которых равен числу рядов подобластей, второй равен числу колонок подобластей, а третий аргумент – номеру подобласти (номер отсчитывается вдоль рядов с переходом на новый ряд по исчерпании). Снять действие функции subplot можно командой:
» subplot(1,1,1)
Рассмотрим дополнительные возможности, связанные с управлением внешним видом графиков – задание цвета и стиля линий, а также размещение различных надписей в пределах графического окна. Например, команды
» x=0:0.1:3; y=sin(x);
» plot(x,y,'r-',x,y,'ko')
позволяют придать графику вид красной сплошной линии (рисунок 8), на которой в дискретных вычисляемых точках проставляют черные окружности.
Рисунок 8 – Построение графика функции y=sin(x) в двух разных стилях
Здесь функция plot дважды строит график одной и той же функции, но в двух разных стилях. Первый из них отмечен как 'r-', что означает проведение линии красным цветом (буква r), а штрих означает проведение сплошной линии. Второй стиль, помечен как 'ko', означает проведение черным цветом (буква k) окружностей (буква o) на месте вычисляемых точек.
В общем случае функция plot (x1, y1, s1, x2, y2, s2, … ) позволяет объединить в одном графическом окне несколько графиков функций y1(x1), y2(x2), … проведя их со стилями s1, s2, … и т. д.
Стили s1, s2,… задаются в виде набора трех символьных маркеров, заключенных в одиночные кавычки (апострофы). Один из этих маркеров задает тип линии (Таблица 2). Другой маркер задает цвет (Таблица 3). Последний маркер задает тип проставляемых «точек» (Таблица 4). Можно указывать не все три маркера. Тогда используются маркеры, установленные по умолчанию. Порядок, в котором указывают маркеры, не является существенным, то есть 'r+-' и '-+r' приводит к одинаковому результату.
Таблица 2 – Маркеры, задающие тип линии
Маркер |
- |
-- |
: |
-. |
Тип линии |
Непрерывная |
Штриховая |
Пунктирная |
Штрихпунктирная |
Таблица 3 – Маркеры, задающие цвет линии
Маркер |
Цвет линии |
Маркер |
Цвет линии |
c |
Голубой |
g |
Зеленый |
m |
Фиолетовый |
b |
Синий |
y |
Желтый |
w |
Белый |
r |
Красный |
k |
Черный |
Таблица 4 – Маркеры, задающие тип точки
Маркер |
. |
+ |
* |
о |
х |
Тип точки |
Точка |
Плюс |
Звездочка |
Кружок |
Крестик |
Теперь перейдем к оформлению осей координат, к надписям на осях. Система MATLAB устанавливает пределы на горизонтальной оси равными тем значениям, что указаны пользователем для независимой переменной. Для зависимой переменной по вертикальной оси MATLAB самостоятельно вычисляет диапазон изменения значений функции. Если мы хотим отказаться от этой особенности масштабирования при построении графиков в системе MATLAB, то мы должны явным образом навязать свои пределы изменения переменных по осям координат. Это делается с помощью функции
axis ( [ xmin, xmax, ymin, ymax ] )
Для проставления различных надписей на полученном рисунке применяют функции xlabеl, ylabеl, title и text. Функция xlabеl создает подпись у горизонтальной оси, функция ylabеl – тоже для вертикальной оси (причем эти надписи ориентированы вдоль осей координат). Если требуется разместить надпись в произвольном месте рисунка, применяем функцию text. Общий заголовок для графика создается функцией title. Кроме того, используя команду grid on, можно нанести измерительную сетку на всю область построения графика. Например, (рисунок. 9):
» x=0:0.1:3; y=sin(x);
» plot(x,y,'r-',x,y,'ko')
» title('Function sin(x) graph');
» xlabel('xcoordinate'); ylabel('sin(x)');
» text(2.1, 0.9, '\leftarrowsin(x)'); grid on
Надпись функцией text помещается начиная от точки с координатами, указанными первыми двумя аргументами. По умолчанию координаты задаются в тех же единицах измерения, что и координаты, указанные на горизонтальной и вертикальной осях. Специальные управляющие символы вводятся внутри текста после символа \ (обратная косая черта).
Рисунок 9 – График функции y=sin(x), построенный в двух стилях, с надписями на координатных осях и на рисунке