• Регистрация
MaximSidorov
MaximSidorov +118.29
н/д

Справочник по MATLAB - Графические команды и функции (В.Г.Потемкин)

14.05.2019

Информация в данной статье относится к релизам программы MATLAB ранее 2016 года, и поэтому может содержать устаревшую информацию в связи с изменением функционала инструментов. С более актуальной информацией вы можете ознакомиться в разделе документация MATLAB на русском языке.

В состав системы MATLAB входит мощная графическая подсистема, которая поддерживает как средства визуализации двумерной и трехмерной графики на экран терминала, так и средства презентационной графики. Следует выделить несколько уровней работы с графическими объектами. В первую очередь это команды и функции, ориентированные на конечного пользователя и предназначенные для построения графиков в прямоугольных и полярных координатах, гистограмм и столбцовых диаграмм, трехмерных поверхностей и линий уровня, анимации. Графические команды высокого уровня автоматически контролируют масштаб, выбор цветов, не требуя манипуляций со свойствами графических объектов. Соответствующий низкоуровневый интерфейс обеспечивается дескрипторной графикой, когда каждому графическому объекту ставится в соответствие графическая поддержка (дескриптор), на который можно ссылаться при обращении к этому объекту. Используя дескрипторную графику, можно создавать меню, кнопки вызова, текстовые панели и другие объекты графического интерфейса. 

 

Из-за ограниченного объема данного справочного пособия в него включены только графические команды и функции с минимальными элементами дескрипторной графики. Заинтересованному читателю следует обратиться к документации по системе MATLAB, и в первую очередь к только что вышедшей из печати книге “Using MATLAB Graphics” (Natick, 1996).

Элементарные графические функции системы MATLAB позволяют построить на экране и вывести на печатающее устройство следующие типы графиков: линейный, логарифмический, полулогарифмический, полярный.

Для каждого графика можно задать заголовок, нанести обозначение осей и масштабную сетку.

Двумерные графики

Трехмерные графики

В системе MATLAB предусмотрено несколько команд и функций для построения трехмерных графиков. Значения элементов числового массива рассматриваются как z-координаты точек над плоскостью, определяемой координатами x и y. Возможно несколько способов соединения этих точек. Первый из них - это соединение точек в сечении (функция plot3), второй - построение сетчатых поверхностей (функции mesh и surf). Поверхность, построенная с помощью функции mesh, - это сетчатая поверхность, ячейки которой имеют цвет фона, а их границы могут иметь цвет, который определяется свойством EdgeColor графического объекта surface. Поверхность, построенная с помощью функции surf, - это сетчатая поверхность, у которой может быть задан цвет не только границы, но и ячейки; последнее управляется свойством FaceColor графического объекта surface. Уровень изложения данной книги не требует от читателя знания объектно-ориентированного программирования. Ее объем не позволяет в полной мере описать графическую подсистему, которая построена на таком подходе. Заинтересованному читателю рекомендуем обратиться к документации по системе MATLAB, и в первую очередь к только что вышедшей из печати книге Using MATLAB Graphics (Natick, 1996).

Надписи и пояснения к графикам

Специальная графика

Раздел специальной графики включает графические команды и функции для построения столбцовых диаграмм, гистограмм, средств отображения векторов и комплексных элементов, вывода дискретных последовательностей данных, а также движущихся траекторий как для двумерной, так и для трехмерной графики. Этот раздел получил свое дальнейшее развитие в версии системы MATLAB 5.0, где специальные графические средства улучшены и существенно расширены.

Двумерные графики

 

Наверх

PLOT - график в линейном масштабе

Синтаксис:

plot(y)
plot(x, y)
plot(x, y, s)
plot(x1, y1, s1, x2, y2, s2, ...)

Описание:

Команда plot(y) строит график элементов одномерного массива y в зависимости от номера элемента; если элементы массива y комплексные, то строится график plot(real(y), imag(y)). Если Y - двумерный действительный массив, то строятся графики для столбцов; в случае комплексных элементов их мнимые части игнорируются.

Команда plot(x, y) соответствует построению обычной функции, когда одномерный массив x соответствует значениям аргумента, а одномерный массив y - значениям функции. Когда один из массивов X или Y либо оба двумерные, реализуются следующие построения:

  • если массив Y двумерный, а массив x одномерный, то строятся графики для столбцов массива Y в зависимости от элементов вектора x;
  • если двумерным является массив X, а массив y одномерный, то строятся графики столбцов массива X в зависимости от элементов вектора y;
  • если оба массива X и Y двумерные, то строятся зависимости столбцов массива Y от столбцов массива X.

Команда plot(x, y, s) позволяет выделить график функции, указав способ отображения линии, способ отображения точек, цвет линий и точек с помощью строковой переменной s, которая может включать до трех символов из следующей таблицы:

Тип линии Тип точки Цвет
Непрерывная -
Штриховая --
Двойной пунктир :
Штрих-пунктирная -.
Точка .
Плюс +
Звездочка *
Кружок o
Крестик х
Желтый y
Фиолетовый m
Голубой c
Красный r
Зеленый g
Синий b
Белый w
Черный k

Если цвет линии не указан, он выбирается по умолчанию из шести первых цветов, с желтого до синего, повторяясь циклически.

Команда plot(x1, y1, s1, x2, y2, s2, ...) позволяет объединить на одном графике несколько функций y1(x1), y2(x2), ..., определив для каждой из них свой способ отображения.

Обращение к командам plot вида plot(x, y, s1, x, y, s2) позволяет для графика y(x) определить дополнительные свойства, для указания которых применения одной строковой переменной s1 недостаточно, например при задании разных цветов для линии и для точек на ней.

Примеры:

Построим график функции y = sin(x) на отрезке [-p p ] с шагом p /500:

x = -pi:pi/500:pi;
y = sin(x);
plot(y) % рис. а
plot(x, y) % рис. б

График на рис. а отображает значения одномерного массива y, состоящего из 1001 элемента, как функцию от номера элемента; график на рис. б отображает значения того же массива как функцию элементов массива x.

а) image1001.gif (1562 bytes)
б) image1002.gif (1827 bytes)

Рассмотрим различные способы применения функции plot(x, y) на примере графиков двух функций y1 = sin(x) и y2 = xsin(x):

x1 = -pi:pi/500:pi;
y1 = sin(x1);
y2 = x1.*sin(x1);
plot(x1',[y1' y2']) % рис. в
plot( [y1' y2'], x1') % рис. г

в) image1003.gif (2505 bytes)
г) image1004.gif (1888 bytes)

x2 = x1/2;
y2 = x2.*sin(x2);
plot([x1' x2'], [y1' y2']) % рис. д

image1005.gif (2142 bytes)

д)

Сопутствующие функции и команды: LOGLOG, SEMILOGX, SEMILOGY, POLAR.

 

Наверх

LOGLOG - график в логарифмическом масштабе

Синтаксис:

loglog(x, y)
loglog(x, y, s)
loglog(x1, y1, s1, x2, y2, s2, ...)

Описание:

Команды loglog(...) равносильны функциям plot, за исключением того, что они используют по обеим осям логарифмический масштаб вместо линейного.

Примеры:

Построим график y = exp(x) в логарифмическом масштабе:

x = logspace(-1, 2);
loglog(x, exp(x))
grid

Сопутствующие функции и команды: PLOT, SEMILOGX, SEMILOGY.

 

Наверх

SEMILOGX, SEMILOGY - график в полулогарифмическом масштабе

Синтаксис:

semilogx(x, y) semilogy(x, y)
semilogx(x, y, s) semilogy(x, y, s)
semilogx(x1, y1, s1, x2, y2, s2, ...) semilogy(x1, y1, s1, x2, y2, s2, ...)

Описание:

Команды semilogx(...) используют логарифмический масштаб по оси x и линейный масштаб по оси y.

Команды semilogy(...) используют логарифмический масштаб по оси y и линейный масштаб по оси x.

Примеры:

Построим график y = exp(x) в полулогарифмическом масштабе по оси y:

x = 0:0.1:100;
semilogy(x, exp(x))
grid

image1007.gif (3577 bytes)

Сопутствующие функции и команды: PLOT, LOGLOG.

 

Наверх

POLAR - график в полярных координатах

Синтаксис:

polar(phi, rho)
polar(phi, rho, s)

Описание:

Команды polar(...) реализуют построение графиков в полярных координатах, задаваемых углом phi и радиусом pho.

Примеры:

Построим график функции rho = sin(2 * phi) * cos(2 * phi) в полярных координатах

phi = 0:0.01:2 * pi;
polar(phi, sin(2 * phi). * cos(2 * phi))

image1008.gif (4870 bytes)

Сопутствующие функции и команды: PLOT, LOGLOG.

 

 

Трехмерные графики

 

Наверх

PLOT3 - построение линий и точек в трехмерном пространстве

Синтаксис:

plot3(x, y, z)
plot3(X, Y, Z)
plot3(x, y, z, s)
plot3(x1, y1, z1, s1, x2, y2, z2, s2, ...)

Описание:

Команды plot3(...) являются трехмерными аналогами функции plot(...).

Команда plot3(x, y, z), где x, y, z - одномерные массивы одинакового размера, строит точки с координатами x(i), y(i), z(i) и соединяет их прямыми линиями.

Команда plot3(X, Y, Z), где X, Y, Z - двумерные массивы одинакового размера, строит точки с координатами x(i, :), y(i, :), z(i, :) для каждого столбца и соединяет их прямыми линиями.

Команда plot3(x, y, z, s) позволяет выделить график функции z(x, y), указав способ отображения линии, способ отображения точек, цвет линий и точек с помощью строковой переменной s, которая может включать до трех символов из следующей таблицы.

Тип линии Тип точки Цвет
Непрерывная -
Штриховая --
Двойной пунктир :
Штрих-пунктирная -.
Точка .
Плюс +
Звездочка *
Кружок o
Крестик х
Желтый y
Фиолетовый m
Голубой c
Красный r
Зеленый g
Синий b
Белый w
Черный k

Если цвет линии не указан, он выбирается по умолчанию из шести первых цветов, с желтого до синего, повторяясь циклически.

Команда plot3(x1, y1, z1, s1, x2, y2, z2, s2, ...) позволяет объединить на одном графике несколько функций z1(x1, y1), z2(x2, y2), ..., определив для каждой из них свой способ отображения.

Обращение к команде plot3 вида plot3(x, y, z, s1, x, y, z, s2) позволяет для графика z(x, y) определить дополнительные свойства, для указания которых применения одной строковой переменной s1 недостаточно, например при задании разных цветов для линии и для точек на ней.

Примеры:

Построим график функции z = x * exp(-x2 - y2) в трехмерном пространстве.

[ X, Y ] = meshgrid([ -2 : 0.1 : 2 ]);
Z = X .* exp(- X .^ 2 - Y .^ 2);
plot3(X, Y, Z)

image1009.gif (4679 bytes)

Сопутствующие функции и команды: PLOT, AXIS, VIEW, MESH, SURF.

 

Наверх

MESHGRID - формирование двумерных массивов X и Y

Синтаксис:

[X, Y] = meshgrid(x, y)
[X, Y] = meshgrid(x)

Описание:

Функция [X, Y] = meshgrid(x, y) задает сетку на плоскости x-y в виде двумерных массивов X, Y, которые определяются одномерными массивами x и y. Строки массива X являются копиями вектора x, а столбцы - копиями вектора y. Формирование таких массивов упрощает вычисление функций двух переменных, позволяя применять операции над массивами.

Функция [X, Y] = meshgrid(x) представляет собой упрощенную форму записи для функции [X, Y] = meshgrid(x, x).

Примеры:

Определим двумерные массивы и вычислим функцию image1010.gif (260 bytes), заданную на квадрате -2 <= x <= 2, -2 <= y <= 2.

[X, Y] = meshgrid(-2 : 0.2 : 2);
Z = X .* exp(-X .* 2 - Y.* 2);

Сопутствующие функции и команды: MESH, SURF.

 

Наверх

MESH, MESHC, MESHZ - трехмерная сетчатая поверхность

Синтаксис:

mesh(X, Y, Z, C) meshc(X, Y, Z, C) meshz(X, Y, Z, C)
mesh(x, y, Z, C ) meshc(x, y, Z, C ) meshz(x, y, Z, C )
mesh(Z, C) meshc(Z, C) meshz(Z, C)
mesh(X, Y, Z) meshc(X, Y, Z) meshz(X, Y, Z)
mesh(x, y, Z) meshc (x, y, Z) meshz(x, y, Z)
mesh(Z) meshc(Z) meshz(Z)

Описание:

Команда mesh(X, Y, Z, C) выводит на экран сетчатую поверхность для значений массива Z, определенных на множестве значений массивов X и Y. Цвета узлов поверхности задаются массивом C. Цвета ребер определяются свойством EdgeColor объекта surface. Можно задать одинаковый цвет для всех ребер, определив его в виде вектора [r g b] интенсивности трех цветов - красного, зеленого, синего. Если определить спецификацию none, то ребра не будут прорисовываться. Если определить спецификацию flat, то цвет ребер ячейки определяется цветом того узла, который был первым при обходе этой ячейки. Поскольку одни и те же ребра обходятся несколько раз, то цвета будут замещаться. Если определить спецификацию interp, то будет реализована линейная интерполяция цвета между вершинами ребра.

Применение функции shading после обращения к функции mesh изменяет спецификации свойств EdgeColor и FaceColor согласно следующей таблице.

Свойство

Применяемая функция

mesh shading flat shading interp
EdgeColor flat flat interp
FaceColor Цвет фона Цвет фона Цвет фона

Команда mesh(x, y, Z, C) выполняет ту же функцию, но вместо двумерных массивов X, Y использует их одномерные проекции, так что если length(x) = n, а length(y) = m, то [m, n] = size(Z). В этом случае узлы сетчатой поверхности определяются тройками {x(j), y(i), Z(i, j)}, где вектор x определяет столбцы массива Z, а y - строки.

Команда mesh(Z, C) использует сетку, которая определяется одномерными массивами x = 1 : n и y = 1 : m.

Команды mesh(X, Y, Z), mesh(x, y, Z), mesh(Z) используют в качестве массива цвета C = Z, то есть цвет в этом случае пропорционален высоте поверхности.

Группа команд meshc(...) в дополнение к трехмерным поверхностям строит проекцию линий постоянного уровня.

Группа команд meshz(...) в дополнение к трехмерным поверхностям строит плоскость отсчета на нулевом уровне, закрывая поверхность, лежащую ниже этого уровня.

Функция h = mesh(...) возвращает дескриптор h для графического объекта surface.

Примеры:

Построим трехмерную поверхность функции z = x * exp(-x2 -y2) с проекциями линий постоянного уровня.

[ X, Y ] = meshgrid([ -2 : 0.1 : 2 ]);
Z = X . * exp(- X .^ 2 - Y .^ 2);
meshc(X, Y, Z)

Теперь построим эту же функцию с пьедесталом отсчета

meshz(X, Y, Z)

Сопутствующие функции и команды: SURF, WATERFALL

 

Наверх

SURF, SURFC - затененная сетчатая поверхность

Синтаксис:

  surf(X, Y, Z, C) surfc(X, Y, Z, C)
  surf(x, y, Z, C ) surfc(x, y, Z, C )
  surf(Z, C) surfc(Z, C)
  surf(X, Y, Z) surfc(X, Y, Z)
  surf(x, y, Z) surfc (x, y, Z)
  surf(Z) surfc(Z)

Описание:

Команда surf(X, Y, Z, C) выводит на экран сетчатую поверхность для значений массива Z, определенных на множестве значений массивов X и Y. Цвет ячейки определяется массивом C. Цвет ребер - черный, определяется свойством EdgeColor, специфицированным как [0 0 0]. Можно задать одинаковый цвет для всех ребер, определив его в виде вектора [r g b] интенсивности трех цветов - красного, зеленого, синего. Если определить спецификацию none, то ребра не будут прорисовываться.

Применение функции shading после обращения к функции surf изменяет спецификации свойств EdgeColor и FaceColor графического объекта surface согласно следующей таблице.

Свойство

Применяемая функция

surf shading flat shading interp
EdgeColor [0 0 0] none none
FaceColor flat flat interp

Команда surf(x, y, Z, C) выполняет ту же функцию, но вместо двумерных массивов X, Y использует их одномерные проекции, так что если length(x) = = n, а length(y) = m, то [m, n] = size(Z). В этом случае узлы сетчатой поверхности определяются тройками {x(j), y(i), Z(i, j)}, где вектор x определяет столбцы массива Z, а y - строки.

Команда surf(Z, C) использует сетку, которая определяется одномерными массивами x = 1 : n и y = 1 : m.

Команды surf(X, Y, Z), surf(x, y, Z), surf(Z) используют в качестве массива цвета C = Z, то есть цвет в этом случае пропорционален высоте поверхности.

Группа команд surfc(...) в дополнение к трехмерным затененным поверхностям строит проекцию линий постоянного уровня.

Функция h = surf(...) возвращает дескриптор h для графического объекта surface.

Примеры:

Построим трехмерную затененную поверхность функции z = x * exp(-x2 - y2) со шкалой затененности.

[ X, Y ] = meshgrid([ -2 : 0.1 : 2 ]);
Z = X . * exp(- X .^ 2 - Y .^ 2);
surf(X, Y, Z)
colormap(gray)
shading interp
colorbar

image1013.gif (8125 bytes)

Рассмотрим пример сферы, которая раскрашена в соответствии с матрицей Адамара (Hadamard), часто используемой в теории кодирования сигналов и составленной только из двух чисел 1 и -1.

k = 5; n = 2 ^ k - 1;
[X, Y, Z]=sphere(n);
C = hadamard(2 ^ k);
surf(X, Y, Z, C);
colormap([1 1 1; 2/3 2/3 2/3])
colorbar

image1014.gif (9944 bytes)

Алгоритм:

В общем виде, для задания поверхности можно использовать два независимых параметра i и j, которые изменяются непрерывно, например в прямоугольнике 1 <= i <= m, 1 <= j <= n; тогда поверхность будет определяться тремя функциями x(i, j), y(i, j), z(i, j). Когда i и j целые числа, они задают прямоугольную сетку с целочисленными значениями для узлов. Функции x(i, j), y(i, j), z(i, j) становятся двумерными массивами X, Y, Z размера m х n. Четвертая функция - цвет ячеек поверхности c(i, j) задает четвертую матрицу C.

Каждая точка сетчатой поверхности имеет в общем случае четырех соседей, как показано на следующей схеме.

image1015.gif (1185 bytes)

Такая прямоугольная сетка приводит к разбиению поверхности на ячейки, ограниченные четырьмя ребрами. Каждый внутренний узел поверхности имеет четырех соседей, узел на границе - трех, узел в углу поверхности - двух.

Цвет такой сетчатой поверхности может быть задан двумя способами: либо цветом одной из вершин, либо цветом в центре ячейки.

Рассмотрим, как в этом случае действует функция закраски shading. Если задано значение shading interp, то цвет ячейки определяется как билинейная функция местных координат. Если задано значение shading faceted (принято по умолчанию) или shading flat, то цвет ячейки постоянен и определяется цветом верхней левой вершины, как показано на следующей схеме:

image1016.gif (1522 bytes)

Сопутствующие функции и команды: MESH, MESHC, SURFL, WATERFALL.

 

Наверх

SURFL - затененная поверхность с подсветкой

Синтаксис:

  surfl(X, Y, Z, s) surfl(Z, s)
  surfl(X, Y, Z, s, k) surfl(Z, s, k)
  surfl(X, Y, Z) surfl(Z)

Описание:

Команда surfl(X, Y, Z, s) выводит на экран затененную поверхность с подсветкой для значений массива Z, определенных на множестве значений массивов X и Y. Направление на источник света может быть задано с помощью вектора s = [Sx, Sy, Sz] в декартовых координатах или вектора s = = [az, elev] в сферических координатах. По умолчанию азимут az = -37.5°, возвышение elev = 30°. Подсветка учитывает модели рассеяния, отражения и зеркального эффекта освещения поверхности.

Команда surfl(X, Y, Z, s, k) позволяет управлять параметрами рассеяния, отражения и зеркального эффекта, используя вектор k = [ka, kd, ks, spread], который учитывает эффекты отраженного света ka, диффузного отражения kd, зеркального отражения ks и зеркального распространения spread. По умолчанию вектор k имеет значения [0.55 0.6 0.4 10].

Команда surfl(X, Y, Z) использует значения параметров по умолчанию.

Команды surfl(Z, ...) строят графики, не учитывая истинных значений массивов X и Y.

Из-за того что алгоритм surfl вычисляет нормали к поверхности, необходимо, чтобы входные матрицы имели размер по крайней мере 3 х 3.

Примеры:

Построим изображение функции peaks, используя подсветку.

[X, Y] = meshgrid(-3 : 1/8 : 3);
Z = peaks(X, Y);
surfl(X, Y, Z)
shading interp
colormap(gray)

image1017.gif (6105 bytes)

Сопутствующие функции и команды: SHADING.

 

Наверх

AXIS - масштабирование осей и вывод на экран

Синтаксис:

axis([xmin xmax ymin ymax])
axis([xmin xmax ymin ymax zmin zmax])
axis(‘auto’)
axis(axis)
v = axis
axis(‘ij’)
axis(‘xy’)
axis(‘square’)
axis(‘equal’)
axis(‘off’)
axis(‘on’)
[s1, s2, s3] = axis(‘state’)
axis(s1, s2, s3)

Описание:

Команда axis обеспечивает преемственность предшествующих версий системы MATLAB, ориентированных на символьную обработку, с версиями 4.х, ориентированными на графический интерфейс.

Команда axis([xmin xmax ymin ymax]) устанавливает масштаб по осям x, y для активного графического окна.

Команда axis([xmin xmax ymin ymax zmin zmax]) устанавливает масштаб по осям x, y, z для активного графического окна.

Команда axis('auto') возвращает масштаб по осям к штатным значениям (принятым по умолчанию).

Команда axis(axis) фиксирует текущие значения масштабов для последующих графиков, как если бы был включен режим hold.

Функция v = axis возвращает вектор-строку масштабов по осям для активного графика. Если график двумерный, то v имеет 4 компонента; если трехмерный - 6 компонентов.

Команда axis('ij') перемещает начало отсчета в левый верхний угол, сохраняет положение осей и реализует отсчет по вертикальной оси из верхнего левого угла (матричная система координат).

Команда axis('xy') возвращает декартову систему координат; начало отсчета находится в нижнем левом углу; ось x горизонтальна и размечается слева направо, ось y вертикальна и размечается снизу вверх.

Команда axis('square') устанавливает одинаковый диапазон изменения переменных по осям.

Команда axis('equal') устанавливает масштаб, который обеспечивает одинаковые расстояния между метками по осям x и y.

Команда axis('image') устанавливает масштаб, который обеспечивает квадратные размеры пикселей.

Команда axis('normal') восстанавливает полноразмерный масштаб, отменяя масштабы, установленные командами axis('square') и axis('equal').

Команда axis('off') снимает с осей их обозначения и маркеры.

Команда axis('on') восстанавливает на осях их обозначения и маркеры.

Функция [s1, s2, s3] = axis('state') возвращает строку, определяющую вектор состояния объекта axes:

s1 = 'auto' | 'manual'.
s2 = 'on' | 'off'.
s3 = 'xy' | 'ij'.

Команда axis(s1, s2, s3) устанавливает параметры объекта axes в соответствии с вектором состояния [s1, s2, s3]. По умолчанию этот вектор принимает значения [‘auto’, ‘on’, ‘xy’].

Сопутствующие функции и команды: SUBPLOT.

 

Наверх

GRID - нанесение сетки

Синтаксис:

grid on
grid off
grid

Описание:

Команда grid on наносит координатную сетку на текущие оси.

Команда grid off удаляет координатную сетку.

Команда grid выполняет роль переключателя с одной функции на другую.

Команды группы grid выполняют установку свойств ‘XGrid’, ‘YGrid’, ‘ZGrid’ объекта axes.

Сопутствующие функции и команды: TITLE, XLABEL, YLABEL.

 

Наверх

HOLD - управление режимом сохранения текущего графического окна

Синтаксис:

hold on
hold off
hold

Описание:

Команда hold on включает режим сохранения текущего графика и свойств объекта axes, так что последующие команды приведут к добавлению новых графиков в графическом окне.

Команда hold off выключает режим сохранения графика.

Команда hold реализует переключение от одного режима к другому.

Пояснение:

Команды hold воздействуют на значения свойства NextPlot объектов figure и axes:

  • hold on присваивает свойству NextPlot для текущих объектов figure и axes значение add;
  • hold off присваивает свойству NextPlot для текущих объектов figure и axes значение replace.

 

Наверх

SUBPLOT - разбиение графического окна

Синтаксис:

subplot(m, n, p)
subplot(h)
subplot(mnp)

Описание:

Данная команда выполняется перед обращением к функциям построения графиков для одновременной выдачи нескольких графиков в различных частях графического окна.

Команды subplot(mnp) или subplot(m, n, p), где mnp - 3 цифры, производит разбивку графического окна на несколько подокон, создавая при этом новые объекты axes; значение m указывает, на сколько частей разбивается окно по горизонтали, n - по вертикали, а p - номер подокна, куда будет выводиться очередной график. Эти же команды могут использоваться для перехода от одного подокна к другому.

Команда subplot(h), где h - дескриптор для объекта axes соответствующего подокна, - другой способ выбора подокна для размещения графика.

Команды clf, subplot(111), subplot(1, 1, 1) выполняют одну и ту же функцию - удаляют все подокна и возвращают графическое окно в штатное состояние.

Пример:

В верхней части экрана строится функция y1 = sin(x), в нижней - y2 = log(abs(y)).

x = -1:.1:1;
y1 = sin(x);
subplot(2, 1, 1), plot(x, y1)
y2 = log(abs(y1));
subplot(2, 1, 2), plot(x, y2)

 

Наверх

ZOOM - управление масштабом графика

Синтаксис:

zoom on
zoom off
zoom
zoom out

Описание:

Команда zoom on включает режим масштабирования активного графика. Теперь при нажатии левой клавиши мыши вблизи интересующей вас точки графика масштаб окна увеличивается в 2 раза; при нажатии правой клавиши масштаб в 2 раза уменьшается. Удерживая левую клавишу, можно выделить интересующую вас область окна.

Команда zoom off выключает режим масштабирования.

Команда zoom реализует переключение от одного режима к другому.

Команда zoom out возвращает график в исходное состояние.

 

Наверх

COLORMAP - палитра цветов

Синтаксис:

colormap(C)
colormap(‘default’)
C = colormap
caxis(caxis)

Описание:

Палитра цветов C - это матрица размера m х 3 действительных чисел из диапазона [0.0 1.0]. Строка k палитры сформирована из трех чисел, которые указывают интенсивность красного, зеленого и синего цветов, то есть C(k, :) = [r(k) g(k) b(k)].

Команда colormap(C) устанавливает палитру согласно матрице C. Если значение элемента матрицы выходит за пределы интервала [0 1], выдается сообщение об ошибке

Colormap must have values in [0,1].
Значения элементов палитры должны быть в интервале [0 1].

Команды colormap(‘default’) или colormap(hsv) устанавливают штатную палитру, которая соответствует модели hue-saturation-value (оттенок-насыщен-ность-значение). Последовательность цветов этой палитры соответствует цветам радуги.

red Красный Каждый
- - охотник
yellow Желтый желает
green Зеленый знать,
cyan Голубой где
blue Синий сидит
magenta Фиолетовый фазан

В рамках версий 4.x системы MATLAB реализованы следующие палитры:

bone Grey-scale with tinge of blue color map Серая палитра с оттенком синего
cool Shades of cyan and magenta color map Палитра с оттенками голубого и фиолетого
copper Linear copper-tone color map Линейная палитра в оттенках меди
flag Alternating red, white, blue, and black color map Палитра с чередованием красного, синего и черного
gray Linear grey-scale color map Линейная палитра в оттенках серого
hot Black-red-yellow-white color map Палитра с чередованием черного, красного, желтого и белого
hsv Hue-saturation-value color map Палитра радуги
jet Variant of hsv Разновидность hsv-палитры
pink Pastel shades of pink color map Розовая палитра с оттенками пастели
prism Prism (red-orange-yellow-green -blue-violet) color map Палитра с чередованием красного, оранжевого, желтого, зеленого, синего и фиолетового
white All white color map Белая палитра

Сопутствующие функции и команды: MESH, SURF.

 

Наверх

CAXIS - установление соответствия между палитрой цветов и масштабированием осей

Синтаксис:

caxis([cmin cmax])
caxis( ‘auto’ )
v = caxis
caxis(caxis)

Описание:

Команда caxis дает простой способ управления свойствами Clim и CLimMode объекта axes и таким образом обеспечивает преемственность предшествующих версий системы MATLAB, ориентированных на символьную обработку, с версиями 4.x, ориентированными на графический интерфейс.

Команда caxis([cmin cmax]) устанавливает диапазон из палитры цветов для масштабирования данных, которые используются объектами surface и patch, созданными с помощью команд mesh, pcolor, surf. Параметры cmin и cmax предназначены для выбора граничных цветов из текущей палитры. Значения цветов вне интервала [cmin cmax] отсекаются, то есть соответствующие фрагменты и пиксели не выводятся на экран.

Команда caxis('auto') устанавливает штатное масштабирование данных палитрой цветов; в этом случае отсекаются цвета, которые соответствуют значениям Inf и NaN.

Команда v = caxis возвращает вектор-строку [cmin cmax].

Команда caxis(caxis) фиксирует текущую палитру для последующих графиков, как если бы был включен режим hold.

Пример:

  [X, Y, Z] = sphere(32); % Cфера радиусом 1
  C = Z; % Значения для С - в диапазоне [-1 1].
  surf(X, Y, Z, C) % Изображение сферы

image1018.gif (13470 bytes)

Сопутствующие функции и команды: COLORMAP, AXIS.

 

Наверх

SHADING - затенение поверхностей

Синтаксис:

shading faceted
shading flat
shading interp

Описание:

Команды группы shading устанавливают способ затенения графических объектов surface и patch, которые создаются при использовании функций mesh, surf, pcolor, fill и fill3.

Команда shading faceted устанавливает равномерную раскраску ячеек с нанесением черных граней. Такое затенение поверхности часто оказывается наиболее эффективным и принято по умолчанию.

Команда shading flat устанавливает раскраску каждой ячейки или грани определенными цветами, которые зависят от цвета узлов сетки.

Команда shading interp устанавливает раскраску каждой ячейки или грани цветами, которые определяются билинейной нитерполяцией цветов в узлах сетки.

Алгоритм:

Команды группы shading устанавливают требуемые значения свойств EdgeColor и FaceColor графических объектов surface и patch. Устанавлива-емые значения зависят от того, является ли трехмерный график сетчатой поверхностью (функция mesh) или затененной поверхностью (функция surf).

Сопутствующие функции, команды и объекты: MESH, SURF, FILL, FILL3.

 

Наверх

CONTOURC - формирование массива описания линий уровня

Синтаксис:

  C = contourc(Z) C = contourc(x, y, Z)
  C = contourc(Z, n) C = contourc(x, y, Z, n)
  C = contourc(Z, v) C = contourc(x, y, Z, v)

Описание:

Функция C = contourc(Z) формирует массив C описания линий уровней для их вывода на экран с помощью функции contour.

Функция C = contourc(x, y, Z) формирует массив линий уровней С с учетом диапазона изменения координат x и y.

Функции C = contourc(Z, n) и C = contourc(x, y, Z, n) формируют массив C для n линий уровней.

Функции C = contourc(Z, v) и C = contourc(x, y, Z, v) формируют массив C только для линий уровня, которые заданы в векторе v.

Маccив линий уровня состоит из двух строк и описывает каждую линию уровня в виде сегмента со следующими параметрами:
значение уровня (leveli) - координаты x(i);
количество точек (pairsi) - координаты y(i),
так что массив C имеет вид:

C = [level1 x1 x2 ... xk1 level2 x1 x2 ... xk2 ...; pairs1 y1 y2 ... yk1 pairs2 y1 y2 ... yk2 ...].

Ограничения:

При работе с функцией contourc предполагается, что элементы массивов x и y монотонно возрастают.

Сопутствующие функции и команды: CONTOUR.

 

Наверх

CONTOUR - изображение линий уровня для трехмерной поверхности

Синтаксис:

  contour(Z) contour(x, y, Z)
  contour(Z, n) contour(x, y, Z, n)
  contour(Z, v) contour(x, y, Z, v)
  contour(...,’тип_линии’)  
  C = contour(...)  
  [C, h] = contour(...)  

Описание:

Команда contour(Z) рисует двумерные линии уровня для массива данных Z, определяющих поверхность в трехмерном пространстве без учета диапазона изменения координат x и y.

Команда contour(x, y, Z), где x и y - векторы, рисует линии уровня для массива данных Z с учетом диапазона изменения координат x и y.

Команды contour(Z, n), contour(x, y, Z, n) рисует n линий уровня для массива данных Z; по умолчанию, n равно 10.

Команды contour(Z, v), contour(x, y, Z, v) рисуют линии уровня для заданных значений, которые указаны в векторе v.

Команда contour(...,’<тип линии>’) рисует линии уровня, тип и цвет которых определяются параметром <тип линии> команды plot.

Функция C = contour(...) возвращает массив C описания линий уровней по аналогии с функцией contourc для последующего использования командой clabel.

Функция [C, h] = contour(...) возвращает массив C и вектор-столбец дескрипторов h графических объектов line для каждой линии уровня.

Пример:

Построить линии уровня функции  image1010.gif (260 bytes) в области -2 <= x <= 2, -2<= y<= 2.

x = -2 : .2 : 2; y = x;
[X, Y] = meshgrid(x);
Z = X.* exp(- X.^2 - Y.^2);
contour(X, Y, Z)

Диагностические сообщения:

Если меньшая размерность массива Z оказывается меньше двух, то выдается сообщение

Matrix must be 2-by-2 or larger.
Матрица должна иметь размер 2 х 2 или больше.

Ограничения:

При работе с командой и функцией contour предполагается, что элементы массивов x и y монотонно возрастают.

Сопутствующие функции и команды: CLABEL, CONTOURC, CONTOURC3, GRADIENT, QUIVER.

 

Наверх

CONTOUR3 - изображение трехмерных линий уровня

Синтаксис:

  contour3(Z) contour3(X, Y, Z)
  contour3(Z, n) contour3(X, Y, Z, n)
  C = contour3(...)  
  [C, h] = contour3(...)  

Описание:

Команда contour3(Z) рисует трехмерные линии уровня для массива данных Z, определяющих поверхность в трехмерном пространстве без учета диапазона изменения координат x и y.

Команда contour3(X, Y, Z), где X и Y - двумерные массивы, вычисленные с помощью функции meshgrid, рисует линии уровня для массива данных Z с учетом диапазона изменения координат x и y.

Команды contour3(Z, n), contour(X, Y, Z, n) рисуют n линий уровня для массива данных Z; по умолчанию n равно 10.

Функция C = contour3(...) возвращает массив C описания линий уровней по аналогии с функцией contourc для последующего использования командой clabel.

Функция [C, h] = contour3(...) возвращает массив C и вектор-столбец дескрипторов h графических объектов line для каждой линии уровня.

Пример:

Построить линии уровня функции image1010.gif (260 bytes) в области -2 <= x <= 2, -2<= y<= 3.

x = -2 : .2 : 2;
y = -2 : .2 : 2;
[X, Y] = meshgrid(x, y);
Z = X.* exp(- X.^2 - Y.^2);
contour3(X, Y, Z)

Ограничения:

При работе с командой и функцией contour3 предполагается, что элементы массивов x и y монотонно возрастают.

Сопутствующие функции и команды: CONTOURC, CONTOUR.

 

 

Надписи и пояснения к графикам

 

Наверх

TITLE - заголовки для двух- и трехмерных графиков

Синтаксис:

title(‘<текст>’)

Описание:

Команда title(‘<текст>’) размещает текст над графиком.

Сопутствующие функции и команды: XLABEL, YLABEL, ZLABEL, TEXT.

 

Наверх

XLABEL, YLABEL, ZLABEL - обозначение осей

Синтаксис:

xlabel('<текст>')
ylabel('<текст>')
zlabel('<текст>')

Описание:

Команда xlabel('<текст>') помещает текст для двумерного графика вдоль оси x, для трехмерного графика - вдоль оси x либо под графиком.

Команда ylabel('<текст>') помещает текст для двумерного графика вдоль оси y, для трехмерного графика - вдоль оси y либо под графиком.

Команда zlabel('<текст>') помещает текст вдоль оси трехмерного графика.

Повторное использование команды приводит к замене старого текста новым.

Сопутствующие функции и команды: TITLE, GTEXT.

 

Наверх

CLABEL - маркировка линий уровня

Синтаксис:

clabel(C)
clabel(C, v)
clabel(C, ‘manual’)

Описание:

Команда clabel(C) добавляет метки к линиям уровня в случайно выбранных позициях.

Команда clabel(C, v) маркирует линии уровня контура, которые заданы в векторе v.

Команда clabel(C, ‘manual’) маркирует линии уровней в позициях, указываемых с помощью мыши. Нажатие клавиши Return или правой кнопки мыши завершает маркировку. Если мышь недоступна, то можно использовать клавишу пробела для перехода между линиями уровней и клавиши-“стрелки” для перемещения перекрестия.

Пример:

Сгенерировать, нарисовать и маркировать линии уровня для функции  image1010.gif (260 bytes).

x = -2 : .2 : 2; y = x;
[X, Y] = meshgrid(x);
Z = X.* exp(- X.^2 - Y.^2);
C = contour(X, Y, Z);
clabel(C)

Сопутствующие функции: CONTOUR.

 

Наверх

TEXT - добавление к текущему графику текста

Синтаксис:

text(x, y, ’<текст>’)
text(x, y, z, ’<текст>’)

Описание:

Команда text(x, y, ’<текст>’) помещает в заданной точке (x, y) двумерного графика начало текста, указанного в качестве третьего аргумента. Если x и y одномерные массивы, заданный текст помещается во все позиции, определяемые координатами [x(i) y(i)].

Команда text(x, y, z, ’<текст>’) выводит текст на трехмерный график.

Примеры:

Записать символ ‘x’ в трех точках с координатами (1, 1), (5, 10), (10, 20):

plot([1 5 10], [1 10 20], ’x’)

Написать, начиная с позиции (5, 10), ‘Action point’:

text(5, 10, ‘Action point’)

Написать, начиная с позиции (5, 10), ‘Активная точка’:

h = text(5, 10,'Активная точка', 'FontName', ’TimesET’, 'FontSize', 11)

Сопутствующие функции и команды: XLABEL, YLABEL, ZLABEL, TITLE, GTEXT.

 

Наверх

GTEXT - размещает заданный текст на графике с использованием мыши

Синтаксис:

gtext(‘<текст>’)

Описание:

Команда gtext(‘<текст>’) высвечивает в активном графическом окне перекрестие, перемещение которого позволяет указать место ввода заданного текста; по завершении позиционирования нажатие кнопки мыши или любой клавиши вводит заданный текст.

Для того чтобы настроить процедуру gtext на ввод русского текста, следует в тело процедуры вслед за строкой

set(ht, 'units', units')

добавить строку

set(ht, 'FontName', '<имя шрифта>')

Примеры:

Разместим на графике функции y = sin(x)/x маркер “Скорость”:

x = 1e-6 : 0.05 : 10;
plot(x, sin(x)./x)
grid
gtext('Скорость')

Сопутствующие функции и команды: TEXT.

 

Наверх

LEGEND - пояснение к графику

Синтаксис:

legend(‘<текст1>‘, ‘<текст2>‘, ‘<текст3>‘, ...)
legend(‘<тип линии1>‘, ‘<текст1>‘, ‘<тип линии2>‘, ‘<текст2>‘, ...)
legend(h,...)
legend(M)
legend(h, M)
legend off
legend(..., n)

Описание:

Команда legend(‘<текст1>‘, ‘<текст2>‘, ‘<текст3>‘, ...) добавляет к текущему графику пояснение в виде указанных текстовых строк.

Команда legend(‘<тип линии1>‘, ‘<текст1>‘, ‘<тип линии2>‘, ‘<текст2>‘, ...) позволяет специфицировать тип линии, которая выносится в пояснение, так, как это делается в команде plot.

Команда legend(h, ...) добавляет пояснение к графику с дескриптором h.

Команды legend(M) и legend(h, M), где M - массив строк, также допустимы для формирования пояснения. Следует помнить, что строки массива M должны иметь одинаковую длину.

Команда legend off удаляет пояснение с текущего графика.

Команда legend(..., n) устанавливает предельное количество позиций для размещения пояснения. Если оказывается, что в области графика места недостаточно, график перестраивается и пояснение размещается вне пределов графика. Если n = -1, то пояснение размещается вне области графика. Если n = 0, то пояснение размещается в области графика, если места для этого достаточно.

Для перемещения пояснения следует нажать левую кнопку мыши, находясь в этой области, а затем переместить пояснение в нужную позицию.

Примеры:

Построить на одном графике функции Бесселя 1, 3 и 5-го порядка и дать соответствующее пояснение на русском языке.

x = 0 : .2 : 12;
hp = plot(x, bessel(1, x), ‘-’ x, bessel(3, x), ‘--’, x, bessel(5, x), ‘-.’);
set(gca, 'FontName', 'TimesET')
set(gca, 'FontSize', 10)
legend('Порядка 1', 'Порядка 3', 'Порядка 5', -1)
grid

Замечание:

Для того чтобы избежать пересечения пояснения с линиями графика или нанесенной сеткой, необходимо текущему графическому объекту axes присвоить дескриптор пояснения:

hl = legend(....)
axes(hl)
print-dbitmap

Сопутствующие функции и команды: PLOT.

 

Наверх

COLORBAR - шкала палитры

Синтаксис:

colorbar(‘vert‘)
colorbar(‘horiz‘)
colorbar(h)
colorbar

Описание:

Команда colorbar(‘vert‘) добавляет к текущему графику вертикальную шкалу палитры.

Команда colorbar(‘horiz‘) добавляет к текущему графику горизонтальную шкалу палитры.

Команда colorbar(h) добавляет к графику с дескриптором h шкалу палитры. Размещение шкалы реализуется автоматически в зависимости от соотношения ширины и высоты графика.

Команда colorbar без аргументов размещает на текущем графике новую вертикальную шкалу палитры или обновляет прежнюю.

 

 

Специальная графика

 

Наверх

BAR - столбцовые диаграммы

Синтаксис:

bar(y)bar(x, y)
[xb, yb] = bar(...)
bar(y, ‘<тип линии>‘)
bar(x, y, ‘<тип линии>‘)

Описание:

Команда bar(y) выводит график элементов одномерного массива y в виде столбцовой диаграммы.

Команда bar(x, y) выводит график элементов массива y в виде столбцов в позициях, определяемых массивом x, элементы которого должны быть упорядочены в порядке возрастания.

Если X и Y - двумерные массивы одинаковых размеров, то каждая диаграмма определяется соответствующей парой столбцов и они надстраиваются одна над другой.

Команды bar(y, ‘<тип линии>‘), bar(x, y, ‘<тип линии>‘) позволяют задать тип линий, используемых для построения столбцовых диаграмм, по аналогии с командой plot.

Функция [xb, yb] = bar(...) не выводит графика, а формирует такие массивы xb и yb, которые позволяют построить столбцовую диаграмму с помощью команды plot(xb, yb).

Примеры:

Построить график функции image1025.gif (223 bytes) в виде столбцовой диаграммы.

x = -2.9 : 0.2 : 2.9;
bar(x, exp(-x . * x))

Сопутствующие функции и команды: PLOT, STAIRS, HIST.

 

Наверх

ERRORBAR - график с указанием интервала погрешности

Синтаксис:

errobar(x, y, l, u, ‘<тип линии>‘)
errobar(y, l, u, ‘<тип линии>‘)
errobar(x, y, e)
errobar(y, l, e)

Описание:

Команда errobar(x, y, l, u, ‘<тип линии>‘) строит график функции y в зависимости от x с указанием интервала погрешности, который определяется массивами l и u. Массивы x, y, l, u должны быть одного размера. Погрешности в каждой точке {x(i), y(i)} определяются отклонениями вниз l(i) и вверх u(i) относительно точки графика, так что суммарная погрешность равна l(i) + u(i). Строковая переменная ‘<тип линии>‘ аналогична используемой в команде plot.

Если X, Y, L и U - двумерные массивы, то в этом случае каждому столбцу соответствует свой график.

Команда errobar(x, y, e) строит график функции c погрешностью ±e относительно точки графика.

Команды errobar(y, l, u, ‘<тип линии>‘) и errobar(y, e) отличаются от вышеописанных только тем, что строят графики функций в зависимости от номера элемента.

Пример:

Построить график функции y = sin(x) с интервалом погрешности ±e, который определяется как стандартное отклонение.

x = 1 : 10;
y = sin(x);
e = std(y)*ones(size(x))/5;
errorbar(x, y, e)

Сопутствующие функции и команды: PLOT, BAR.

 

Наверх

HIST - построение гистограммы

Синтаксис:

hist(y)
hist(y, n)
hist(y, x)
[y, x] = hist(y, ...)

Описание:

Команды hist(...) подсчитывают и отображают на графике количество элементов массива y, значения которых попадают в заданный интервал; для этого весь диапазон значений y делится на n интервалов (по умолчанию 10) и подсчитывается количество элементов в каждом интервале.

Команда hist(y) выводит гистограмму для 10 интервалов.

Команда hist(y, n) выводит гистограмму для n интервалов.

Команда hist(y, x) выводит гистограмму с учетом диапазона изменения переменной x.

Функции [y, x] = hist(y, ...) формируют такие массивы y и x, что bar(x, y) является гистограммой.

Примеры:

Построить гистограмму для 10 000 случайных чисел, распределенных по нормальному закону.

x = -2.9 : 0.1 : 2.9;
y = randn(10000,1);
hist(y, x)

Сопутствующие функции и команды: BAR, STAIRS.

 

Наверх

STEM - дискретные графики

Синтаксис:

stem(y)
stem(x, y)
stem(y, <тип линии>)
stem(x, y, <тип линии>)

Описание:

Команда stem(y) выводит график элементов одномерного массива y в виде вертикальных линий, которые заканчиваются в точках графика, помечаемых кружочком.

Команда stem(x, y) выводит график элементов массива y в виде вертикальных линий в позициях, определяемых массивом x, элементы которого должны быть упорядочены в порядке возрастания.

Команды stem(y, <тип линии>), stem(x, y, <тип линии>) позволяют задать тип линий, используемых для построения дискретного графика, по аналогии с командой plot.

Примеры:

Построить график функции image1029.gif (276 bytes) в виде дискретной последовательности.

t = 0 : 2 : 200; alpha = 0.02; beta = 0.5;
x = exp(-alpha*t) .*sin(beta*t);
stem(t, x), grid
set(gca, 'FontName', 'TimesET')
xlabel('Время, мс'), ylabel('Амплитуда')

Сопутствующие функции и команды: PLOT, BAR, STAIRS.

 

Наверх

STAIRS - ступенчатый график

Синтаксис:

stairs(y)
stairs(x, y)
[xb, yb] = stairs(...)

Описание:

Команда stairs(y) выводит график элементов одномерного массива y в виде ступенчатой функции, аналогичной столбцовой диаграмме, но без вертикальных линий. Такие графики целесообразно использовать при выводе процессов в дискретно-непрерывных системах.

Команда stairs(x, y) выводит график элементов массива y в виде ступенчатой функции в позициях, определяемых массивом x, элементы которого должны быть упорядочены в порядке возрастания.

Функция [xb, yb] = stairs(...) не выводит графика, а формирует такие массивы xb и yb, которые позволяют построить ступенчатую функцию с помощью команды plot(xb, yb).

Примеры:

Построить ступенчатый график функции x = sin(t).

t = 0 : 0.25 : 10;
stairs(t, sin(t))

Сопутствующие функции и команды: BAR, HIST.

 

Наверх

ROSE - гистограмма в полярных координатах

Синтаксис:

rose(phi)
rose(phi, n)
rose(phi, x)
[phi, r] = rose(phi, ...)

Описание:

Команды rose(...) подсчитывают и отображают на графике количество угловых элементов в массиве phi, значения которых попадают в заданный интервал; для этого весь диапазон значений phi делится на n интервалов (по умолчанию 20) и подсчитывается количество угловых элементов в каждом интервале. Такая гистограмма известна под названием розы ветров.

Команда rose(phi) строит розу ветров для 20 интервалов.

Команда rose(phi, n) строит розу ветров для n интервалов.

Команда rose(phi, n) строит розу ветров с учетом диапазона изменения переменной phi.

Функции [phi, r] = rose(phi, ...) формируют такие массивы phi и r, что polar(phi, r) является гистограммой в полярных координатах.

Примеры:

Рассмотрим дискретную запись изменения направления ветра через каждый час в течение 12 ч и построим соответствующую розу ветров для этого периода наблюдений.

wdir = [45 90 90 45 360 335 360 270 335 270 335 335];
wdir = wdir * pi/180;
rose(wdir)

Преимущественное направление розы ветров в течение этого периода составляет 330°.

Сопутствующие функции и команды: HIST, POLAR.

 

Наверх

COMPASS, FEATHER - графики векторов

Cинтаксис:

  compass(z) feather(z)
  compass(x, y) feather(x, y)
  compass(y, ‘<тип линии>‘) feather(y, ‘<тип линии>‘)
  compass(x, y, ‘<тип линии>‘) feather(x, y, ‘<тип линии>‘)
  [hc, hb] = compass(...)  

Описание:

Команда compass(z) выводит график комплексных элементов одномерного массива z в виде векторов-стрелок, исходящих из одной точки (начала координат).

Команда compass(x, y) равносильна команде compass(x + i * y).

Команды compass(y, ‘<тип линии>‘), compass(x, y, ‘<тип линии>‘) позволяют задать тип линий, используемых для построения векторов-стрелок, по аналогии с командой plot.

Функция [hc, hb] = compass(...) не выводит графика, а формирует такие массивы hc и hb, которые позволяют построить столбцовую диаграмму с помощью команды plot(hc, hb).

Команда feather(z) выводит график комплексных элементов одномерного массива z в виде векторов-стрелок, исходящих из равноотстоящих точек горизонтальной оси.

Команда feather(x, y) равносильна команде feather(x + i * y).

Команды feather(y, ‘<тип линии>‘), feather(x, y, ‘<тип линии>‘) позволяют задать тип линий, используемых для построения векторов-стрелок, по аналогии с командой plot.

Примеры:

Рассмотрим дискретные записи изменения направления и скорости ветра через каждый час в течение 12 ч и построим соответствующую диаграмму векторов для этого периода наблюдений.

wdir = [45 90 90 45 360 335 360 270 335 270 335 335];
knots = [6 6 8 6 3 9 6 8 9 10 14 12];
rdir = wdir * pi/180;
[x, y] = pol2cart(rdir, knots);
polar(rdir, knots, ':w'); hold
compass(x, y)
desc = 'Направление и сила ветра'
h = get(gca, 'Title');
set(h,'String',desc,'FontName','TimesET','FontSize',10)

Построим график затухающей экспоненты в виде векторов-стрелок.

t = 0 : 0.5 : 10;
s = 0.05 + i;
z = exp(-s * t);
feather(z)

Сопутствующие функции: ROSE, QUIVER.

 

Наверх

QUIVER - поле градиентов функции

Синтаксис:

  quiver(X, Y, DX, DY) quiver(x, y, DX, DY)
  quiver(DX, DY)  
  quiver(x, y, dx, dy, s) quiver(dx, dy, s)
  quiver(... ‘<тип_линии>’)  

Описание:

Команда quiver(X, Y, DX, DY) формирует и выводит на экран поле градиентов функции в виде стрелок для каждой пары элементов массивов X и Y, а пары элементов DX и DY используются для указания направления и размера стрелки.

Команда quiver(x, y, DX, DY), где x и y - одномерные массивы размеров length(x) = n и length(y) = m, где [m, n] = size(DX) = size(DY), формирует и выводит на экран поле градиентов для каждой точки; стрелки задаются четверками {x(j), y(i), DX(i, j), DY(i, j)}. Обратите внимание, что x соответствует столбцам DX и DY, а y - строкам.

Команда quiver(DX, DY) использует массивы x = 1 : n и y = 1 : m.

Команды quiver(x, y, dx, dy, s), quiver(dx, dy, s) используют скаляр s как коэффициент масштаба стрелки, например s = 2 вдвое увеличивает, а s = = 0.5 вдвое уменьшает размер стрелки.

Команда в форме quiver(... ‘<тип_линии>’) позволяет задать тип и цвет линии по аналогии с функцией PLOT.

Пример:

Построить поле направлений для функции image1010.gif (260 bytes) в области -2 <= x <= 2, -2 <= y <= 2.

[x, y] = meshgrid(-2 : .2 : 2);
z = x.*exp(-x.^2 - y.^2);
[dx, dy] = gradient(z, .2, .2);
contour(x, y, z), hold on
quiver(x, y, dx, dy)

Сопутствующие функции и команды: GRADIENT, CONTOUR, PLOT.

 

Наверх

COMET - движение точки по траектории

Cинтаксис:

comet(y)
comet(x, y)
comet(x, y, p)
comet

Описание:

Команда comet(y) рисует движение точки по траектории, заданной одномерным массивом y, в виде головы и хвоста кометы.

Команда comet(x, y) рисует движение точки по траектории, заданной массивами x и y.

Команда comet(x, y, p) управляет длиной хвоста кометы p*length(y) с помощью параметра p; по умолчанию p = 0.10.

Команда comet запускает демонстрационный пример.

Пример:

Построим разность двух функций tg(sin(t)) - sin(tg(t)) в виде траектории движения точки.

t = -pi : pi/200 : pi;
comet(t, tan(sin(t)) - sin(tan(t)))

 

Сопутствующие функции: COMET3.

 

Наверх

FILL - закраска многоугольника

Cинтаксис:

fill(x, y, ‘<цвет>‘)
fill(x, y, c)
fill(X, Y, C)
fill(X1, Y1, C1, X2, Y2, C2, ...)
h = fill(...)

Описание:

Команда fill(x, y, ‘<цвет>‘) закрашивает многоугольник, заданный одномерными массивами x, y, цветом, который может быть задан либо одним из символов ‘r’, ’g’, ’b’, ‘c’, ’m’, ’y’, ’ w’, ’k’, либо вектором [r g b]. Вершины многоугольника задаются соответствующими парами элементов массивов x, y. Многоугольник должен быть замкнутым, поэтому его первая и последняя вершины, если это возможно, соединяются линией.

Команда fill(x, y, c), где c - вектор той же длины, которую имеют и векторы x и y, закрашивает многоугольник цветом, задаваемым вектором С. Элементы вектора С масштабируются функцией caxis и используются как индексы текущей палитры для задания цветов в вершинах многоугольника; цвет внутри многоугольника определяется билинейной интерполяцией цветов в узлах.

Команда fill(X, Y, C), где X и Y - массивы одинаковых размеров, строит для каждого столбца свой многоугольник. Если массив C - вектор-строка, количество элементов которой равно числу столбцов массивов X и Y, то каждый многоугольник будет закрашен собственным цветом; это соответствует применению команды shading flat. Если массив C имеет те же размеры, которые имеют и массивы X и Y, то закраска реализуется методом интерполяции; это соответствует применению команды shading interpolated.

Команда fill(X1, Y1, C1, X2, Y2, C2, ...) позволяет выполнить закраску конечного количества многоугольников.

Функция h = fill(...) возвращает вектор-столбец дескрипторов для графических объектов patch, которыми и являются закрашенные многоугольники. Команда fill(...) задает свойству Facecolor объекта patch одно из значений ‘flat’, ‘interp’ или [r g b].

Примеры:

Построим многоугольник, соответствующий дорожному знаку STOP.

t = (1/16 : 1/8 : 1)'*2*pi;
x = sin(t);
y = cos(t);
fill(x, y, 'b')
axis('square')

Сопутствующие функции и команды: FILL3, COLORMAP.

 

Наверх

COMET3 - движение точки по пространственной траектории

Cинтаксис:

comet3(z)
comet3(x, y, z)
comet3(x, y, z, p)
comet3

Описание:

Команда comet(z) рисует движение точки по траектории, заданной одномерным массивом z, в виде головы и хвоста кометы.

Команда comet3(x, y, z) рисует движение точки по траектории, заданной массивами x и y.

Команда comet3(x, y, z, p) управляет длиной хвоста кометы p*length(z) с помощью параметра p; по умолчанию p = 0.10.

Команда comet3 запускает демонстрационный пример.

Примеры:

Построим пространственную параметрическую кривую {x = sin(5t), y = = cos(3t), z = t} в виде траектории движения точки.

t = -pi : pi/500 : pi;
comet3(sin(5*t), cos(3*t), t)

 

Сопутствующие функции и команды: COMET.

 

Наверх

SLICE - сечения функции от трех переменных

Синтаксис:

slice(x, y, z, V, xi, yi, zi, n)
slice(X, Y, Z, V, xi, yi, zi, n)
slice(V, xi, yi, zi, n)
h = slice(...)

Описание:

Команда slice(x, y, z, V, xi, yi, zi, n) строит плоские сечения функции от трех переменных v(x, y, z) вдоль осей x, y, z; позиции сечений определяются векторами xi, yi, zi. Размер двумерного массива V равен m х n х p, где m = length(y), n = length(x), p = length(z).

Команда slice(X, Y, Z, V, xi, yi, zi, n) вместо одномерных массивов использует двумерные массивы X, Y, Z, которые вычисляются с помощью функции meshgrid.

Команда slice(V, xi, yi, zi, n) использует для задания области построения массивы x = 1 : n, y = 1 : m, z = 1 : p.

Функция h = slice(...) возвращает вектор-столбец дескрипторов для графических объектов surface, которыми являются сечения трехмерной функции.

Пример:

Построить сечения функции image1039.gif (278 bytes) в трехмерной области -2 <= x <= 2, -2 <= y <= 2, - 2 <= z <= 2,

x = -2 : .2 : 2;
y = -2 : .25 : 2;
z = -2 : .16 : 2;
[X, Y, Z] = meshgrid(x, y, z);
V = X .* exp(-X .^2 - Y .^2 - Z .^2); % Размер V равен 17 х 21 х 26
slice(x, y, z, v, [2], [2], [ -0.75 0.5], length(x)), grid

image1040.gif (18169 bytes)

Сопутствующие функции и команды: MESHGRID.

 

Наверх

WATERFALL - трехмерная поверхность

Синтаксис:

waterfall(X, Y, Z, C)
waterfall(x, y, Z, C )
waterfall(Z, C)
waterfall(X, Y, Z)
waterfall(x, y, Z)
waterfall(Z)

Описание:

Команда waterfall(X, Y, Z, C) строит поверхность для значений массива Z, определенных на множестве значений массивов X и Y. Она аналогична команде mesh, но не прорисовывает ребер сетки.

Команда waterfall(x, y, Z, C) выполняет ту же функцию, но вместо двумерных массивов X, Y использует их одномерные проекции, так что если length(x) = n, а length(y) = m, то [m, n] = size(Z).

Команда waterfall(Z, C) использует сетку, которая определяется одномерными массивами x = 1 : n и y = 1 : m.

Команды waterfall(X, Y, Z), mesh(x, y, Z), mesh(Z) используют в качестве массива цвета C = Z, то есть цвет в этом случае пропорционален высоте поверхности.

Функция h = waterfall(...) возвращает вектор дескрипторов h для графических объектов patch.

Примеры:

Построим трехмерную поверхность функции image1010.gif (260 bytes).

[X, Y] = meshgrid([ -2 : 0.1 : 2 ]);
Z = X .*exp(- X .^2 - Y .^2);
waterfall(X, Y, Z)

Сопутствующие функции и команды: MESH, SURF.

 

Наверх

FILL3 - закраска многоугольника в трехмерном пространстве

Cинтаксис:

fill3(x, y, z, ‘<цвет>‘)
fill3(x, y, z, c)
fill3(X, Y, C)
fill3(X1, Y1, C1, X2, Y2, C2, ...)
h = fill3(...)

Описание:

Команда fill3(x, y, z, ‘<цвет>‘) закрашивает многоугольник, заданный одномерными массивами x, y, z, цветом, который может быть задан либо одним из символов ‘r’, ’g’, ’b’, ‘c’, ’m’, ’y’, ’w’, ’k’, либо вектором [r g b]. Вершины многоугольника задаются соответствующими тройками элементов массивов x, y, z. Многоугольник должен быть замкнутым, поэтому его первая и последняя вершины, если это возможно, соединяются линией.

Команда fill3(x, y, z, c), где c - вектор той же длины, которую имеют и векторы x, y и z, закрашивает многоугольник цветом, задаваемым вектором С. Элементы вектора С масштабируются функцией caxis и используются как индексы текущей палитры для задания цветов в вершинах многоугольника; цвет внутри многоугольника определяется билинейной интерполяцией цветов в узлах.

Команда fill3(X, Y, Z, C), где X, Y и Z - массивы одинаковых размеров, строит для каждого столбца свой многоугольник. Если массив C - вектор-строка, количество элементов которой равно числу столбцов массивов X, Y, Z, то каждый многоугольник будет закрашен собственным цветом; это соответствует применению команды shading flat. Если массив C имеет те же размеры, которую имеют и массивы X, Y, Z, то закраска реализуется методом интерполяции; это соответствует применению команды shading interpolated.

Команда fill3(X1, Y1, Z1, C1, X2, Y2, Z2, C2, ...) позволяет выполнить закраску конечного количества многоугольников.

Функция h = fill3(...) возвращает вектор-столбец дескрипторов для графических объектов patch, которыми являются закрашенные многоугольники. Команда fill3(...) задает свойству Facecolor объекта patch одно из значений ‘flat’, ‘interp’ или [r g b].

Примеры:

Построим 4 случайно заданных многоугольника в трехмерном пространстве.

fill3(rand(3, 4), rand(3, 4), rand(3, 4), rand(3, 4))

Сопутствующие функции и команды: FILL, COLORMAP.

 

Наверх

VIEWMTX - вычисление матрицы управления углом просмотра

Cинтаксис:

T = viewmatx(az, el)
T = viewmatx(az, el, phi)
T = viewmatx(az, el, phi, xc)

Описание:

Функция T = viewmatx(az, el) вычисляет матрицу управления углом просмотра, или обобщенную матрицу преобразований для аффинного изображения [1]. Переменные az и el определяют соответственно углы азимута и возвышения точки просмотра. Положительные значения угла азимута соответствуют вращению вокруг оси z против часовой стрелки. Положительные значения угла возвышения соответствуют точке просмотра, расположенной сверху над объектом, отрицательные - снизу под объектом.

Функция T = viewmatx(az, el, phi) вычисляет матрицу управления углом просмотра для перспективного изображения. Угол phi задает поворот системы координат относительно оси x и тем самым позволяет управлять степенью искажения перспективы в соответствии со следующей таблицей.

phi Описание
Аффинное изображение
10° Телескопическое изображение
25° Нормальное фотоизображение
60° Широкоугольное изображение

Функция T = viewmatx(az, el, phi, vt) вычисляет матрицу управления углом просмотра для перспективного изображения, используя в качестве дополнительного параметра вектор координат vt наблюдаемой точки (точки наведения). Координаты рассматриваются как нормализованные в диапазоне [0 1]; по умолчанию вектор vt = [0 0 0].

Сопутствующие функции и команды: VIEW.

Ссылки:

1. Роджерс Д., Адамс Дж. Математические основы машинной графики: Пер. с англ. М.: Машиностроение, 1980. 240 с.

 

Наверх

VIEW - управление положением точки просмотра

Cинтаксис:

  view(az, el) view(2)
  view([az el]) view(3)
  view([x y z]) view(T)
  [az, el] = view;  
  T = view  

Описание:

Команды view(az, el) и view([az el]) задают положение точки просмотра, из которой наблюдается объект, используя углы азимута и возвышения.

Команда view([x, y, z]) задает положение точки просмотра в декартовой системе координат.

Команда view(2) устанавливает штатное положение точки просмотра для двумерной графики: az = 0°, el = 90°.

Команда view(3) устанавливает штатное положение точки просмотра для трехмерной графики: az = -37.5°, el = 30°.

Команда view(T) устанавливает положение точки просмотра в соответствии с обобщенной матрицей преобразований, вычисленной с помощью функции viewmtx.

Функция [az el] = view присваивает текущие значения углов азимута и возвышения соответственно переменным az и el.

Функция T = view присваивает текущее значение обобщенной матрицы преобразований переменной T.

Примеры:

Построим трехмерную поверхность функции image1010.gif (260 bytes) в виде нормального фотоизображения, когда камера наведена в точку с координатами [1 1 1].

[X, Y] = meshgrid([ -2 : 0.1 : 2 ]);
Z = X .*exp(- X .^2 - Y .^2);
view(X, Y, Z)
T = viewmtx(az, el, 25, [ 1 1 1 ])

  T = 0.7934 -0.6088 0 -0.1846
    0.3044 0.3967 0.8660 -1.5671
    -0.5272 -0.6871 0.5000 0.7143
    0.1653 0.2154 -0.1568 0.7761

view(T)

Сопутствующие функции и команды: VIEWMTX.

Теги

    14.05.2019

    Комментарии