Main Content

meshgrid

2차원 그리드와 3차원 그리드

설명

예제

[X,Y] = meshgrid(x,y)는 벡터 xy에 포함된 좌표를 바탕으로 2차원 그리드 좌표를 반환합니다. X는 각 행이 x의 복사본인 행렬이고, Y는 각 열이 y의 복사본인 행렬입니다. 좌표 XY로 표현되는 그리드에는 length(y)개의 행과 length(x)개의 열이 있습니다.

예제

[X,Y] = meshgrid(x)[X,Y] = meshgrid(x,x)와 동일하며, length(x)×length(x)의 그리드 크기를 가진 정사각 그리드 좌표를 반환합니다.

예제

[X,Y,Z] = meshgrid(x,y,z)는 벡터 x, y, z로 정의되는 3차원 그리드 좌표를 반환합니다. X, Y, Z로 표현되는 그리드의 크기는 length(y)×length(x)×length(z)입니다.

예제

[X,Y,Z] = meshgrid(x)[X,Y,Z] = meshgrid(x,x,x)와 동일하며, length(x)×length(x)×length(x)의 그리드 크기를 가진 3차원 그리드 좌표를 반환합니다.

예제

모두 축소

벡터 x로 정의된 x 좌표와 벡터 y로 정의된 y 좌표로 2차원 그리드 좌표를 만듭니다.

x = 1:3;
y = 1:5;
[X,Y] = meshgrid(x,y)
X = 5×3

     1     2     3
     1     2     3
     1     2     3
     1     2     3
     1     2     3

Y = 5×3

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

2차원 그리드에서 표현식 x2+y2을 계산합니다.

X.^2 + Y.^2
ans = 5×3

     2     5    10
     5     8    13
    10    13    18
    17    20    25
    26    29    34

구간 [-2,2]에서 균일한 간격의 x 좌표와 y 좌표를 가진 2차원 그리드를 만듭니다.

x = -2:0.25:2;
y = x;
[X,Y] = meshgrid(x);

2차원 그리드에서 함수 f(x,y)=xe-x2-y2을 계산하고 플로팅합니다.

F = X.*exp(-X.^2-Y.^2);
surf(X,Y,F)

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

R2016b부터는 그리드에서 작업을 수행하기 전에 반드시 그리드를 먼저 만들지 않아도 됩니다. 예를 들어, 표현식 xe-x2-y2을 계산하면 벡터 xy가 묵시적으로 확장됩니다. 묵시적 확장에 대한 자세한 내용은 배열 연산과 행렬 연산 항목을 참조하십시오.

surf(x,y,x.*exp(-x.^2-(y').^2))

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

구간 [0,6]에서 정의된 x 좌표, y 좌표, z 좌표로부터 3차원 그리드 좌표를 생성하고, 표현식 x2+y2+z2을 계산합니다.

x = 0:2:6;
y = 0:1:6;
z = 0:3:6;
[X,Y,Z] = meshgrid(x,y,z);
F = X.^2 + Y.^2 + Z.^2;

그리드의 크기를 파악합니다. 세 좌표 벡터는 길이가 달라 그리드 점으로 구성된 사각형 상자를 형성합니다.

gridsize = size(F)
gridsize = 1×3

     7     4     3

x에 정의된 좌표를 바탕으로 균일한 간격의 3차원 그리드를 생성하려면 단일 입력 구문을 사용하십시오. 새 그리드는 그리드 점으로 구성된 정육면체를 형성합니다.

[X,Y,Z] = meshgrid(x);
G = X.^2 + Y.^2 + Z.^2;
gridsize = size(G)
gridsize = 1×3

     4     4     4

입력 인수

모두 축소

점의 x 좌표로, 벡터로 지정됩니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

점의 y 좌표로, 벡터로 지정됩니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

점의 z 좌표로, 벡터로 지정됩니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

출력 인수

모두 축소

그리드 상의 x 좌표로, 2차원 배열(입력값 2개)이나 3차원 배열(입력값 3개)로 반환됩니다.

그리드 상의 y 좌표로, 2차원 배열(입력값 2개)이나 3차원 배열(입력값 3개)로 반환됩니다.

그리드 상의 z 좌표로, 3차원 배열로 반환됩니다.

세부 정보

모두 축소

meshgrid 형식과 ndgrid 형식 간의 변환

meshgridndgrid는 서로 다른 출력 형식을 사용하여 그리드를 만듭니다. 이들 함수 중 하나를 사용하여 만든 그리드의 처음 두 차원은 다른 하나의 형식과 비교했을 때 맞바뀌어 있습니다. 일부 MATLAB® 함수는 meshgrid 형식의 그리드를 사용하고 일부 함수는 ndgrid 형식을 사용하므로 그리드를 두 가지 형식 간에 자주 변환하게 됩니다.

이들 그리드 형식은 pagetranspose(R2020b 이상) 또는 permute를 사용하여 그리드 배열의 처음 두 차원을 맞바꿈으로써 변환할 수 있습니다. 예를 들어, meshgrid를 사용하여 3차원 그리드를 만듭니다.

[X,Y,Z] = meshgrid(1:4,1:3,1:2);

각 그리드 배열의 처음 두 차원을 전치하여 그리드를 ndgrid 형식으로 변환하고, 이 결과를 ndgrid의 출력값과 비교합니다.

Xt = pagetranspose(X);
Yt = pagetranspose(Y);
Zt = pagetranspose(Z);
[Xn,Yn,Zn] = ndgrid(1:4,1:3,1:2);
isequal(Xt,Xn) & isequal(Yt,Yn) & isequal(Zt,Zn)
ans =

  logical

   1

pagetranspose를 사용하는 것은 나머지 차원은 그대로 두고 처음 두 개 차원을 치환하는 것과 동일합니다. permute(X,[2 1 3:ndims(X)])를 사용하여 이 작업을 수행할 수도 있습니다.

확장 기능

C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.

GPU 코드 생성
GPU Coder™를 사용하여 NVIDIA® GPU용 CUDA® 코드를 생성할 수 있습니다.

버전 내역

R2006a 이전에 개발됨