Main Content

interp2

meshgrid 형식의 2차원 그리딩된 데이터 보간(Interpolation)

설명

예제

Vq = interp2(X,Y,V,Xq,Yq)는 2변수 함수의 특정 쿼리 점에서 선형 보간된 값을 반환합니다. 결과는 항상 함수의 원래 샘플링을 통과합니다. XY는 샘플 점의 좌표를 포함합니다. V는 각 샘플 점에 대응하는 함수 값을 포함합니다. XqYq는 쿼리 점의 좌표를 포함합니다.

Vq = interp2(V,Xq,Yq)은 샘플 점의 디폴트 그리드를 가정합니다. 디폴트 그리드 점은 사각형 영역 X=1:nY=1:m에 걸쳐 있습니다. 여기서 [m,n] = size(V)입니다. 메모리를 절약하고 점 간 절대 거리를 고려하지 않으려면 이 구문을 사용하십시오.

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

예제

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

예제

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

예제

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

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

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

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

예제

모두 축소

peaks 함수를 성기게 샘플링합니다.

[X,Y] = meshgrid(-3:3);
V = peaks(X,Y);

성긴 샘플링을 플로팅합니다.

figure
surf(X,Y,V)
title('Original Sampling');

Figure contains an axes object. The axes object with title Original Sampling contains an object of type surface.

0.25 간격으로 쿼리 그리드를 만듭니다.

[Xq,Yq] = meshgrid(-3:0.25:3);

쿼리 점에서 보간합니다.

Vq = interp2(X,Y,V,Xq,Yq);

결과를 플로팅합니다.

figure
surf(Xq,Yq,Vq);
title('Linear Interpolation Using Finer Grid');

Figure contains an axes object. The axes object with title Linear Interpolation Using Finer Grid contains an object of type surface.

peaks 함수를 성기게 샘플링합니다.

[X,Y] = meshgrid(-3:3);
V = peaks(7);

성긴 샘플링을 플로팅합니다.

figure
surf(X,Y,V)
title('Original Sampling');

Figure contains an axes object. The axes object with title Original Sampling contains an object of type surface.

0.25 간격으로 쿼리 그리드를 만듭니다.

[Xq,Yq] = meshgrid(-3:0.25:3);

쿼리 점에서 보간하고 3차 보간을 지정합니다.

Vq = interp2(X,Y,V,Xq,Yq,'cubic');

결과를 플로팅합니다.

figure
surf(Xq,Yq,Vq);
title('Cubic Interpolation Over Finer Grid');

Figure contains an axes object. The axes object with title Cubic Interpolation Over Finer Grid contains an object of type surface.

일부 이미지 데이터를 작업 공간으로 불러옵니다.

load flujet.mat
colormap gray

이미지의 작은 영역을 떼어 내어 단정밀도로 형변환합니다.

V = single(X(200:300,1:25));

이미지 영역을 표시합니다.

imagesc(V);
axis off
title('Original Image')

Figure contains an axes object. The axes object with title Original Image contains an object of type image.

각 차원에서 조정된 그리드의 점 사이 간격을 반복해서 다섯 번 나누어서 보간된 값을 삽입합니다.

Vq = interp2(V,5);

결과를 표시합니다.

imagesc(Vq);
axis off
title('Linear Interpolation')

Figure contains an axes object. The axes object with title Linear Interpolation contains an object of type image.

두 차원에서 모두 범위 [-2, 2]에 대해 함수를 성기게 샘플링합니다.

[X,Y] = meshgrid(-2:0.75:2);
R = sqrt(X.^2 + Y.^2)+ eps;
V = sin(R)./(R);

성긴 샘플링을 플로팅합니다.

figure
surf(X,Y,V)
xlim([-4 4])
ylim([-4 4])
title('Original Sampling')

Figure contains an axes object. The axes object with title Original Sampling contains an object of type surface.

XY의 정의역을 벗어나는 쿼리 그리드를 만듭니다.

[Xq,Yq] = meshgrid(-3:0.2:3);

XY의 정의역 내에서 3차 보간을 수행하고, 정의역을 벗어나는 모든 쿼리에 0을 대입합니다.

Vq = interp2(X,Y,V,Xq,Yq,'cubic',0);

결과를 플로팅합니다.

figure
surf(Xq,Yq,Vq)
title('Cubic Interpolation with Vq=0 Outside Domain of X and Y');

Figure contains an axes object. The axes object with title Cubic Interpolation with Vq=0 Outside Domain of X and Y contains an object of type surface.

입력 인수

모두 축소

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

  • XY가 행렬이면 전체 그리드(meshgrid 형식)의 좌표를 포함합니다. X 행렬과 Y 행렬을 함께 만들려면 meshgrid 함수를 사용하십시오. 두 행렬은 크기가 동일해야 합니다.

  • XY가 벡터이면 그리드 벡터로 처리됩니다. 두 벡터의 값은 모두 순단조 증가 또는 감소 형식이어야 합니다.

예: [X,Y] = meshgrid(1:30,-10:10)

데이터형: single | double

샘플 값으로, 실수 행렬 또는 복소수 행렬로 지정됩니다. V의 크기 요구 사항은 XY의 크기에 따라 달라집니다.

  • XY가 전체 그리드(meshgrid 형식)를 나타내는 행렬인 경우 VXY와 크기가 동일해야 합니다.

  • XY가 그리드 벡터인 경우 Vlength(Y) 행과 length(X) 열을 갖는 행렬이어야 합니다.

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

예: rand(10,10)

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

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

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

  • XqYq가 방향이 다른 벡터이면 XqYq는 그리드 벡터로 처리됩니다.

  • XqYq가 크기와 방향이 같은 벡터이면 XqYq는 2차원 공간의 산점(Scattered Point)으로 처리됩니다.

  • XqYq가 행렬이면, 이들은 쿼리 점의 전체 그리드(meshgrid 형식) 또는 산점을 나타냅니다.

  • XqYq가 N차원 배열이면 이들은 2차원 공간의 산점을 나타냅니다.

예: [Xq,Yq] = meshgrid((1:0.1:10),(-5:0.1:0))

데이터형: single | double

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

k0이면 VqV와 동일합니다.

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

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

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

예: interp2(V,2)

데이터형: single | double

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

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

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

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

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

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

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

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

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

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

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

'spline'쿼리 점에서 보간된 값은 각 차원의 인접 그리드 점에서 값이 3차 보간된 것입니다. 이 보간은 not-a-knot 끝점 조건을 사용한 3차 스플라인을 기반으로 합니다.C2
  • 각 차원에서 4개의 점이 필요함

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

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

예: 5

예: 5+1i

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

출력 인수

모두 축소

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

구문특수 조건Vq의 크기
interp2(X,Y,V,Xq,Yq)
interp2(V,Xq,Yq)
이러한 구문의 변형(변형된 구문에는 method 또는 extrapval이 포함됨)
Xq, Yq가 스칼라임스칼라XqYq를 스칼라로 전달하면 size(Vq) = [1 1]입니다.
위와 동일Xq, Yq가 크기와 방향이 동일한 벡터임XqYq와 크기와 방향이 동일한 벡터size(Xq) = [100 1]이고
size(Yq) = [100 1]이면
size(Vq) = [100 1]이 됩니다.
위와 동일Xq, Yq가 방향이 혼합된 벡터임행 개수가 length(Yq)이고 열 개수가 length(Xq)인 행렬size(Xq) = [1 100]이고
size(Yq) = [50 1]이면
size(Vq) = [50 100]이 됩니다.
위와 동일Xq, Yq가 크기가 동일한 행렬이거나 배열임XqYq와 크기가 동일한 행렬 또는 배열size(Xq) = [50 25]이고
size(Yq) = [50 25]이면
size(Vq) = [50 25]이 됩니다.
interp2(V,k)
이 구문의 변형(변형된 구문에는 method 또는 extrapval이 포함됨)
없음

행 개수가
2^k * (size(V,1)-1)+1이고

열 개수가
2^k * (size(V,2)-1)+1인 행렬

size(V) = [10 20]이고
k = 2이면
size(Vq) = [37 77]이 됩니다.

세부 정보

모두 축소

순단조(Strictly Monotonic)

증가 또는 감소의 방향에 반전이 없는 일련의 값들입니다. 예를 들어, 시퀀스 a = [2 4 6 8]은 순단조 증가 형식입니다. 시퀀스 b = [2 4 4 6 8]b(2)b(3) 사이에 값의 변화가 없으므로 순단조 형식이 아닙니다. 시퀀스 c = [2 4 6 8 6]에는 c(4)c(5) 사이에 반전이 포함되어 있으므로 단조 형식이 아닙니다.

전체 그리드(meshgrid 형식)

interp2에서 전체 그리드는 한 쌍의 행렬로, 이 행렬의 요소가 사각형 영역 전반에 걸쳐 점의 그리드를 나타냅니다. 한 행렬에는 x 좌표가 포함되고 다른 행렬에는 y 좌표가 포함됩니다. x 행렬의 값은 행을 따라 순단조(Strictly Monotonic) 증가합니다. 열을 따르는 값은 균일합니다. y 행렬의 값은 열을 따라 순단조(Strictly Monotonic) 증가합니다. 행을 따르는 값은 균일합니다. interp2에 전달할 수 있는 전체 그리드를 만들려면 meshgrid 함수를 사용하십시오.

예를 들어, 다음 코드는 영역 –1 ≤ x ≤ 3 및 1 ≤ y ≤ 4에 대한 전체 그리드를 만듭니다.

[X,Y] = meshgrid(-1:3,(1:4))
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

그리드 벡터 형식은 전체 그리드 형식보다 그리드를 간결하게 표현합니다. 두 형식 사이의 관계와 샘플 값으로 구성된 행렬 V는 다음과 같습니다.

The relation between full-grid representation and grid-vector representation

그리드 벡터

interp2의 경우 그리드 벡터는 그리드에서 x 좌표와 y 좌표를 정의하는 한 쌍의 벡터로 구성됩니다. 행 벡터는 x 좌표를 정의하고 열 벡터는 y 좌표를 정의합니다.

Grid vectors implicitly define a full grid

예를 들어, 다음 코드는 –1 ≤ x ≤ 3 및 1 ≤ y ≤ 4인 영역을 지정하는 그리드 벡터를 만듭니다.

x = -1:3;
y = (1:4)';

산점(Scattered Point)

interp2의 경우 산점은 2차원 공간의 산점 모음을 정의하는 한 쌍의 배열로 구성됩니다. 한 배열에는 x 좌표가 포함되고 다른 배열에는 y 좌표가 포함됩니다.

예를 들어, 다음 코드는 점 (2,7), (5,3), (4,1)과 (10,9)를 지정합니다.

x = [2 5; 4 10];
y = [7 3; 1 9];

확장 기능

버전 내역

R2006a 이전에 개발됨