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)+потому что(y) на интервале по умолчанию -5<x<5 и -5<y<5.

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

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

erf(x)+потому что(y)-5<x<0sin(x)+потому что(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

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

x=rпотому что(u)sin(v)y=rsin(u)sin(v)z=rпотому что(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

Для x и y от -2π к 2π, постройте 3-D поверхность ysin(x)-xпотому что(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

Установите значения деления оси 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'};

Постройте параметрическую поверхность x=usin(v), y=-uпотому что(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

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

x=e-|u|/10sin(5|v|)y=e-|u|/10потому что(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)

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];

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')

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

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

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

subplot(2,1,2)
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')

Входные параметры

свернуть все

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 использует текущую систему координат.

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

Пример: 'r--o' задает красный цвет, пунктирную линию и круговые маркеры

Спецификатор стиля линииОписание
-Сплошная линия (значение по умолчанию)
--Пунктирная линия
:Пунктирная линия
-.Штрихпунктирная линия
Спецификатор маркераОписание
oКруг
+Знак «плюс»
*Звездочка
.Точка
xКрест
sКвадрат
dРомб
^Треугольник, направленный вверх
vНисходящий треугольник
>Треугольник, указывающий вправо
<Треугольник, указывающий влево
pПентаграмма
hГексаграмма
\color{specifier}Описание

y

желтый

m

пурпурный

c

голубой

r

красный

g

зеленый

b

синий

w

белый

k

черный

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

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

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

Список свойств здесь является только подмножеством. Для полного списка смотрите свойства FunctionSurface Properties orParameterizedFunctionSurface.

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

Пример: 100

Отобразите контурный график в соответствии с графиком, заданным как 'off' (значение по умолчанию) или 'on'.

Цвет линии, заданный как '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 дюйма. Если у линии есть маркеры, ширина линии также влияет на края маркера.

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

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

Пример: '+'

Пример: 'diamond'

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

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

свернуть все

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

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

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

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

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

Функции

Свойства

Введенный в R2016a