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 запрос и изменение свойств определенной поверхности. Список свойств см. в разделе FunctionSurface Properties или ParameterizedFunctionSurface Properties.

Примеры

свернуть все

Постройте график выражения 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)wherer=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 от -2π кому 2π, постройте график 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.

Объект осей. Если вы не задаете объект осей, то 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'

Список свойств здесь является только подмножеством. Полный список см. в разделе Свойства FunctionSurface или Свойства ParameterizedFunctionSurface.

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

Пример: 100

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

Цвет линии, заданный как 'interp', триплет RGB, шестнадцатеричный цветовой код, название цвета или краткое имя. Значение триплета RGB по умолчанию [0 0 0] соответствует черному. The '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 объекты.

Можно использовать эти объекты для запроса и изменения свойств определенной поверхности. Список свойств см. в разделах Свойства FunctionSurface и Свойства ParameterizedFunctionSurface.

Введенный в R2016a