Как найти точку на графике матлаб

I have this plot

[Full Resolution]

alt text

I need to make a straight vertical line at a point on x axis that the user enters and show the coordinates of the intersection of that vertical line with my plot.

How can this be done in MATLAB?

for example: the user enters 1020 then a straight vertical line will be drawn at 1020 that meets the plot at some point and the coordinates of that point will be shown somehow.

asked Oct 4, 2009 at 15:58

Lazer's user avatar

One way to do this is to use the GINPUT function to graphically select a point using the mouse. Assuming the data you plotted is stored in a variable data, the following code should do the sort of thing you want.

set(gca,'XLimMode','manual','YLimMode','manual');  % Fix axes limits
hold on;
[x,y] = ginput(1);  % Select a point with the mouse
x = round(x);       % Round x to nearest integer value
y = data(x);        % Get y data of intersection
plot([x x],get(gca,'YLim'),'k--');  % Plot dashed line
plot(x,y,'r*');     % Mark intersection with red asterisk
disp('Intersection coordinates:');
disp([x y]);        % Display the intersection point

The above assumes that the x-values of the graph are just indices into the array of data you’re plotting, which appears to be the case from the graph you show above.

answered Oct 4, 2009 at 17:16

gnovice's user avatar

gnovicegnovice

125k15 gold badges256 silver badges359 bronze badges

Try something like:

x = 1020;

% plot a vertical line
ylimits = get(gca, 'YLim');
hold on;
plot([x x], ylimits, 'k');

% mark the intersection with the plot
plot(x, data(x), 'ro');
annot = sprintf('Intersection: x=%f, y=%f', x, data(x));
text(x, data(x), annot);

The code is not tested and assumes that your figure is the current one, the plotted data is stored in the array “data” and that the original plot was done without specifying an extra x-vector.

answered Oct 4, 2009 at 17:17

groovingandi's user avatar

groovingandigroovingandi

1,98814 silver badges16 bronze badges

Adding markers to a line plot can be a useful way to distinguish multiple lines or to
highlight particular data points. Add markers in one of these ways:

  • Include a marker symbol in the line-specification input argument, such as
    plot(x,y,'-s').

  • Specify the Marker property as a name-value pair, such
    as plot(x,y,'Marker','s').

For a list of marker options, see Supported Marker Symbols.

Add Markers to Line Plot

Create a line plot. Display a marker at each data point by including the line-specification input argument when calling the plot function. For example, use '-o' for a solid line with circle markers.

x = linspace(0,10,100);
y = exp(x/10).*sin(4*x);
plot(x,y,'-o')

Figure contains an axes object. The axes object contains an object of type line.

If you specify a marker symbol and do not specify a line style, then plot displays only the markers with no line connecting them.

Figure contains an axes object. The axes contains a line object which displays its values using only markers.

Alternatively, you can add markers to a line by setting the Marker property as a name-value pair. For example, plot(x,y,'Marker','o') plots a line with circle markers.

Specify Marker Size and Color

Create a line plot with markers. Customize the markers by setting these properties using name-value pair arguments with the plot function:

  • MarkerSize – Marker size, which is specified as a positive value.

  • MarkerEdgeColor – Marker outline color, which is specified as a color name or an RGB triplet.

  • MarkerFaceColor – Marker interior color, which is specified as a color name or an RGB triplet.

Specify the colors using either a character vector of a color name, such as 'red', or an RGB triplet, such as [0.4 0.6 0.7]. An RGB triplet is a three-element row vector whose elements specify the intensities of the red, green, and blue components of the color. The intensities must be in the range [0,1].

x = linspace(0,10,50);
y = sin(x);
plot(x,y,'-s','MarkerSize',10,...
    'MarkerEdgeColor','red',...
    'MarkerFaceColor',[1 .6 .6])

Figure contains an axes object. The axes object contains an object of type line.

Control Placement of Markers Along Line

Create a line plot with 1,000 data points, add asterisks markers, and control the marker positions using the MarkerIndices property. Set the property to the indices of the data points where you want to display markers. Display a marker every tenth data point, starting with the first data point.

x = linspace(0,10,1000);
y = exp(x/10).*sin(4*x);
plot(x,y,'-*','MarkerIndices',1:10:length(y))

Figure contains an axes object. The axes object contains an object of type line.

Display Markers at Maximum and Minimum Data Points

Create a vector of random data and find the index of the minimum and maximum values. Then, create a line plot of the data. Display red markers at the minimum and maximum data values by setting the MarkerIndices property to a vector of the index values.

x = 1:100;
y = rand(100,1);
idxmin = find(y == max(y));
idxmax = find(y == min(y));
plot(x,y,'-p','MarkerIndices',[idxmin idxmax],...
    'MarkerFaceColor','red',...
    'MarkerSize',15)

Figure contains an axes object. The axes object contains an object of type line.

Revert to Default Marker Locations

Modify the marker locations, then revert back to the default locations.

Create a line plot and display large, square markers every five data points. Assign the chart line object to the variable p so that you can access its properties after it is created.

x = linspace(0,10,25);
y = x.^2;
p = plot(x,y,'-s');
p.MarkerSize = 10;
p.MarkerIndices = 1:5:length(y);

Figure contains an axes object. The axes object contains an object of type line.

Reset the MarkerIndices property to the default value, which is a vector of all index values from 1 to the number of data points.

p.MarkerIndices = 1:length(y);

Figure contains an axes object. The axes object contains an object of type line.

Supported Marker Symbols

Marker Description Resulting Marker
"o" Circle

Sample of circle marker

"+" Plus sign

Sample of plus sign marker

"*" Asterisk

Sample of asterisk marker

"." Point

Sample of point marker

"x" Cross

Sample of cross marker

"_" Horizontal line

Sample of horizontal line marker

"|" Vertical line

Sample of vertical line marker

"square" Square

Sample of square marker

"diamond" Diamond

Sample of diamond line marker

"^" Upward-pointing triangle

Sample of upward-pointing triangle marker

"v" Downward-pointing triangle

Sample of downward-pointing triangle marker

">" Right-pointing triangle

Sample of right-pointing triangle marker

"<" Left-pointing triangle

Sample of left-pointing triangle marker

"pentagram" Pentagram

Sample of pentagram marker

"hexagram" Hexagram

Sample of hexagram marker

"none" No markers Not applicable

The line-specification input argument does not support marker options that are
more than one character. Use the one character alternative or set the
Marker property instead.

See Also

Functions

  • plot | scatter | loglog | plot3

Properties

  • Line Properties

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

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

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

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

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

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

  • PLOT – график в линейном масштабе
  • LOGLOG – график в логарифмическом масштабе
  • SEMILOGX, SEMILOGY – график в полулогарифмическом масштабе
  • POLAR – график в полярных координатах

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

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

  • PLOT3 – построение линий и точек в трехмерном пространстве
  • MESHGRID – формирование двумерных массивов X и Y
  • MESH, MESHC, MESHZ – трехмерная сетчатая поверхность
  • SURF, SURFC – затененная сетчатая поверхность
  • SURFL – затененная поверхность с подсветкой
  • AXIS – масштабирование осей и вывод на экран
  • GRID – нанесение сетки
  • HOLD – управление режимом сохранения текущего графического окна
  • SUBPLOT – разбиение графического окна
  • ZOOM – управление масштабом графика
  • COLORMAP – палитра цветов
  • CAXIS – установление соответствия между палитрой цветов и масштабированием осей
  • SHADING – затенение поверхностей
  • CONTOURC – формирование массива описания линий уровня
  • CONTOUR – изображение линий уровня для трехмерной поверхности
  • CONTOUR3 – изображение трехмерных линий уровня

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

  • TITLE – заголовки для двух- и трехмерных графиков
  • XLABEL, YLABEL, ZLABEL – обозначение осей
  • CLABEL – маркировка линий уровня
  • TEXT – добавление к текущему графику текста
  • GTEXT – размещает заданный текст на графике с использованием мыши
  • LEGEND – пояснение к графику
  • COLORBAR – шкала палитры

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

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

  • BAR – столбцовые диаграммы
  • ERRORBAR – график с указанием интервала погрешности
  • HIST – построение гистограммы
  • STEM – дискретные графики
  • STAIRS – ступенчатый график
  • ROSE – гистограмма в полярных координатах
  • COMPASS, FEATHER – графики векторов
  • QUIVER – поле градиентов функции
  • COMET – движение точки по траектории
  • FILL – закраска многоугольника
  • COMET3 – движение точки по пространственной траектории
  • SLICE – сечения функции от трех переменных
  • WATERFALL – трехмерная поверхность
  • FILL3 – закраска многоугольника в трехмерном пространстве
  • VIEWMTX – вычисление матрицы управления углом просмотра
  • VIEW – управление положением точки просмотра

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

Наверх

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.

Рассмотрим различные способы применения функции 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′) % рис. г

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.

1 / 1 / 0

Регистрация: 29.05.2015

Сообщений: 103

1

Вывод значения ОДНОЙ точки на график

22.04.2016, 20:27. Показов 32462. Ответов 7


Студворк — интернет-сервис помощи студентам

Здравствуйте, задача простая, но решить ее не удалось. Есть – Две функции, графики которых отображаются в одном окне, но необходимо помимо графиков отметить красным одну точку с координатами (x,y) – не пойму как это реализовать!

Спасибо!



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

22.04.2016, 20:27

7

bobah16

372 / 342 / 42

Регистрация: 14.07.2015

Сообщений: 2,890

22.04.2016, 21:04

2

drzorin

Matlab M
1
plot(x,y)



0



drzorin

1 / 1 / 0

Регистрация: 29.05.2015

Сообщений: 103

22.04.2016, 22:28

 [ТС]

3

bobah16, неа))
вот было бы смешно если бы не было так грустно.

Только так – жирная красная точка

Matlab M
1
plot(tau,Elas,'r.','MarkerSize', 20)



0



372 / 342 / 42

Регистрация: 14.07.2015

Сообщений: 2,890

23.04.2016, 00:20

4

drzorin, что неа?
То, что я написал рисует точку, если, как вы указали, х и у это ее координаты. Ну а уж с размером и цветом сами разбирайтесь.



0



1 / 1 / 0

Регистрация: 29.05.2015

Сообщений: 103

23.04.2016, 00:23

 [ТС]

5

bobah16, не рисует, поэтому у меня и возникла проблема)



0



533 / 438 / 47

Регистрация: 17.07.2013

Сообщений: 2,236

23.04.2016, 01:20

6

Надо указать или * или о



0



0 / 0 / 0

Регистрация: 03.12.2019

Сообщений: 10

15.11.2020, 20:55

7

Добавлено через 47 секунд
drzorin, как решили проблему?



0



Alexis333

519 / 365 / 105

Регистрация: 31.10.2016

Сообщений: 3,105

17.11.2020, 20:19

8

drzorin, после построения графиков нужно ввести команду

Matlab M
1
hold on;

тогда можно будет рисовать поверх уже построенного, в частности отобразить красную точку, например так

Matlab M
1
plot(x,y,'.','color','red');



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

17.11.2020, 20:19

Помогаю со студенческими работами здесь

Доступ из одной сети в другую от точки А до точки Б без шлюза в точке Б
Здравствуйте уважаемые профессионалы!
В сетях не силен поэтому спрашиваю, сильно не ругайте)…

Определить точки, расстояние между которыми минимально, а сами точки находятся в одной четверти
Случайным образом формируются координаты X и Y 60 точек. Диапазон значений координат от -150 до…

Даны три точки А,В,С, лежащие на одной прямой. Определить расположение точки С относительно луча АВ
Проверьте пожалуйста формулу для вычисления данной задачи, что не так?
Даны три точки А,В,С,…

А, В и С лежат на одной прямой. Напишите условие того, что точки А и В находятся по одну сторону от точки С
А, В и С лежат на одной прямой. Напишите условие того, что точки А и В находятся по одну сторону от…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

8

Документация

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

Включайте символ маркера в строчку с дополнительными параметрами, такую как plot(x,y,’-s’) .

Задайте Marker свойство как пара “имя-значение”, такая как plot(x,y,’Marker’,’s’) .

Для списка опций маркера смотрите Поддерживаемые Символы маркера.

Добавление маркеров к линейному графику

Постройте график. Отобразите маркер в каждой точке данных включением строчки с дополнительными параметрами при вызове plot функция. Например, используйте ‘-o’ для сплошной линии с круговыми маркерами.

Figure contains an axes object. The axes object contains an object of type line.

Если вы задаете символ маркера и не задаете стиль линии, то plot отображения только маркеры без линии, соединяющей их.

Figure contains an axes object. The axes object contains an object of type line.

В качестве альтернативы можно добавить маркеры в линию путем установки Marker свойство как пара “имя-значение”. Например, plot(x,y,’Marker’,’o’) строит график с круговыми маркерами.

Определение размера маркера и цвета

Постройте график с маркерами. Настройте маркеры путем установки этих аргументов пары “имя-значение” использования свойств с plot функция:

MarkerSize — Размер маркера, который задан как положительное значение.

MarkerEdgeColor — Цвет контура маркера, который задан как название цвета или триплет RGB.

MarkerFaceColor — Внутренний цвет маркера, который задан как название цвета или триплет RGB.

Задайте цвета с помощью любого вектор символов названия цвета, такие как ‘red’ , или триплет RGB, такой как [0.4 0.6 0.7] Триплет RGB представляет собой трехэлементный вектор-строку, элементы которого определяют интенсивность красных, зеленых и синих компонентов цвета. Интенсивность должна быть в области значений [0,1].

Figure contains an axes object. The axes object contains an object of type line.

Управление размещением маркеров вдоль строки

Постройте график с 1 000 точек данных, добавьте маркеры звездочек и управляйте положениями маркера с помощью MarkerIndices свойство. Установите свойство на индексы точек данных, где вы хотите отобразить маркеры. Отобразите маркер каждая десятая точка данных, начиная с точки First Data.

Figure contains an axes object. The axes object contains an object of type line.

Отображение маркеров в максимальных и минимальных точках данных

Создайте вектор из случайных данных и найдите индекс минимальных и максимальных значений. Затем постройте график данных. Отобразите красные маркеры в минимальных и максимальных значениях данных путем установки MarkerIndices свойство к вектору из значений индекса.

Figure contains an axes object. The axes object contains an object of type line.

Вернитесь к местоположениям маркера по умолчанию

Измените местоположения маркера, затем вернитесь назад к местоположениям по умолчанию.

Постройте график и отображение большие, квадратные маркеры каждые пять точек данных. Присвойте объект линии на графике переменной p так, чтобы можно было получить доступ к его свойствам после того, как это будет создано.

Figure contains an axes object. The axes object contains an object of type line.

Сбросьте MarkerIndices свойство к значению по умолчанию, которое является вектором из всех значений индекса от 1 до количества точек данных.

Figure contains an axes object. The axes object contains an object of type line.

Поддерживаемые символы маркера

Sample of circle marker

Sample of plus sign marker

Sample of asterisk marker

Sample of point marker

Sample of cross marker

Sample of horizontal line marker

Sample of vertical line marker

Sample of square marker

Sample of diamond line marker

Sample of upward-pointing triangle marker

Sample of downward-pointing triangle marker

Sample of right-pointing triangle marker

Sample of left-pointing triangle marker

Sample of pentagram marker

Sample of hexagram marker

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

Смотрите также

Функции

  • plot | scatter | loglog | plot3

Свойства

Открытый пример

У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?

Документация MATLAB

Поддержка

© 1994-2021 The MathWorks, Inc.

1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.

2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.

3. Сохраняйте структуру оригинального текста — например, не разбивайте одно предложение на два.

4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.

5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.

РАБОТА С ГРАФИКАМИ В MATLAB

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

Функция plot

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

Предположим, что требуется вывести график функции синуса в диапазоне от 0 до . Для этого зададим вектор (множество) точек по оси Ox, в которых будут отображаться значения функции синуса:

В результате получится вектор столбец со множеством значений от 0 до и с шагом 0,01. Затем, вычислим множество значений функции синуса в этих точках:

и выведем результат на экран

В результате получим график, представленный на рис. 3.1.

Представленная запись функции plot() показывает, что сначала записывается аргумент со множеством точек оси Ох, а затем, аргумент со множеством точек оси Oy. Зная эти значения, функция plot() имеет возможность построить точки на плоскости и линейно их интерполировать для придания непрерывного вида графика.

Отображение функции синуса с помощью функции plot()

Рис. 3.1. Отображение функции синуса с помощью функции plot().

Функцию plot() можно записать и с одним аргументом x или y:

в результате получим два разных графика, представленные на рис. 3.2.

Анализ рис. 3.2 показывает, что в случае одного аргумента функция plot() отображает множество точек по оси Oy, а по оси Оx происходит автоматическая генерация множества точек с единичным шагом. Следовательно, для простой визуализации вектора в виде двумерного графика достаточно воспользоваться функцией plot() с одним аргументом.

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

Результат работы данного фрагмента программы представлен на рис. 3.3.

Рис. 3.2. Результаты работы функции plot() с одним аргументом:

а — plot(x); б — plot(y).

Отображение двух графиков в одних координатных осях

Рис. 3.3. Отображение двух графиков в одних координатных осях.

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

которые требуется отобразить на экране. Для этого объединим их в двумерную матрицу

в которой столбцы составлены из векторов y1 и y2 соответственно. Такая матрица будет отображена функцией plot([y1′ y2′]); % апострофы переводят вектор-строку % в вектор-столбец в виде двух графиков (рис. 3.4).

Отображение двумерной матрицы в виде двух графиков

Рис. 3.4. Отображение двумерной матрицы в виде двух графиков.

Два вектора в одних осях можно отобразить только в том случае, если их размерности совпадают. Когда же выполняется работа с векторами разных размерностей, то они либо должны быть приведены друг к другу по числу элементов, либо отображены на разных графиках. Отобразить графики в разных координатных осях можно несколькими способами. В самом простом случае можно создать два графических окна и в них отобразить нужные графики. Это делается следующим образом:

plot(x1, y1); % рисование первого графика

figure; % создание 2-го графического окна

plot(x2, y2); % рисование 2-го графика во 2-м окне

Функция figure, используемая в данной программе, создает новое графическое окно и делает его активным. Функция plot(), вызываемая сразу после функции figure, отобразит график в текущем активном графическом окне. В результате на экране будут показаны два окна с двумя графиками.

Неудобство работы приведенного фрагмента программы заключается в том, что повторный вызов функции figure отобразит на экране еще одно новое окно и если программа будет выполнена дважды, то на экране окажется три графических окна, но только в двух из них будут актуальные данные. В этом случае было бы лучше построить программу так, чтобы на экране всегда отображалось два окна с нужными графиками. Этого можно достичь, если при вызове функции figure в качестве аргумента указывать номер графического о. Пример работы функции axis()

Рис. 3.8. Пример работы функции axis()

В заключении данного параграфа рассмотрим возможности создания подписей графиков, осей и отображения сетки на графике. Для этого используются функции языка MatLab, перечисленные в табл. 3.4.

Построение двумерных графиков функций в среде MATLAB

Основной функцией, обеспечивающей построение графиков функций одной переменной в линейном масштабе в декартовой системе координат, является функцияplot, общаяформа синтаксиса которой имеет вид:

Plot (x, у)

Plot (x, у, s)

Plot (x1, y1, s1, x2, y2, s2, . ,xn, yn, sn),

где: х – аргумент функции, задаваемой в виде вектора;у – функция, представленная в аналитическом виде или в виде вектора или матрицы;s– вектор стилей графика; константа, определяющая цветлиний графика, тип точек и тип линии;x1, х2. хn– аргументы функций, изображаемых на одномграфике;y1, у2, . уn– функции, изображаемые на одном графике.

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

Plot(x, y)

Hold on

Plot(x, f)

Данная последовательность команд аналогична одной команде следующего вида:

Plot(x, y, x, f)

Для создания нового графического окна в среде MATLAB используется команда figure, после применения которой, все последующие графические операции будут осуществлять построение графиков в данном окне. Например, следующая последовательность команд обеспечивает построение двух графиков функций f(x)и y(x)в двух различных графических окнах:

Plot(x, y)

Figure

Plot(x, f)

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

Таблица 1Параметры, определяющие стиль графика

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

Например, команда следующего вида позволяет построить график красного цвета (‘R’), точки графика представлены звездочками (‘*’), линия графика, соединяющая эти точки является штрихпунктирной линией (‘-.’):

plot (x,у,[R,*,-.])

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

Графическое представление в виде ступенчатого графика осуществляется с помощью функции stairs, синтаксис которой аналогичен синтаксису функции plot.

Для построения двух графиков в разном масштабе в одной системе координат используется функция plotyy, которая позволяет отображать на графике 2 оси ординат. Синтаксис функции plotyy аналогичен синтаксису функции plot.

Для построения графиков в логарифмическом и полулогарифмическом масштабе используются следующие функции:

loglog – построение графика в логарифмическом масштабе;

semilogx – построение графика в полулогарифмическом масштабе по оси x;

semilogy – построение графика в полулогарифмическом масштабе по оси y.

Синтаксис функций построения графиком в логарифмическом масштабе аналогичен синтаксису функции plot.

Для оформления графиков в среде MATLABслужат следующие операторы:

title(‘inscription’)– задание титульной надписина графике (inscription– текстовая надпись, которую необходимо заключить в одинарные кавычки);

xlabel(‘inscription’) – задание надписи по оси x;

ylabel(‘inscription’)– задание надписи по оси y;

gridon– задание пунктирной масштабной сетки на графике.

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

Subplot (m, n, p)

где m – число графиков по горизонтали, n – по вертикали, p – текущая позиция графика.

Номер подграфика отсчитывается от левого верхнего угла построчно. Команда следующего вида предполагает наличие 6 подграфиков в одном графическом окне (3 по вертикали и 2 по горизонтали):

Subplot (3, 2, 4)

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

Добавить комментарий