3차원 그래프

남건호·2025년 6월 18일

MATLAB

목록 보기
15/16
post-thumbnail

선 그래프

plot3 (x,y,z,'line specifiers','PropertyName',property value)
x, y, z : 점들의 좌표벡터
'line specifiers': 선과 표식의 모양 및 색을 정의하는 지정자
'PropertyName',property value : 선의 굵기, 표식의 크기와 테두리 및 배경색 지정 시 사용될 수 있는 속성과 값

예시

0≤t≤6π 에 대한 함수 x = t sin(2t), y = t cos 2t , z = 0.5t 의 그래프

>> t=0: 0.1: 6*pi;
>> x=sqrt(t).*sin(2*t);
>> y=sqrt(t).*cos(2*t);
>> z=0.5*t;
>> plot3(x,y,z,'k','linewidth',1)
>> grid on
>> xlabel (‘x’); ylabel(‘y’); zlabel (‘z’)

그물망 그래프(mesh plot)와 표면 그래프(surface plot)

그물망 그래프와 표면 그래프의 3단계

1. 함수의 정의역에 대하여 x-y 평면에서 격자 생성

meshgrid 형식

[ X, Y ] = meshgrid (x, y)

  • [ X, Y ] : X는 격자 점들의 x 좌표들로 구성된 행렬,
    Y는 격자 점들의 y좌표들로 구성된 행렬
  • meshgrid (x, y) : x는 x의 정의역을 나누는 벡터,
    y는 y의 정의역을 나누는 벡터

예시

>> x=-1:3;
y=1:4;
[X, Y]=meshgrid(x,y)

X =

    -1     0     1     2     3
    -1     0     1     2     3
    -1     0     1     2     3
    -1     0     1     2     3


Y =

     1     1     1     1     1
     2     2     2     2     2
     3     3     3     3     3
     4     4     4     4     4

2. 격자의 각점에서 z값 계산

예시

>> Z = X.*Y.^2./(X.^2 + Y.^2)

Z =

   -0.5000         0    0.5000    0.4000    0.3000
   -0.8000         0    0.8000    1.0000    0.9231
   -0.9000         0    0.9000    1.3846    1.5000
   -0.9412         0    0.9412    1.6000    1.9200

3. 그래프 생성
mesh(X, Y, Z)
surf(X, Y, Z)

정의역 -1≤x≤3과 1≤y≤4에 대해 격자를 생성 하고 함수 의 그물망(또는 표면) 그래프를 완전한 프로그램을 포함

예시

>> x=-1:0.1:3;
>> y=1:0.1:4;
>> [X,Y]=meshgrid(x,y);
>> Z=X.*Y.^2./(X.^2+Y.^2);
>> mesh(X, Y, Z) %표면 그래프에 대해서surf(X, Y, Z)을 입력
>> xlabel (‘x’); ylabel(‘y’); zlabel (‘z’)
  • mesh(X, Y, Z)
  • surf(X, Y, Z)

그래프 명령어

1. Mesh plot 함수형식: mesh(X, Y, Z)

예시

x=-3:0.25:3;
y=-3:0.25:3;
[X, Y] = meshgrid(x,y);
Z = 1.8.^(-1.5*sqrt(X.^2+Y.^2)).*cos(0.5*Y).*sin(X);
mesh(X,Y,Z)
xlabel(‘x’); ylabel(‘y’); zlabel(‘z’);

2. Surface plot 함수형식: surf(X, Y, Z)

예시

x=-3:0.25:3;
y=-3:0.25:3;
[X, Y] = meshgrid(x,y);
Z = 1.8.^(-1.5*sqrt(X.^2+Y.^2)).*cos(0.5*Y).*sin(X);
surf(X,Y,Z)
xlabel(‘x’); ylabel(‘y’); zlabel(‘z’);

3. Mesh Curtain Plot(그물망 그래프주위에 커튼을 그림)함수형식 :meshz(X, Y, Z)

예시

x=-3:0.25:3;
y=-3:0.25:3;
[X, Y] = meshgrid(x,y);
Z = 1.8.^(-1.5*sqrt(X.^2+Y.^2)).*cos(0.5*Y).*sin(X);
meshz(X,Y,Z)
xlabel(‘x’); ylabel(‘y’); zlabel(‘z’)

4. Mesh and Contour plot(그물망 그래프 밑에등고선을 그림)함수형식 :meshc(X, Y, Z)

예시

x=-3:0.25:3;
y=-3:0.25:3;
[X, Y] = meshgrid(x,y);
Z = 1.8.^(-1.5*sqrt(X.^2+Y.^2)).*cos(0.5*Y).*sin(X);
meshc(X,Y,Z)
xlabel(‘x’); ylabel(‘y’); zlabel(‘z’)

5. Surface and Contour Plot (표면 그래프 밑에 등고선을 그림) 함수형식 : Surfc(X, Y, Z)

예시

x=-3:0.25:3;
y=-3:0.25:3;
[X, Y] = meshgrid(x,y);
Z = 1.8.^(-1.5*sqrt(X.^2+Y.^2)).*cos(0.5*Y).*sin(X);
surfc(X,Y,Z)
xlabel(‘x’); ylabel(‘y’); zlabel(‘z’)

6. Surface Plot with Lighting 함수형식 : surfl(X, Y, Z)

예시

x=-3:0.25:3;
y=-3:0.25:3;
[X, Y] = meshgrid(x,y);
Z = 1.8.^(-1.5*sqrt(X.^2+Y.^2)).*cos(0.5*Y).*sin(X);
surfl(X,Y,Z)
xlabel(‘x’); ylabel(‘y’); zlabel(‘z’)

7. 3D Contour Plot 함수형식 : Contour3 (X, Y, Z, n) n = 등고선 레벨 개수(옵션)

예시

x=-3:0.25:3;
y=-3:0.25:3;
[X, Y] = meshgrid(x,y);
Z = 1.8.^(-1.5*sqrt(X.^2+Y.^2)).*cos(0.5*Y).*sin(X);
contour3(X,Y,Z, 15)
xlabel(‘x’); ylabel(‘y’); zlabel(‘z’)

8. 2D Contour Plot(x-y평면상에 등고선 투영도를 그 림) 함수형식 Contour : (X, Y, Z, n) n은 등고선 레벨 개 수(옵션)

예시

x=-3:0.25:3;
y=-3:0.25:3;
[X, Y] = meshgrid(x,y);
Z = 1.8.^(-1.5*sqrt(X.^2+Y.^2)).*cos(0.5*Y).*sin(X);
contour(X,Y,Z, 15)
xlabel(‘x’); ylabel(‘y’); zlabel(‘z’)

특수한 그래프

1. Plot a Sphere 함수 형식 : sphere 20개의 면을 가진 단위 구의 x,y,z 좌표를 돌려준다. sphere(n) n개의 면을 가진 위와 같다.

예시

[X,Y,Z] = sphere(20);
surf(X,Y,Z)

2. Plot a Cylinder 함수 형식 : [X, Y, Z]= cylinder(r) 측면 윤곽이 r 인 실린더의 x, y, z 좌표를 돌려준다.

예시

t=linspace(0, pi, 20);
r=1+sin(t);
[X,Y,Z] = cylinder(r);
surf(X,Y,Z)
axis square

3. 3D Bar Plot 함수 형식 : bar3(Y) Y의 각 원소가 한 개의 막대이며, 열은 같은 그룹으로 묶인다.

예시

Y=[1 6.5 7; 2 6 7; 3 5.5 7; 4 5 7; 3 4 7;
2 3 7; 1 2 7];
bar3(Y)

4. 3D Stem Plot (x-y평면에서 표식과 수식적인 선들을 가진 연속적인 점들로 그 림) 함수 형식 : stem3(X, Y, Z)

예시

t=0:0.2:10; x=t; y=sin(t); z=t.^1.5;
stem3(x,y,z,'fill')
grid on
xlabel(‘x’); ylabel(‘y’); zlabel(‘z’)

5. 3D Scatter Plot 함수 형식 : scatter3(X, Y, Z)

예시

t=0:0.4:10; x=t; y=sin(t); z=t.^1.5;
scatter3(x,y,z,'filled')
grid on
colormap([0.1 0.1 0.1])
xlabel(‘x’); ylabel(‘y’); zlabel(‘z’)

6.3D Pie Plot 함수 형식 : pie3(X, Y, Z)

예시

X=[5 9 14 20];
explode =[0 0 1 0];
pie3(X, explode)

참고:explode는 0과 1의 원소로 이루어진 벡터 (x와 길이가 같다). 1은 파이 조각을 중심에서 조금 떨어져 나오게 한다.

7. 극좌표 격자
물망 그래프와 표면 그래프의 4단계

  1. Mesh 함수를 가지고 θ와 r의 값들의 격자를 생성한다.
  2. 격자의 각 점에서 z의 값을 계산한다.
  3. 극 좌표 격자를 직교좌표의 격자로 바꿔라. 이것은 MATLAB 내장함수
    pol2cart를 가지고 구해진다(예제 참조).
  4. z 값과 직교 좌표를 이용하여 3-D 그래프를 그린다.

정의역 0≤θ≤360°, 0≤r≤2에 대해서 함수 z=rθ의 그림을 생성한다. z의 극 좌표(예를 들면 z = rθ)에서 주어지는 함수의
3-D 그래프는 다음 단계 에 의해 얻어진다.)

예시

>> [th,r]=meshgrid((0:5:360)*pi/180, 0:0.1:2);
Z=r.*th;
[X,Y]=pol2cart(th,r);
mesh(X,Y,Z)
%표면 그래프에 대해서는 surf(X, Y, Z)를 입력

view 명령어

view 명령어 형식

view( az , el ) or view([ az , el ])

  • az는 방위각이며, 음의 y축 방향에 대한 x-y 평면상에서의 각이며 반 시계 방향이 양의 방향으로 정의된다.
  • el은 x-y 평면으로부터의 고도 각이다. 양의 값은 z축 방향으로 각이 커지는방향에 해당된다.
  • 시야각의 초기 설정 값은 az = -37.5°와 el = 30°이다.

예시

>> x=-3: 0.25: 3;
y=-3: 0.25: 3;
[X, Y] = meshgrid(x, y);
Z=1.8.^(-1.5*sqrt(X.^2+Y.^2)).*cos(0.5*Y).*sin(X);
surf(X, Y, Z)
view(20, 35)

평면상에 3-D 그래프의 투영도

  • x-y 상면도: az값 0 / el값 90
  • x-z 측면도: az값 0 / el값 0
  • y-z 측면도: az값 90 / el값 0

예시

0≤t≤6π에 대한 함수 x = t sin(2t), y = t cos 2t , z = 0.5t 의 평면도

>> t=0:0.1:6*pi;
>> x=sqrt(t).*sin(2*t);
>> y=sqrt(t).*cos(2*t);
>> z=0.5*t;
>> plot3(x,y,z,'k','linewidth',1)
>> view(0,90)
>> grid on
>> xlabel(‘x’); ylabel(‘y’)
>> zlabel(‘z’)

예시

함수
의 x-z 평면에 대한 투영도

>> x=-3:0.25:3;
y=-3:0.25:3;
[X,Y]=meshgrid(x,y);
Z=1.8.^(-1.5*sqrt(X.^2+Y.^2)).*cos(0.5*Y).*sin(X);
mesh(X,Y,Z)
>> view(0,0)

예시

함수

y-z 평면에 대한 투영도

>> x=-3:0.25:3;
y=-3:0.25:3;
[X,Y]=meshgrid(x,y);
Z=1.8.^(-1.5*sqrt(X.^2+Y.^2)).*cos(0.5*Y).*sin(X);
surf(X,Y,Z)
view(90,0)

profile
Project to Become a Top Developer

0개의 댓글