이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

fsurf

3차원 곡면 플로팅

설명

예제

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

다음과 같이 조각별 표현식을 플로팅합니다.

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

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

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

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

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'};

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

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

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)

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

객체의 URange 속성을 설정하여 u에 대한 플로팅 구간을 [-30 30]으로 변경합니다. 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을 사용하여 Figure를 두 개로 나눕니다. 첫 번째 서브플롯에 파라미터 곡면 x=sin(s), y=cos(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차원 함수로, 명명된 함수나 익명 함수에 대한 함수 핸들로 지정됩니다.

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형으로 지정됩니다. 그 요소는 아무 순서로나 표시할 수 있으며, 하나 이상의 옵션을 생략할 수 있습니다. 연결된 선 없이 마커만을 표시하려면 마커를 지정하고 선 스타일을 생략하십시오.

예: 'r--o'는 빨간색 파선과 원 마커를 지정합니다.

선 스타일 지정자설명
-실선(디폴트 값)
--파선
:점선
-.일점 쇄선
마커 지정자설명
o
+플러스 기호
*별표
.
x십자
s정사각형
d다이아몬드
^위쪽 방향 삼각형
v아래쪽 방향 삼각형
>오른쪽 방향 삼각형
<왼쪽 방향 삼각형
p펜타그램
h헥사그램
색 지정자설명

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

플롯 아래 등고선 플롯 표시로, 'off'(디폴트 값)나 'on'으로 지정됩니다.

선 색으로, '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'

'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'해당 없음해당 없음해당 없음색 없음

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

RGB 3색16진수 색 코드모양
[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'마커 없음

예: '+'

예: 'diamond'

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

출력 인수

모두 축소

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

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

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

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

R2016a에 개발됨