Main Content

fsurf

3차원 곡면 플로팅

  • Plot 3-D surface

설명

예제

fsurf(f)xy의 디폴트 구간 [-5 5]에 함수 z = f(x,y)의 곡면 플롯을 생성합니다.

fsurf(f,xyinterval)은 지정된 구간에 플로팅합니다. xy 둘 다에 동일한 구간을 사용하려면 [min max] 형식의, 요소를 2개 가진 벡터로 xyinterval을 지정하십시오. 두 값에 각각 다른 구간을 사용하려면 [xmin xmax ymin ymax] 형식의, 요소를 4개 가진 벡터를 지정하십시오.

예제

fsurf(funx,funy,funz)uv에 대한 디폴트 구간 [-5 5]x = funx(u,v), y = funy(u,v), z = funz(u,v)로 정의된 파라미터 곡면을 플로팅합니다.

fsurf(funx,funy,funz,uvinterval)은 지정된 구간에 플로팅합니다. uv 둘 다에 동일한 구간을 사용하려면 [min max] 형식의, 요소를 2개 가진 벡터로 uvinterval을 지정하십시오. 두 값에 각각 다른 구간을 사용하려면 [umin umax vmin vmax] 형식의, 요소를 4개 가진 벡터를 지정하십시오.

fsurf(___,LineSpec)은 선 스타일, 마커 기호, 곡면 색을 설정합니다. 예를 들어, '-r'은 빨간색 선을 지정합니다. 위에 나와 있는 입력 인수의 조합 다음에 이 옵션을 사용하십시오.

예제

fsurf(___,Name,Value)는 하나 이상의 이름-값 쌍의 인수를 사용하여 surface 속성을 지정합니다. 위에 열거된 구문에 나와 있는 입력 인수의 조합 다음에 이 옵션을 사용하십시오.

fsurf(ax,___)는 현재 좌표축(gca) 대신 ax로 지정된 좌표축에 플로팅됩니다.

예제

fs = fsurf(___)는 입력값에 따라 FunctionSurface 객체나 ParameterizedFunctionSurface 객체를 반환합니다. fs를 사용하여 특정 곡면의 속성을 쿼리하고 수정할 수 있습니다. 속성 목록은 FunctionSurface 속성ParameterizedFunctionSurface 속성를 참조하십시오.

예제

모두 축소

디폴트 구간 -5<x<5-5<y<5에 표현식 sin(x)+cos(y)를 플로팅합니다.

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

Figure contains an axes object. The axes object 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 object. The axes object 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 object. The axes object contains an object of type parameterizedfunctionsurface.

xy에 대해 -2π부터 2π까지의 구간에 3차원 곡면 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 object. The axes object with title ysin(x) blank - blank xcos(y) blank for blank x blank and blank y blank in blank [- 2 pi , 2 pi ], xlabel x, ylabel y contains an object of type functionsurface.

axes 객체의 XTickLabel 속성과 XTick 속성을 사용하여 x축 눈금 값과 관련 레이블을 설정합니다. gca를 사용하여 axes 객체에 액세스합니다. 마찬가지로, 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 object. The axes object with title ysin(x) blank - blank xcos(y) blank for blank x blank and blank y blank in blank [- 2 pi , 2 pi ], xlabel x, ylabel y contains an object of type functionsurface.

v의 다양한 값에 대해 각기 다른 선 스타일을 사용하여 파라미터 곡면 x=usin(v), y=-ucos(v), z=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 object. The axes object contains 2 objects of type parameterizedfunctionsurface.

다음과 같이 파라미터 곡면을 플로팅합니다.

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

파라미터화된 함수 surface 객체를 변수에 할당합니다.

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 object. The axes object 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'

  Use GET to show all properties

객체의 URange 속성을 설정하여 u에 대한 플로팅 구간을 [-30 30]으로 변경합니다. FaceAlpha 속성을 0(투명)과 1(불투명) 사이의 값으로 설정하여 곡면에 투명도를 추가합니다.

fs.URange = [-30 30];
fs.FaceAlpha = .5;

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

'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 object. The axes object 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 objects. Axes object 1 with title Default MeshDensity = 35 contains an object of type parameterizedfunctionsurface. Axes object 2 with title Increased MeshDensity = 40 contains an object of type parameterizedfunctionsurface.

입력 인수

모두 축소

플로팅할 3차원 함수로, 명명된 함수나 익명 함수에 대한 함수 핸들로 지정됩니다.

z = f(x,y) 형식의 함수를 지정해야 합니다. 이 함수는 행렬 입력 인수 두 개를 받고 같은 크기를 갖는 행렬 출력 인수 하나를 반환해야 합니다. 최적의 성능을 구현하려면 행렬 연산자 대신 배열 연산자를 사용하십시오. 예를 들어, *(mtimes) 대신 .*(times)를 사용하십시오.

예: f = @(x,y) sin(x) + cos(y);

xy의 플로팅 구간으로, 다음 형식 중 하나로 지정됩니다.

  • [min max] 형식의 벡터 — xy 둘 다에 구간 [min max]를 사용합니다.

  • [xmin xmax ymin ymax] 형식의 벡터 — x에 구간 [xmin xmax]를, y에 구간 [ymin ymax]를 사용합니다.

x 좌표의 파라미터 함수로, 명명된 함수나 익명 함수에 대한 함수 핸들로 지정됩니다.

x = funx(u,v) 형식의 함수를 지정해야 합니다. 이 함수는 행렬 입력 인수 두 개를 받고 같은 크기를 갖는 행렬 출력 인수 하나를 반환해야 합니다. 최적의 성능을 구현하려면 행렬 연산자 대신 배열 연산자를 사용하십시오. 예를 들어, *(mtimes) 대신 .*(times)를 사용하십시오.

예: funx = @(u,v) u.*sin(v);

y 좌표의 파라미터 함수로, 명명된 함수나 익명 함수에 대한 함수 핸들로 지정됩니다.

y = funy(u,v) 형식의 함수를 지정해야 합니다. 이 함수는 행렬 입력 인수 두 개를 받고 같은 크기를 갖는 행렬 출력 인수 하나를 반환해야 합니다. 최적의 성능을 구현하려면 행렬 연산자 대신 배열 연산자를 사용하십시오. 예를 들어, *(mtimes) 대신 .*(times)를 사용하십시오.

예: funy = @(t) @(u,v) -u.*cos(v);

z 좌표의 파라미터 함수로, 명명된 함수나 익명 함수에 대한 함수 핸들로 지정됩니다.

z = funz(u,v) 형식의 함수를 지정해야 합니다. 이 함수는 행렬 입력 인수 두 개를 받고 같은 크기를 갖는 행렬 출력 인수 하나를 반환해야 합니다. 최적의 성능을 구현하려면 행렬 연산자 대신 배열 연산자를 사용하십시오. 예를 들어, *(mtimes) 대신 .*(times)를 사용하십시오.

예: funz = @(u,v) v;

uv의 플로팅 구간으로, 다음 형식 중 하나로 지정됩니다.

  • [min max] 형식의 벡터 — uv 둘 다에 구간 [min max]를 사용합니다.

  • [umin umax vmin vmax] 형식의 벡터 — u에 구간 [umin umax]를, v에 구간 [vmin vmax]를 사용합니다.

axes 객체입니다. axes 객체를 지정하지 않으면 fsurf는 현재 좌표축을 사용합니다.

선 스타일, 마커, 색으로, 기호를 포함하는 string형 스칼라 또는 문자형 벡터로 지정됩니다. 기호는 어떤 순서로 지정해도 좋습니다. 세 가지 특성(선 스타일, 마커, 색)을 모두 지정할 필요는 없습니다. 예를 들어 선 스타일을 생략하고 마커를 지정하면 플롯은 마커만 표시하고 선은 표시하지 않습니다.

예: "--or"은 원 마커로 표시된 빨간색 파선입니다.

선 스타일설명결과 선
"-"실선

Sample of solid line

"--"파선

Sample of dashed line

":"점선

Sample of dotted line

"-."일점 쇄선

Sample of dash-dotted line, with alternating dashes and dots

마커설명결과로 생성되는 마커
"o"

Sample of circle marker

"+"플러스 기호

Sample of plus sign marker

"*"별표

Sample of asterisk marker

"."

Sample of point marker

"x"십자

Sample of cross marker

"_"가로선

Sample of horizontal line marker

"|"세로선

Sample of vertical line marker

"square"정사각형

Sample of square marker

"diamond"다이아몬드

Sample of diamond marker

"^"위쪽 방향 삼각형

Sample of upward-pointing triangle marker

"v"아래쪽 방향 삼각형

Sample of downward-pointing triangle marker

">"오른쪽 방향 삼각형

Sample of right-pointing triangle marker

"<"왼쪽 방향 삼각형

Sample of left-pointing triangle marker

"pentagram"펜타그램

Sample of pentagram marker

"hexagram"헥사그램

Sample of hexagram marker

색 이름짧은 이름RGB 3색모양
"red""r"[1 0 0]

Sample of the color red

"green""g"[0 1 0]

Sample of the color green

"blue""b"[0 0 1]

Sample of the color blue

"cyan" "c"[0 1 1]

Sample of the color cyan

"magenta""m"[1 0 1]

Sample of the color magenta

"yellow""y"[1 1 0]

Sample of the color yellow

"black""k"[0 0 0]

Sample of the color black

"white""w"[1 1 1]

Sample of the color white

이름-값 인수

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name을 따옴표로 묶으십시오.

예: 'Marker','o','MarkerFaceColor','red'

여기에 나와 있는 속성 목록은 일부에 불과합니다. 전체 목록을 보려면 FunctionSurface 속성ParameterizedFunctionSurface 속성를 참조하십시오.

방향별 계산 지점 개수로, 숫자로 지정됩니다. 디폴트 값은 35입니다. fsurf 객체가 적응형 실행을 사용하므로 실제 계산 지점 개수는 더 많습니다.

예: 100

플롯 아래 등고선 플롯 표시 여부로, 'on' 또는 'off'나 숫자형 값 또는 논리값 1(true) 또는 0(false)으로 지정됩니다. 값 'on'은 true와 동일하고 값 'off'false와 동일합니다. 따라서 이 속성의 값을 논리값으로 사용할 수 있습니다. 값은 matlab.lang.OnOffSwitchState 유형의 on/off 논리값으로 저장됩니다.

선 색으로, 'interp', RGB 3색, 16진수 색 코드, 색 이름 또는 짧은 이름으로 지정됩니다. 디폴트 RGB 3색 값인 [0 0 0]은 검은색에 해당합니다. 'interp' 값은 ZData 값에 따라 가장자리에 채색합니다.

사용자 지정 색의 경우에는 RGB 3색 또는 16진수 색 코드를 지정하십시오.

  • RGB 3색은 요소를 3개 가진 행 벡터로, 각 요소는 색을 구성하는 빨간색, 녹색, 파란색의 농도를 지정합니다. 농도의 범위는 [0,1]이어야 합니다(예: [0.4 0.6 0.7]).

  • 16진수 색 코드는 string형 스칼라 또는 문자형 벡터로, 해시 기호(#)로 시작하고 그 뒤에 3자리 또는 6자리의 16진수 숫자(0에서 F 사이일 수 있음)가 옵니다. 이 값은 대/소문자를 구분하지 않습니다. 따라서 색 코드 "#FF8800", "#ff8800", "#F80""#f80"은 모두 동일합니다.

몇몇의 흔한 색은 이름으로 지정할 수도 있습니다. 다음 표에는 명명된 색 옵션과 그에 해당하는 RGB 3색 및 16진수 색 코드가 나와 있습니다.

색 이름짧은 이름RGB 3색16진수 색 코드모양
"red""r"[1 0 0]"#FF0000"

Sample of the color red

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

Sample of the color green

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

Sample of the color blue

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

Sample of the color cyan

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

Sample of the color magenta

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

Sample of the color yellow

"black""k"[0 0 0]"#000000"

Sample of the color black

"white""w"[1 1 1]"#FFFFFF"

Sample of the color white

"none"해당 없음해당 없음해당 없음색 없음

다음은 MATLAB®이 여러 유형의 플롯에서 사용하는 디폴트 색의 RGB 3색과 16진수 색 코드입니다.

RGB 3색16진수 색 코드모양
[0 0.4470 0.7410]"#0072BD"

Sample of RGB triplet [0 0.4470 0.7410], which appears as dark blue

[0.8500 0.3250 0.0980]"#D95319"

Sample of RGB triplet [0.8500 0.3250 0.0980], which appears as dark orange

[0.9290 0.6940 0.1250]"#EDB120"

Sample of RGB triplet [0.9290 0.6940 0.1250], which appears as dark yellow

[0.4940 0.1840 0.5560]"#7E2F8E"

Sample of RGB triplet [0.4940 0.1840 0.5560], which appears as dark purple

[0.4660 0.6740 0.1880]"#77AC30"

Sample of RGB triplet [0.4660 0.6740 0.1880], which appears as medium green

[0.3010 0.7450 0.9330]"#4DBEEE"

Sample of RGB triplet [0.3010 0.7450 0.9330], which appears as light blue

[0.6350 0.0780 0.1840]"#A2142F"

Sample of RGB triplet [0.6350 0.0780 0.1840], which appears as dark red

선 스타일로, 다음 표에 나열된 옵션 중 하나로 지정됩니다.

선 스타일설명결과 선
"-"실선

Sample of solid line

"--"파선

Sample of dashed line

":"점선

Sample of dotted line

"-."일점 쇄선

Sample of dash-dotted line, with alternating dashes and dots

"none"선 없음선 없음

선 너비로, 양의 값으로 지정됩니다(단위: 포인트). 여기서 1포인트는 1/72인치와 같습니다. 선에 마커가 있는 경우 선 너비는 마커 가장자리에도 영향을 미칩니다.

선 너비는 픽셀 너비보다 가늘 수 없습니다. 선 너비를 시스템의 픽셀 너비보다 작은 값으로 설정할 경우 선은 1픽셀 너비로 표시됩니다.

마커 기호로, 다음 표에 나열된 값 중 하나로 지정됩니다. 기본적으로 객체는 마커를 표시하지 않습니다. 마커 기호를 지정하면 각 데이터 점이나 꼭짓점에 마커가 추가됩니다.

마커설명결과로 생성되는 마커
"o"

Sample of circle marker

"+"플러스 기호

Sample of plus sign marker

"*"별표

Sample of asterisk marker

"."

Sample of point marker

"x"십자

Sample of cross marker

"_"가로선

Sample of horizontal line marker

"|"세로선

Sample of vertical line marker

"square"정사각형

Sample of square marker

"diamond"다이아몬드

Sample of diamond marker

"^"위쪽 방향 삼각형

Sample of upward-pointing triangle marker

"v"아래쪽 방향 삼각형

Sample of downward-pointing triangle marker

">"오른쪽 방향 삼각형

Sample of right-pointing triangle marker

"<"왼쪽 방향 삼각형

Sample of left-pointing triangle marker

"pentagram"펜타그램

Sample of pentagram marker

"hexagram"헥사그램

Sample of hexagram marker

"none"마커 없음해당 없음

마커 크기로, 양의 값으로 지정됩니다(단위: 포인트). 여기서 1포인트는 1/72인치와 같습니다.

출력 인수

모두 축소

하나 이상의 FunctionSurface 객체 또는 ParameterizedFunctionSurface 객체로, 스칼라나 벡터로 반환됩니다.

  • fsurf(f) 구문이나 이 구문의 변형을 사용하는 경우 fsurfFunctionSurface 객체를 반환합니다.

  • fsurf(funx,funy,funz) 구문이나 이 구문의 변형을 사용하는 경우 fsurfParameterizedFunctionSurface 객체를 반환합니다.

이러한 객체를 사용하여 특정 곡면의 속성을 쿼리하고 수정할 수 있습니다. 속성 목록은 FunctionSurface 속성ParameterizedFunctionSurface 속성를 참조하십시오.

버전 내역

R2016a에 개발됨