주요 콘텐츠

interpn

ndgrid 형식의 1차원, 2차원, 3차원, N차원 그리드 데이터 보간

설명

Vq = interpn(X1,X2,...,Xn,V,Xq1,Xq2,...,Xqn)n개의 변수로 구성된 함수의 특정 쿼리 점에서 선형 보간된 값을 반환합니다. 결과는 항상 함수의 원래 샘플링을 통과합니다. X1,X2,...,Xn은 샘플 점의 좌표를 포함합니다. V는 각 샘플 점에 대응하는 함수 값을 포함합니다. Xq1,Xq2,...,Xqn은 쿼리 점의 좌표를 포함합니다.

예제

Vq = interpn(V,Xq1,Xq2,...,Xqn)은 샘플 점의 디폴트 그리드를 가정합니다. 디폴트 그리드는 각 차원에서 점 1,2,3,...ni로 구성됩니다. ni의 값은 V에서 i번째 차원의 길이입니다. 메모리를 절약하고 점 간 절대 거리를 고려하지 않으려면 이 구문을 사용하십시오.

Vq = interpn(V)는 각 차원에서 한 번씩 샘플 값 간의 간격을 나누어 구성된, 조정된 그리드의 보간된 값을 반환합니다.

Vq = interpn(V,k)는 각 차원에서 k번씩 간격을 반복적으로 이등분하여 구성된, 조정된 그리드의 보간된 값을 반환합니다. 결과적으로, 샘플 값 간에 2^k-1개의 보간된 점이 생성됩니다.

예제

Vq = interpn(___,method)는 대체 보간 방법을 'linear', 'nearest', 'pchip', 'cubic','makima', 'spline' 중 하나로 지정합니다. 디폴트 방법은 'linear'입니다.

예제

Vq = interpn(___,method,extrapval)에는 샘플 점의 영역 밖에 있는 모든 쿼리에 대입할 값을 스칼라 extrapval로 지정합니다.

샘플 점의 영역 밖에 있는 쿼리에 대해 extrapval 인수를 생략할 경우 interpnmethod 인수에 따라 다음 값 중 하나를 반환합니다.

  • 'spline' 방법과 'makima' 방법의 경우 외삽 값

  • 기타 보간 방법의 경우, NaN

예제

예제

모두 축소

샘플 점과 값을 정의합니다.

x = [1 2 3 4 5];
v = [12 16 31 10 6];

쿼리 점 xq를 정의하고 보간합니다.

xq = (1:0.1:5);
vq = interpn(x,v,xq,'cubic');

결과를 플로팅합니다.

figure
plot(x,v,'o',xq,vq,'-');
legend('Samples','Cubic Interpolation');

Figure contains an axes object. The axes object contains 2 objects of type line. One or more of the lines displays its values using only markers These objects represent Samples, Cubic Interpolation.

일련의 그리드 점과, 그에 대응하는 샘플 값을 만듭니다.

[X1,X2] = ndgrid((-5:1:5));
R = sqrt(X1.^2 + X2.^2)+ eps;
V = sin(R)./(R);

ntimes=1을 사용하여 미세한 그리드에 대해 보간합니다.

Vq = interpn(V,'cubic');
mesh(Vq);

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

ndgrid를 사용하여 2차원 샘플 점으로 구성된 그리드를 만듭니다.

[x,y] = ndgrid(0:10,0:5);

샘플 점에 두 개의 서로 다른 샘플 값 세트를 만들고 이를 3차원 배열의 페이지로 결합합니다. 샘플 점에 대해 두 세트의 샘플 값을 플로팅합니다. surf는 그리드에 meshgrid 형식을 사용하므로 플로팅을 위해 입력값을 전치합니다.

v1 = sin(x.*y)./(x+1);
v2 = x.*erf(y);
V = cat(3,v1,v2);
tiledlayout(1,2)
nexttile
surf(x',y',V(:,:,1)')
view(2)
nexttile
surf(x',y',V(:,:,2)')
view(2)

Figure contains 2 axes objects. Axes object 1 contains an object of type surface. Axes object 2 contains an object of type surface.

ndgrid를 사용하여 보간을 위한 쿼리 점 세트를 만든 다음 interpn을 사용하여 쿼리 점에서 각 함수의 값을 구합니다. 쿼리 점에 대해 보간된 값을 플로팅합니다.

[xq,yq] = ndgrid(0:0.2:10);
Vq = interpn(x,y,V,xq,yq);
tiledlayout(1,2)
nexttile
surf(xq',yq',Vq(:,:,1)')
view(2)
nexttile
surf(xq',yq',Vq(:,:,2)')
view(2)

Figure contains 2 axes objects. Axes object 1 contains an object of type surface. Axes object 2 contains an object of type surface.

그리드 벡터 x1, x2, x3을 만듭니다. 이러한 벡터는 V의 값에 대한 점을 정의합니다.

x1 = 1:100;
x2 = 1:50;
x3 = 1:30;

샘플 값이 난수로 구성된 100×50×30 배열 V가 되도록 정의합니다.

rng default
V = rand(100,50,30);

x1, x2, x3의 정의역 밖에 있는 세 개의 점에서 V를 계산합니다. extrapval = -1을 지정합니다.

xq1 = [0 0 0];
xq2 = [0 0 51];
xq3 = [0 101 102];
vq = interpn(x1,x2,x3,V,xq1,xq2,xq3,'linear',-1)
vq = 1×3

    -1    -1    -1

세 개의 점은 모두 x1, x2, x3의 정의역 밖에 있으므로 -1로 계산됩니다.

$f = te^{-x^{2}-y^{2}-z^{2}}$을 나타내는 익명 함수를 정의합니다.

f = @(x,y,z,t) t.*exp(-x.^2 - y.^2 - z.^2);

$R^4$에 점의 그리드를 만듭니다. 그런 다음 함수를 통해 점을 전달하여 샘플 값 V를 만듭니다.

[x,y,z,t] = ndgrid(-1:0.2:1,-1:0.2:1,-1:0.2:1,0:2:10);
V = f(x,y,z,t);

이제 쿼리 그리드를 만듭니다.

[xq,yq,zq,tq] = ...
ndgrid(-1:0.05:1,-1:0.08:1,-1:0.05:1,0:0.5:10);

쿼리 점에서 V를 보간합니다.

Vq = interpn(x,y,z,t,V,xq,yq,zq,tq);

동영상을 만들어 결과를 표시합니다.

figure;
nframes = size(tq, 4);
for j = 1:nframes
   slice(yq(:,:,:,j),xq(:,:,:,j),zq(:,:,:,j),...
         Vq(:,:,:,j),0,0,0);
   clim([0 10]);
   M(j) = getframe;
end
movie(M);

입력 인수

모두 축소

샘플 그리드 점으로, 실수 배열 또는 실수 벡터로 지정됩니다. 샘플 그리드 점은 고유해야 합니다.

  • X1,X2,...,Xn이 배열이면 전체 그리드(ndgrid 형식)의 좌표를 포함합니다. X1,X2,...,Xn 배열을 함께 만들려면 ndgrid 함수를 사용하십시오. 이러한 배열은 크기가 동일해야 합니다.

  • X1,X2,...,Xn이 벡터이면 그리드 벡터로 처리됩니다. 이러한 벡터의 값은 순단조 증가 또는 감소 형식이어야 합니다.

예: [X1,X2,X3,X4] = ndgrid(1:30,-10:10,1:5,10:13)

데이터형: single | double

샘플 값으로, 실수 배열 또는 복소수 배열로 지정됩니다. V의 크기 요구 사항은 X1,X2,...,Xn으로 정의된 샘플 점의 그리드 크기에 따라 달라집니다. 샘플 점 X1,X2,...,Xn은 배열 또는 그리드 벡터일 수 있지만 두 경우 모두 n차원 그리드를 정의합니다. V는 최소한 동일한 n차원 크기를 갖는 배열이어야 하지만 n을 초과하는 추가 차원을 가질 수도 있습니다.

  • V가 동일하게 n 차원을 갖는 경우 V의 크기는 X1,X2,...,Xn으로 정의된 n차원 그리드의 크기와 일치해야 합니다. 이 경우 V는 샘플 점에서 단일한 샘플 값 세트를 포함합니다. 예를 들어, X1,X2,X3이 3×3×3 배열이면 V도 3×3×3 배열일 수 있습니다.

  • Vn차원을 초과하는 경우 V의 처음 n개 차원은 X1,X2,...,Xn으로 정의된 n차원 그리드의 크기와 일치해야 합니다. V의 추가 차원은 샘플 점에서 추가 샘플 값 세트를 정의합니다. 예를 들어, X1,X2,X3이 3×3×3 배열이면 V는 3×3×3×2 배열이 되어 샘플 점에서 두 개의 샘플 값 세트를 정의할 수 있습니다.

V에 복소수가 있는 경우 interpn은 실수부와 허수부를 각각 별도로 보간합니다.

예: rand(10,5,3,2)

데이터형: single | double
복소수 지원 여부:

쿼리 점으로, 실수형 스칼라, 벡터, 배열 중 하나로 지정됩니다.

  • Xq1,Xq2,...,Xqn이 스칼라이면, 이들은 Rn의 단일 쿼리 점의 좌표가 됩니다.

  • Xq1,Xq2,...,Xqn이 방향이 다른 벡터이면 Xq1,Xq2,...,XqnRn의 그리드 벡터로 처리됩니다.

  • Xq1,Xq2,...,Xqn이 크기와 방향이 같은 벡터이면 Xq1,Xq2,...,XqnRn의 산점으로 처리됩니다.

  • Xq1,Xq2,...,Xqn이 크기가 같은 배열이면, 이들은 쿼리 점(ndgrid 형식)의 전체 그리드 또는 Rn의 산점을 나타냅니다.

예: [X1,X2,X3,X4] = ndgrid(1:10,1:5,7:9,10:11)

데이터형: single | double

세분화 인자로, 음이 아닌 실수형 정수 스칼라로 지정됩니다. 이 값은 각 차원에서 조정된 그리드의 간격을, 반복적으로 나누는 횟수를 지정합니다. 결과적으로, 샘플 값 간에 2^k-1개의 보간된 점이 생성됩니다.

k0이면 VqV와 동일합니다.

interpn(V,1)interpn(V)와 동일합니다.

다음 그림은 R2k=2의 경우로, 9개의 샘플 값(검은색) 사이에 보간된 값(빨간색) 72개의 배치를 보여줍니다.

Nine sample points in a grid with three interpolated points between the sample points in each dimension

예: interpn(V,2)

데이터형: single | double

보간 방법으로, 다음 표에 나와 있는 옵션 중 하나로 지정됩니다.

방법설명연속성설명
'linear'쿼리 점에서 보간된 값은 각 차원의 인접 그리드 점에서 값이 선형 보간된 것입니다. 이는 디폴트 보간 방법입니다.C0
  • 각 차원에 최소 2개의 그리드 점이 필요함

  • 'nearest'보다 더 많은 메모리가 필요함

'nearest'쿼리 점에서 보간된 값은 가장 근접한 샘플 그리드 점에서의 값입니다. 불연속
  • 각 차원에 2개의 그리드 점이 필요함

  • 적당한 메모리 요구 사항으로 가장 빠른 계산 수행

'pchip'형태 보존 조각별 3차 보간입니다(1차원에만 해당). 쿼리 점에서 보간된 값은 인접 그리드 점에서 값이 형태 보존 조각별 3차 보간된 것입니다.C1
  • 최소 4개의 점이 필요함

  • 'linear'보다 메모리와 계산 시간이 더 많이 필요함

'cubic'쿼리 점에서 보간된 값은 각 차원의 인접 그리드 점에서 값이 3차 보간된 것입니다. 이 보간은 3차 컨벌루션을 기반으로 합니다.C1
  • 각 차원에서 그리드 간격이 균일해야 하지만, 모든 차원에서 간격이 동일할 필요는 없습니다.

  • 각 차원에 최소 4개의 점이 필요함

  • 'linear'보다 메모리와 계산 시간이 더 많이 필요함

'makima'아키마 3차 에르미트 다항식 변형 보간. 쿼리 점에서 보간된 값은 각 차원의 인접 그리드 점 값을 사용하여 계산된, 차수가 최대 3인 다항식의 조각별 함수를 기반으로 합니다. 아키마 수식이 오버슈트를 방지하도록 수정되었습니다.C1
  • 각 차원에 최소 2개의 점이 필요함

  • 'spline'보다 적은 요동을 생성합니다.

  • 계산 시간은 통상적으로 'spline'보다 적지만, 메모리 요구사항은 비슷함

'spline'쿼리 점에서 보간된 값은 각 차원의 인접 그리드 점에서 값이 3차 보간된 것입니다. 이 보간은 not-a-knot 끝점 조건을 사용한 3차 스플라인을 기반으로 합니다.C2
  • 각 차원에 최소 4개의 점이 필요하며, 2개의 점이 주어지면 선형 보간이 사용되고 3개의 점이 주어지면 2차 보간이 사용됨

  • 'cubic'보다 메모리와 계산 시간이 더 많이 필요함

X1,X2,...,Xn 영역 밖의 함수 값으로, 실수 또는 복소수 스칼라로 지정됩니다. interpnX1,X2,...,Xn의 영역 밖에 있는 모든 점에 대해 이 상수 값을 반환합니다.

예: 5

예: 5+1i

데이터형: single | double
복소수 지원 여부:

출력 인수

모두 축소

보간된 값으로, 실수 또는 복소수 스칼라, 벡터, 배열 중 하나로 반환됩니다. Vq의 크기와 형태는 사용하는 구문에 따라 다르며, 입력 인수의 크기와 값에 따라 달라지기도 합니다.

  • X1,X2,...,Xn으로 샘플 점을 지정하거나 디폴트 그리드를 사용하고 V가 샘플 점의 n차원 그리드와 동일한 차원 수를 갖는 경우 VqXq1,Xq2,...,Xqn으로 정의된 쿼리 점에서 단일한 보간 값 세트를 포함합니다.

    • Xq1,Xq2,...,Xqn이 스칼라이면 Vq도 스칼라입니다.

    • Xq1,Xq2,...,Xqn이 크기와 방향이 동일한 벡터이면 Vq도 크기와 방향이 동일한 벡터입니다.

    • Xq1,Xq2,...,Xqn이 방향이 혼합된 그리드 벡터이면 Vq는 그리드 벡터에 의해 묵시적으로 정의된 그리드와 크기가 동일한 배열입니다.

    • Xq1,Xq2,...,Xqn이 크기가 동일한 배열이면 Vq도 크기가 동일한 배열입니다.

  • X1,X2,...,Xn으로 샘플 점을 지정하거나 디폴트 그리드를 사용하고 V가 샘플 점의 n차원 그리드보다 더 큰 차원을 갖는 경우, VqXq1,Xq2,...,Xqn으로 정의된 쿼리 점에서 복수의 보간 값 세트를 포함합니다. 이 경우 Vq의 처음 n개 차원은 위의 단일한 보간 값 세트의 크기 규칙을 따르지만 동시에 VqV와 동일한 크기의 추가 차원을 갖습니다.

  • 구문 interpn(V)interpn(V,k)를 사용하면 디폴트 그리드를 k번(interpn(V)의 경우 k=1) 세분화하여 보간이 수행됩니다. 이 경우 VqV와 차원 수가 동일한 배열이며, i번째 차원의 크기는 2^k * (size(V,i)-1)+1입니다.

세부 정보

모두 축소

확장 기능

모두 확장

버전 내역

R2006a 이전에 개발됨

모두 확장

참고 항목

| | |