exponenta event banner

fsurf

Печать поверхности 3-D

Описание

пример

fsurf(f) создает график поверхности функции z = f(x,y) за интервал по умолчанию [-5 5] для x и y.

fsurf(f,xyinterval) графики на указанном интервале. Использование одного и того же интервала для обоих x и y, указать xyinterval как двухэлементный вектор вида [min max]. Для использования различных интервалов укажите четырехэлементный вектор формы [xmin xmax ymin ymax].

пример

fsurf(funx,funy,funz) отображает параметрическую поверхность, определяемую x = funx(u,v), y = funy(u,v), z = funz(u,v) за интервал по умолчанию [-5 5] для u и v.

fsurf(funx,funy,funz,uvinterval) графики на указанном интервале. Использование одного и того же интервала для обоих u и v, указать uvinterval как двухэлементный вектор вида [min max]. Для использования различных интервалов укажите четырехэлементный вектор формы [umin umax vmin vmax].

fsurf(___,LineSpec) задает стиль линии, обозначение маркера и цвет поверхности. Например, '-r' указывает красные линии. Используйте эту опцию после любой из предыдущих комбинаций входных аргументов.

пример

fsurf(___,Name,Value) задает свойства поверхности, используя один или несколько аргументов пары имя-значение. Используйте эту опцию после любой комбинации входных аргументов в предыдущих синтаксисах.

fsurf(ax,___) строит графики в осях, указанных ax вместо текущих осей (gca).

пример

fs = fsurf(___) возвращает FunctionSurface объект или ParameterizedFunctionSurface объект, в зависимости от входных данных. Использовать fs для запроса и изменения свойств определенной поверхности. Список свойств см. в разделах Функции Свойства поверхности или Параметры Функции Свойства поверхности.

Примеры

свернуть все

Постройте график выражения sin (x) + cos (y) на интервале по умолчанию -5 < x < 5 и -5 < y < 5.

fsurf(@(x,y) sin(x)+cos(y))

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

Постройте график кусочного выражения

erf (x) + cos (y) -5 < x < 0sin (x) + cos (y) 0 < x < 5

более -5 < y < 5.

Укажите интервал печати в качестве второго входного аргумента fsurf. При печати нескольких поверхностей на разных интервалах в одних и тех же осях границы оси корректируются для включения всех данных.

f1 = @(x,y) erf(x)+cos(y);
fsurf(f1,[-5 0 -5 5])
hold on
f2 = @(x,y) sin(x)+cos(y);
fsurf(f2,[0 5 -5 5])
hold off

Figure contains an axes. The axes contains 2 objects of type functionsurface.

Печать параметризованной поверхности

x = rcos (u) sin (v) y = rsin (u) sin (v) z = rcos (v) где = 2 + sin (7u + 5v)

для 0 < u < 2δ и 0 < v < δ. Добавление света к поверхности с помощьюcamlight.

r = @(u,v) 2 + sin(7.*u + 5.*v);
funx = @(u,v) r(u,v).*cos(u).*sin(v);
funy = @(u,v) r(u,v).*sin(u).*sin(v);
funz = @(u,v) r(u,v).*cos(v);
fsurf(funx,funy,funz,[0 2*pi 0 pi]) 
camlight

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

Для x и y от - до постройте график 3-D поверхности ysin (x) -xcos (y). Добавьте заголовок и метки осей и отобразите контур осей.

fsurf(@(x,y) y.*sin(x)-x.*cos(y),[-2*pi 2*pi])
title('ysin(x) - xcos(y) for x and y in [-2\pi,2\pi]')
xlabel('x');
ylabel('y');
zlabel('z');
box on

Figure contains an axes. The axes with title ysin(x) - xcos(y) for x and y in [-2\pi,2\pi] contains an object of type functionsurface.

Задайте значения засечек по оси X и связанные с ними метки с помощью XTickLabel и XTick свойства объекта оси. Доступ к объекту-осям с помощью gca. Аналогично, задайте значения засечек по оси Y и связанные с ними метки.

ax = gca;
ax.XTick = -2*pi:pi/2:2*pi;
ax.XTickLabel = {'-2\pi','-3\pi/2','-\pi','-\pi/2','0','\pi/2','\pi','3\pi/2','2\pi'};

ax.YTick = -2*pi:pi/2:2*pi;
ax.YTickLabel = {'-2\pi','-3\pi/2','-\pi','-\pi/2','0','\pi/2','\pi','3\pi/2','2\pi'};

Figure contains an axes. The axes with title ysin(x) - xcos(y) for x and y in [-2\pi,2\pi] contains an object of type functionsurface.

Постройте график параметрической поверхности x = usin (v), y = -ucos (v), z = v с различными стилями линий для различных значений v. Для -5 < v < -2 используйте пунктирную зеленую линию для кромок поверхности. Для -2 < v < 2 отключите кромки, установивEdgeColor свойство для 'none'.

funx = @(u,v) u.*sin(v);
funy = @(u,v) -u.*cos(v);
funz = @(u,v) v;

fsurf(funx,funy,funz,[-5 5 -5 -2],'--','EdgeColor','g')
hold on
fsurf(funx,funy,funz,[-5 5 -2 2],'EdgeColor','none')
hold off

Figure contains an axes. The axes contains 2 objects of type parameterizedfunctionsurface.

Печать параметрической поверхности

x = e- | u |/10sin (5 | v |) y = e- | u |/10cos (5 | v |) z = u.

Назначьте параметризованный объект поверхности функции переменной.

x = @(u,v) exp(-abs(u)/10).*sin(5*abs(v));
y = @(u,v) exp(-abs(u)/10).*cos(5*abs(v));
z = @(u,v) u;
fs = fsurf(x,y,z)

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

fs = 
  ParameterizedFunctionSurface with properties:

    XFunction: @(u,v)exp(-abs(u)/10).*sin(5*abs(v))
    YFunction: @(u,v)exp(-abs(u)/10).*cos(5*abs(v))
    ZFunction: @(u,v)u
    EdgeColor: [0 0 0]
    LineStyle: '-'
    FaceColor: 'interp'

  Show all properties

Изменение интервала печати для u кому [-30 30] путем установки URange свойство объекта. Добавление прозрачности к поверхности путем установки параметра FaceAlpha свойство имеет значение от 0 (прозрачный) до 1 (непрозрачный).

fs.URange = [-30 30];

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

fs.FaceAlpha = .5;

Отображение контуров под графиком поверхности путем установки параметра 'ShowContours' опция для 'on'.

f = @(x,y) 3*(1-x).^2.*exp(-(x.^2)-(y+1).^2)...
    - 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2)...
    - 1/3*exp(-(x+1).^2 - y.^2);
fsurf(f,[-3 3],'ShowContours','on')

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

Управление разрешением графика поверхности с помощью команды 'MeshDensity' вариант. Увеличение 'MeshDensity' позволяет сделать более плавные и точные графики, уменьшая при этом скорость печати.

Создайте два графика в формате мозаичной диаграммы. На первом графике отобразите параметрическую поверхность x = sin (s), y = cos (s), z = (t/10) sin (1/s). Поверхность имеет большой зазор. Устраните эту проблему, увеличив'MeshDensity' кому 40 во втором сюжете. fsurf заполняет пробел, показывая, что, увеличивая 'MeshDensity' вы увеличили разрешение.

tiledlayout(2,1)
nexttile
fsurf(@(s,t) sin(s), @(s,t) cos(s), @(s,t) t/10.*sin(1./s))
view(-172,25)
title('Default MeshDensity = 35')

nexttile
fsurf(@(s,t) sin(s), @(s,t) cos(s), @(s,t) t/10.*sin(1./s),'MeshDensity',40)
view(-172,25)
title('Increased MeshDensity = 40')

Figure contains 2 axes. Axes 1 with title Default MeshDensity = 35 contains an object of type parameterizedfunctionsurface. Axes 2 with title Increased MeshDensity = 40 contains an object of type parameterizedfunctionsurface.

Входные аргументы

свернуть все

3-D функцию для печати, заданную как дескриптор функции для именованной или анонимной функции.

Укажите функцию формы z = f(x,y). Функция должна принимать два входных аргумента матрицы и возвращать выходной аргумент матрицы одинакового размера. Для достижения максимальной производительности используйте операторы массива вместо матричных операторов. Например, использовать .* (times) вместо * (mtimes).

Пример: f = @(x,y) sin(x) + cos(y);

Интервал печати для x и y, указанные в одной из следующих форм:

  • Вектор формы [min max] - Использовать интервал [min max] для обоих x и y

  • Вектор формы [xmin xmax ymin ymax] - Использовать интервал [xmin xmax] для x и [ymin ymax] для y.

Параметрическая функция для координат x, заданная как дескриптор функции для именованной или анонимной функции.

Укажите функцию формы x = funx(u,v). Функция должна принимать два входных аргумента матрицы и возвращать выходной аргумент матрицы одинакового размера. Для достижения максимальной производительности используйте операторы массива вместо матричных операторов. Например, использовать .* (times) вместо * (mtimes).

Пример: funx = @(u,v) u.*sin(v);

Параметрическая функция для координат y, заданная как дескриптор функции для именованной или анонимной функции.

Укажите функцию формы y = funy(u,v). Функция должна принимать два входных аргумента матрицы и возвращать выходной аргумент матрицы одинакового размера. Для достижения максимальной производительности используйте операторы массива вместо матричных операторов. Например, использовать .* (times) вместо * (mtimes).

Пример: funy = @(t) @(u,v) -u.*cos(v);

Параметрическая функция для координат z, заданная как дескриптор функции для именованной или анонимной функции.

Укажите функцию формы z = funz(u,v). Функция должна принимать два входных аргумента матрицы и возвращать выходной аргумент матрицы одинакового размера. Для достижения максимальной производительности используйте операторы массива вместо матричных операторов. Например, использовать .* (times) вместо * (mtimes).

Пример: funz = @(u,v) v;

Интервал печати для u и v, указанные в одной из следующих форм:

  • Вектор формы [min max] - Использовать интервал [min max] для обоих u и v

  • Вектор формы [umin umax vmin vmax] - Использовать интервал [umin umax] для u и [vmin vmax] для v.

Объект Axes. Если объект axes не указан, то fsurf использует текущие оси.

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

Пример: '--or' - красная пунктирная линия с маркерами окружности

Стиль линииОписание
-Сплошная линия
--Пунктирная линия
:Пунктирная линия
-.Черточно-точечная линия
МаркерОписание
'o'Круг
'+'Знак «Плюс»
'*'Звездочка
'.'Пункт
'x'Крест
'_'Горизонтальная линия
'|'Вертикальная линия
's'Квадрат
'd'Алмаз
'^'Треугольник, направленный вверх
'v'Треугольник, направленный вниз
'>'Прямоугольный треугольник
'<'Треугольник, указывающий влево
'p'Пентаграмма
'h'Hexagram
ЦветОписание

y

желтый

m

пурпурный

c

голубой

r

красный

g

зеленый

b

синий

w

белый

k

черный

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: 'Marker','o','MarkerFaceColor','red'

Список свойств здесь является только подмножеством. Полный список см. в разделе Функции Свойства поверхности или Параметры Функции Свойства поверхности.

Количество точек оценки на направление, указанное как число. Значение по умолчанию: 35. Поскольку fsurf объекты используют адаптивную оценку, фактическое количество точек оценки больше.

Пример: 100

Отображать контурный график на графике, указанный как 'on' или 'off'или как числовое или логическое 1 (true) или 0 (false). Значение 'on' эквивалентно true, и 'off' эквивалентно false. Таким образом, можно использовать значение этого свойства в качестве логического значения. Значение сохраняется как логическое значение типа вкл/выкл matlab.lang.OnOffSwitchState.

Цвет линии, указан как 'interp', триплет RGB, шестнадцатеричный цветовой код, имя цвета или короткое имя. Значение триплета RGB по умолчанию [0 0 0] соответствует черному. 'interp' значение цветит края на основе ZData значения.

Для пользовательского цвета укажите триплет RGB или шестнадцатеричный цветовой код.

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

  • Шестнадцатеричный цветовой код - это символьный вектор или строковый скаляр, начинающийся с хэш-символа (#), за которыми следуют три или шесть шестнадцатеричных цифр, которые могут варьироваться от 0 кому F. Значения не чувствительны к регистру. Таким образом, цветовые коды '#FF8800', '#ff8800', '#F80', и '#f80' эквивалентны.

Можно также задать некоторые общие цвета по имени. В этой таблице перечислены параметры именованного цвета, эквивалентные триплеты RGB и шестнадцатеричные цветовые коды.

Имя цветаКраткое имяТриплет RGBШестнадцатеричный цветовой кодВнешность
'red''r'[1 0 0]'#FF0000'

'green''g'[0 1 0]'#00FF00'

'blue''b'[0 0 1]'#0000FF'

'cyan' 'c'[0 1 1]'#00FFFF'

'magenta''m'[1 0 1]'#FF00FF'

'yellow''y'[1 1 0]'#FFFF00'

'black''k'[0 0 0]'#000000'

'white''w'[1 1 1]'#FFFFFF'

'none'НеприменимоНеприменимоНеприменимоБез цвета

Вот триплеты RGB и шестнадцатеричные цветовые коды для цветов по умолчанию MATLAB ®, используемых на многих типах графиков.

Триплет RGBШестнадцатеричный цветовой кодВнешность
[0 0.4470 0.7410]'#0072BD'

[0.8500 0.3250 0.0980]'#D95319'

[0.9290 0.6940 0.1250]'#EDB120'

[0.4940 0.1840 0.5560]'#7E2F8E'

[0.4660 0.6740 0.1880]'#77AC30'

[0.3010 0.7450 0.9330]'#4DBEEE'

[0.6350 0.0780 0.1840]'#A2142F'

Стиль линии, указанный в качестве одного из параметров, перечисленных в этой таблице.

Стиль линииОписаниеРезультирующая линия
'-'Сплошная линия

'--'Пунктирная линия

':'Пунктирная линия

'-.'Пунктирная линия

'none'Без строкиБез строки

Ширина линии, заданная как положительное значение в точках, где 1 точка = 1/72 дюйма. Если линия имеет маркеры, то ширина линии также влияет на кромки маркера.

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

Символ маркера, указанный как одно из значений, перечисленных в этой таблице. По умолчанию объект не отображает маркеры. Задание обозначения маркера добавляет маркеры в каждую точку данных или вершину.

СтоимостьОписание
'o'Круг
'+'Знак «Плюс»
'*'Звездочка
'.'Пункт
'x'Крест
'_'Горизонтальная линия
'|'Вертикальная линия
'square' или 's'Квадрат
'diamond' или 'd'Алмаз
'^'Треугольник, направленный вверх
'v'Треугольник, направленный вниз
'>'Прямоугольный треугольник
'<'Треугольник, указывающий влево
'pentagram' или 'p'Пятиконечная звезда (пентаграмма)
'hexagram' или 'h'Шестиконечная звезда (гексаграмма)
'none'Без маркеров

Размер маркера, заданный как положительное значение в точках, где 1 точка = 1/72 дюйма.

Выходные аргументы

свернуть все

Один или несколько FunctionSurface или ParameterizedFunctionSurface объекты, возвращаемые в виде скаляра или вектора.

  • Если вы используете fsurf(f) синтаксис или разновидность этого синтаксиса, то fsurf прибыль FunctionSurface объекты.

  • Если вы используете fsurf(funx,funy,funz) синтаксис или разновидность этого синтаксиса, то fsurf прибыль ParameterizedFunctionSurface объекты.

Эти объекты можно использовать для запроса и изменения свойств определенной поверхности. Список свойств см. в разделах Функции Свойства поверхности и Параметры Функции Свойства поверхности.

Представлен в R2016a