Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

ndgrid

N차원 공간의 사각 그리드

설명

예제

[X1,X2,...,Xn] = ndgrid(x1,x2,...,xn)은 그리드 벡터 x1,x2,...,xn을 복제하여 n차원의 전체 그리드를 생성합니다.

예제

[X1,X2,...,Xn] = ndgrid(xg)는 단일 그리드 벡터 xg를 지정하여 모든 차원에 사용합니다. 지정하는 출력 인수 개수에 따라 출력의 차원 수 n이 결정됩니다.

예제

모두 축소

벡터 [1 3 5 7 9 11 13 15 17 19]와 벡터 [2 4 6 8 10 12]에서 2D 그리드를 만듭니다.

[X,Y] = ndgrid(1:2:19,2:2:12)
X = 10×6

     1     1     1     1     1     1
     3     3     3     3     3     3
     5     5     5     5     5     5
     7     7     7     7     7     7
     9     9     9     9     9     9
    11    11    11    11    11    11
    13    13    13    13    13    13
    15    15    15    15    15    15
    17    17    17    17    17    17
    19    19    19    19    19    19

Y = 10×6

     2     4     6     8    10    12
     2     4     6     8    10    12
     2     4     6     8    10    12
     2     4     6     8    10    12
     2     4     6     8    10    12
     2     4     6     8    10    12
     2     4     6     8    10    12
     2     4     6     8    10    12
     2     4     6     8    10    12
     2     4     6     8    10    12

함수 계산 및 플로팅

x1e-x12-x22

그리딩된 다음 영역에서 계산하고 플로팅합니다.

-2<x1<2-2<x2<2.

영역 값에 대해 그리드를 생성합니다.

[X1,X2] = ndgrid(-2:.2:2);

해당 영역에서 함수를 계산합니다.

Z = X1 .* exp(-X1.^2 - X2.^2);

함수의 메시 플롯을 생성합니다.

mesh(X1,X2,Z)

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

R2016b와 그 이후 릴리스에서는 이 작업에 ndgrid를 사용할 필요가 없습니다. 대신, 다음 명령에서 묵시적 확장을 사용하여 그리드를 생성할 수 있습니다.

x = -2:.2:2;

Z1 = x.' .* exp(-(x.').^2 - x.^2);

2차원 그리드를 만들고 그리드에서 일부 함수 값을 계산합니다. 대입된 값 사이를 보간하여 그리드를 미세 조정합니다.

[-5,5] 범위에서 (x,y)에 대한 성긴 그리드를 생성합니다.

[X,Y] = ndgrid(-5:0.5:5);

그리드에서 몇 가지 함수 값을 계산하고 함수를 플로팅합니다.

f = sin(X.^2) * cos(Y.^2);
surf(X,Y,f)

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

더 미세 조정된 그리드를 사용하여 점 사이를 보간하고 결과를 플로팅합니다.

[X1,Y1] = ndgrid(-5:0.125:5);
F = interpn(X,Y,f,X1,Y1,'spline');
surf(X1,Y1,F)

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

입력 인수

모두 축소

그리드 벡터로, 각 차원에 대한 그리드 좌표를 포함하는 벡터로 지정됩니다. 그리드 벡터는 암묵적으로 그리드를 정의합니다. 예를 들어, 2차원의 경우는 다음과 같습니다.

Grid vectors implicitly define a full grid

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
복소수 지원 여부:

모든 차원에 대한 그리드 벡터로, 그리드 좌표를 포함하는 벡터로 지정됩니다. ndgrid는 각 차원에 대해 xg를 그리드 벡터로 사용합니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
복소수 지원 여부:

출력 인수

모두 축소

전체 그리드 표현으로, 개별 배열로 반환됩니다. 각 출력 배열 Xi의 경우, i번째 차원은 그리드 벡터 xi의 복사본을 포함합니다.

세부 정보

모두 축소

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++ 코드를 생성할 수 있습니다.

버전 내역

R2006a 이전에 개발됨