- •Введение
- •Командное окно
- •Редактирование командной строки.
- •Длинные командные строки.
- •Вывод на печать командного окна.
- •Запуск внешних программ.
- •!Notepad
- •Команда format.
- •Выражения
- •Переменные.
- •Inf бесконечность
- •Операторы.
- •Функции.
- •Текстовые комментарии и символьные константы.
- •Операции с рабочей областью
- •Операции с файлами
- •Дневник командного окна
- •Операции с векторами и матрицами
- •Оператор «двоеточие».
- •Векторные индексы.
- •Удаление строк и столбцов.
- •Объединение матриц.
- •Транспонирование матриц.
- •Создание матриц с заданными свойствами.
- •Создание вектора равноотстоящих точек.
- •Создание вектора равноотстоящих точек в логарифмическом масштабе.
- •Разреженные матрицы.
- •Графика
- •Команда plot.
- •Графические объекты.
- •Окна изображений.
- •Добавление кривых на существующий график.
- •Управление осями.
- •Разбиение графического окна.
- •Подписи к осям и заголовки.
- •Графики в полярной системе координат.
- •Контурные графики и графики полей градиентов.
- •Создание массивов данных для трехмерной графики.
- •Построение графиков трехмерных поверхностей.
- •Программирование в системе matlab.
- •Основные типы данных.
- •Арифметические операторы и массивы.
- •Операторы отношения.
- •Логические операторы и функции.
- •Приоритет выполнения операторов.
- •Структура файлов сценариев.
- •Структура m-файлов функций.
- •Использование подфункций.
- •Операторная функция.
- •Передача данных через глобальные переменные.
- •Параметры функционального типа.
- •Функции с переменным числом аргументов.
- •Управление потоками.
- •If expression1
- •Диалоговый ввод.
- •Численные методы и обработка данных
- •Решение систем линейных алгебраических уравнений.
- •Решение систем линейных уравнений итерационными методами.
- •Обратная матрица и определитель.
- •Факторизация Холецкого.
- •Lu факторизация.
- •Qr факторизация.
- •Матричная экспонента.
- •Собственные значения и собственные вектора.
- •Нормальная форма Жордана.
- •Разложение Шура.
- •Сингулярное разложение.
- •Численное интегрирование.
- •Представление полиномов в среде matlab.
- •Умножение и деление многочленов.
- •Вычисление производной от многочлена.
- •Решение систем нелинейных уравнений.
- •Преобразование Фурье.
- •Xlabel('time (seconds)')
- •Решение обыкновенных дифференциальных уравнений.
- •Численное решение дифференциальных уравнений в частных производных.
- •Литература
Разбиение графического окна.
Команда subplot, приведенная в предыдущем примере, используется для разбиения графического окна на подокна:
subplot(m,n,p) разбивает графическое окно на mxn подокон, при этом m – число подокон по горизонтали, этом n – число подокон по вертикали, p- номер подокна, в котором будет строиться текущий график (нумерация идет по строкам);
subplot(h) делает подокно с указателем h текущим;
subplot('Position', [left bottom width height]) создает подокно с заданными нормализованными координатами (в пределах от 0.0 до 1.0);
subplot(1,1,1) удаляет все подокна и возвращает графическое окно в обычное состояние.
Следует отметить, что для всех графиков возможна индивидуальная установка дополнительных объектов, например титульных надписей, надписей по осям и т.д.
Подписи к осям и заголовки.
Функции xlabel, ylabel и zlabel добавляют подписи к соответствующим осям, функция title добавляет заголовок в верхнюю часть окна, а функция text вставляет текст в любое место графика. Использование TEX представления позволяет применять греческие буквы, математические символы и различные шрифты. Следующий пример демонстрирует эти возможности.
x = -pi:.1:pi;
y = sin(x);
plot(x, y)
set(gca, 'XTick', -pi:pi/2:pi)
set(gca,'XTickLabel', {'-pi', '-pi/2', '0', 'pi/2', 'pi'})
xlabel('-\pi \leq \Theta \leq \pi')
ylabel('sin(\Theta)')
title('Plot of sin(\Theta)')
text(-pi/4, sin(-pi/4), '\leftarrow sin(-\pi\div4)',...
'HorizontalAlignment', 'left')
set(findobj(gca, 'Type', 'line', 'Color', [0 0 1]),...
'Color', 'red',...
'LineWidth',2)
В этом примере команда findobj находит описатель объекта line, созданного командой plot. Последний оператор set меняет цвет кривой с черного на красный и устанавливает толщину линии равной 2.
Графики в полярной системе координат.
В полярной системе координат любая точка представляется как конец радиус–вектора, исходящего из начала системы координат, имеющего длину и угол . Для построения графика используется команда polar:
t = 0:.01:2*pi;
polar(t, sin(2*t).*cos(2*t),'--r')
В данном примере оператор .* используется для декартового (почленного) умножения массивов.
Контурные графики и графики полей градиентов.
Контурные графики служат для представления на плоскости функции двух переменных вида z(x, y) с помощью линий равного уровня. Они получаются, если трехмерная поверхность пересекается рядом параллельных плоскостей. При этом контурный график представляет собой совокупность проекций линий пересечения на плоскость x, y.
Для построения контурных графиков используется команда contour:
contour(Z) строит график по данным матрицы Z c автоматическим заданием диапазонов изменения x и y;
contour(X, Y, Z) строит график по данным матрицы Z с указанием спецификаций для x и y;
contour(Z, N) и contour(X, Y, Z, N) строят контурные графики с явным заданием N линий равного уровня;
contour(Z, V) и contour(X, Y, Z, V) строят линии равного уровня для высот, указанных значениями элементов вектора V;
[C, h] = contour(...) возвращает контурную матрицу C и вектор указателей графических объектов. Команда clabel использует матрицу C для создания меток.
Для построения графиков полей градиента служит команда quiver:
quiver(u, v) строит векторы в равнорасположенных точках на плоскости (x, y), причем элементы массивов u и v указывают направление и размер векторов;
quiver(x, y, u, v) строит векторы в точках, задаваемых векторами x и y;
quiver(...,scale) автоматически масштабирует векторы, а затем вытягивает их в соответствии с коэффициентом scale.
Рассмотрим в качестве примера построение контурного графика и график поля градиентов для функции z=exp(-x*x-y*y):
[x y] = meshgrid(-2:.2:0,-2:.2:2);
z = x.*exp(-x.^2-y.^2);
[dx, dy] = gradient(z,.2,.2);
subplot(1, 2, 1);
[c h]=contour(x, y, z);
clabel(c, h, 'manual');
subplot(1, 2, 2);
quiver(x, y, dx, dy);
axis([-2 0 -2 2])