- •Введение
- •Командное окно
- •Редактирование командной строки.
- •Длинные командные строки.
- •Вывод на печать командного окна.
- •Запуск внешних программ.
- •!Notepad
- •Команда format.
- •Выражения
- •Переменные.
- •Inf бесконечность
- •Операторы.
- •Функции.
- •Текстовые комментарии и символьные константы.
- •Операции с рабочей областью
- •Операции с файлами
- •Дневник командного окна
- •Операции с векторами и матрицами
- •Оператор «двоеточие».
- •Векторные индексы.
- •Удаление строк и столбцов.
- •Объединение матриц.
- •Транспонирование матриц.
- •Создание матриц с заданными свойствами.
- •Создание вектора равноотстоящих точек.
- •Создание вектора равноотстоящих точек в логарифмическом масштабе.
- •Разреженные матрицы.
- •Графика
- •Команда plot.
- •Графические объекты.
- •Окна изображений.
- •Добавление кривых на существующий график.
- •Управление осями.
- •Разбиение графического окна.
- •Подписи к осям и заголовки.
- •Графики в полярной системе координат.
- •Контурные графики и графики полей градиентов.
- •Создание массивов данных для трехмерной графики.
- •Построение графиков трехмерных поверхностей.
- •Программирование в системе matlab.
- •Основные типы данных.
- •Арифметические операторы и массивы.
- •Операторы отношения.
- •Логические операторы и функции.
- •Приоритет выполнения операторов.
- •Структура файлов сценариев.
- •Структура m-файлов функций.
- •Использование подфункций.
- •Операторная функция.
- •Передача данных через глобальные переменные.
- •Параметры функционального типа.
- •Функции с переменным числом аргументов.
- •Управление потоками.
- •If expression1
- •Диалоговый ввод.
- •Численные методы и обработка данных
- •Решение систем линейных алгебраических уравнений.
- •Решение систем линейных уравнений итерационными методами.
- •Обратная матрица и определитель.
- •Факторизация Холецкого.
- •Lu факторизация.
- •Qr факторизация.
- •Матричная экспонента.
- •Собственные значения и собственные вектора.
- •Нормальная форма Жордана.
- •Разложение Шура.
- •Сингулярное разложение.
- •Численное интегрирование.
- •Представление полиномов в среде matlab.
- •Умножение и деление многочленов.
- •Вычисление производной от многочлена.
- •Решение систем нелинейных уравнений.
- •Преобразование Фурье.
- •Xlabel('time (seconds)')
- •Решение обыкновенных дифференциальных уравнений.
- •Численное решение дифференциальных уравнений в частных производных.
- •Литература
Создание массивов данных для трехмерной графики.
В приведенном выше примере функция meshgrid используется при создании матриц x и y, которые служат для построения трехмерных графиков. Формат команды meshgrid:
[X, Y] = meshgrid(x, y) преобразует область определения, заданную векторами x и y, в матрицы X и Y, используемых при вычислении функции двух переменных и построении трехмерных графиков. Строки матрицы X дублируют вектор x, а столбцы Y – вектор y;
[X,Y] = meshgrid(x) – аналогична [X,Y] = meshgrid(x,x);
[X, Y, Z] = meshgrid(x, y, z) возвращает трехмерные массивы, используемые для вычисления функций трех переменных и построения трехмерных графиков.
Построение графиков трехмерных поверхностей.
Команда plot3 является трехмерным аналогом команды plot. Она строит аксонометрическое изображение поверхностей и представлена следующими формами:
plot3(x, y, z) строит массив точек, представленных векторами x, y, z и соединяет их отрезками прямых;
plot3(X, Y, Z)строит линии по точкам, координаты которых берутся из столбцов матриц X, Y, Z.
В качестве примера рассмотрим построение трехмерной спирали и графика функции z = x*x+y*y:
subplot(1, 2, 1);
t = 0:pi/50:10*pi;
plot3(sin(t), cos(t), t);
axis square; grid on; box on;
subplot(1,2,2);
[x y]=meshgrid([-3:.25:3]);
z=x.^2+y.^2;
plot3(x, y, z);
axis tight; box on;
Наиболее представительными и наглядными являются сетчатые графики трехмерных поверхностей с заданной или функциональной окраской. Для построения сетчатых параметрических поверхностей используются команды mesh, meshc, и meshz:
mesh(X, Y, Z, C) строит сетчатую поверхность Z(X, Y), цвет определяется матрицей C. Если X и Y – векторы, то их размерность должна определяться соотношениями: length(X) = n и length(Y) = m, где
[m, n] = size(Z). В этом случае точки пересечения сеточных линий имеют координаты (X(j), Y(i), Z(i, j)), а X и Y соответствуют столбцам и строкам матрицы Z соответственно. Если X и Y – матрицы, то узлы сетки имеют координаты (X(i, j), Y(i, j), Z(i, j));
mesh(X, Y, Z) – аналог предыдущей команды, цвет определяется высотой поверхности;
mesh(Z) – строит сетчатую поверхность, используя по умолчанию соотношения: X = 1:n и Y = 1:m, где [m, n] = size(Z);
meshс(…)– помимо графика трехмерной поверхности строит ее проекцию в виде линий равного уровня (графика типа contour);
meshz(…)– строит трехмерную поверхность в виде многочисленных столбиков.
В качестве примера рассмотрим построение графика функции sin(r)/r:
[X, Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
subplot(1, 2, 1);
mesh(Z, 'EdgeColor', 'k');
subplot(1, 2, 2);
surfl(X, Y, Z);
shading interp; colormap(gray);
здесь константа eps используется для того, чтобы избежать деления на ноль. Команда surfl строит сетчатые графики с использованием закраски ячеек сетки и подсветкой от точечного источника света. Команда colormap(gray) задает окраску тонами серого цвета, а команда shading interp обеспечивает устранение изображения сетки и задает интерполяцию для оттенков цвета объемной поверхности.