이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
interpn
ndgrid 형식의 1차원, 2차원, 3차원, N차원 그리드 데이터 보간
구문
설명
은 n개의 변수로 구성된 함수의 특정 쿼리 점에서 선형 보간된 값을 반환합니다. 결과는 항상 함수의 원래 샘플링을 통과합니다. Vq
= interpn(X1,X2,...,Xn
,V
,Xq1,Xq2,...,Xqn
)X1,X2,...,Xn
은 샘플 점의 좌표를 포함합니다. V
는 각 샘플 점에 대응하는 함수 값을 포함합니다. Xq1,Xq2,...,Xqn
은 쿼리 점의 좌표를 포함합니다.
은 샘플 점의 디폴트 그리드를 가정합니다. 디폴트 그리드는 각 차원에서 점 1,2,3,...ni로 구성됩니다. ni의 값은 Vq
= interpn(V
,Xq1,Xq2,...,Xqn
)V
에서 i번째 차원의 길이입니다. 메모리를 절약하고 점 간 절대 거리를 고려하지 않으려면 이 구문을 사용하십시오.
예제
1차원 보간
샘플 점과 값을 정의합니다.
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');
2차원 보간
일련의 그리드 점과, 그에 대응하는 샘플 값을 만듭니다.
[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);
두 세트의 2차원 샘플 값 보간하기
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)
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)
3차원 함수의 영역 밖 계산
그리드 벡터 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
로 계산됩니다.
4차원 보간
을 나타내는 익명 함수를 정의합니다.
f = @(x,y,z,t) t.*exp(-x.^2 - y.^2 - z.^2);
에 점의 그리드를 만듭니다. 그런 다음 함수를 통해 점을 전달하여 샘플 값 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
— 샘플 그리드 점
배열 | 벡터
샘플 그리드 점으로, 실수 배열 또는 실수 벡터로 지정됩니다. 샘플 그리드 점은 고유해야 합니다.
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
— 샘플 값
배열
샘플 값으로, 실수 배열 또는 복소수 배열로 지정됩니다. 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 배열일 수 있습니다.V
가n
차원을 초과하는 경우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
— 쿼리 점
스칼라 | 벡터 | 배열
쿼리 점으로, 실수형 스칼라, 벡터, 배열 중 하나로 지정됩니다.
Xq1,Xq2,...,Xqn
이 스칼라이면, 이들은 Rn의 단일 쿼리 점의 좌표가 됩니다.Xq1,Xq2,...,Xqn
이 방향이 다른 벡터이면Xq1,Xq2,...,Xqn
은 Rn의 그리드 벡터로 처리됩니다.Xq1,Xq2,...,Xqn
이 크기와 방향이 같은 벡터이면Xq1,Xq2,...,Xqn
은 Rn의 산점으로 처리됩니다.Xq1,Xq2,...,Xqn
이 크기가 같은 배열이면, 이들은 쿼리 점(ndgrid
형식)의 전체 그리드 또는 Rn의 산점을 나타냅니다.
예: [X1,X2,X3,X4] = ndgrid(1:10,1:5,7:9,10:11)
데이터형: single
| double
k
— 세분화 인자(Refinement Factor)
1
(디폴트 값) | 음이 아닌 실수형 정수 스칼라
세분화 인자로, 음이 아닌 실수형 정수 스칼라로 지정됩니다. 이 값은 각 차원에서 조정된 그리드의 간격을, 반복적으로 나누는 횟수를 지정합니다. 결과적으로, 샘플 값 간에 2^k-1
개의 보간된 점이 생성됩니다.
k
가 0
이면 Vq
는 V
와 동일합니다.
interpn(V,1)
은 interpn(V)
와 동일합니다.
다음 그림은 R2의 k=2
의 경우로, 9개의 샘플 값(검은색) 사이에 보간된 값(빨간색) 72개의 배치를 보여줍니다.
예: interpn(V,2)
데이터형: single
| double
method
— 보간 방법
'linear'
(디폴트 값) | 'nearest'
| 'pchip'
| 'cubic'
| 'spline'
| 'makima'
보간 방법으로, 다음 표에 나와 있는 옵션 중 하나로 지정됩니다.
방법 | 설명 | 연속성 | 설명 |
---|---|---|---|
'linear' | 쿼리 점에서 보간된 값은 각 차원의 인접 그리드 점에서 값이 선형 보간된 것입니다. 이는 디폴트 보간 방법입니다. | C0 |
|
'nearest' | 쿼리 점에서 보간된 값은 가장 근접한 샘플 그리드 점에서의 값입니다. | 불연속 |
|
'pchip' | 형태 보존 조각별 3차 보간입니다(1차원에만 해당). 쿼리 점에서 보간된 값은 인접 그리드 점에서 값이 형태 보존 조각별 3차 보간된 것입니다. | C1 |
|
'cubic' | 쿼리 점에서 보간된 값은 각 차원의 인접 그리드 점에서 값이 3차 보간된 것입니다. 이 보간은 3차 컨벌루션을 기반으로 합니다. | C1 |
|
'makima' | 아키마 3차 에르미트 다항식 변형 보간. 쿼리 점에서 보간된 값은 각 차원의 인접 그리드 점 값을 사용하여 계산된, 차수가 최대 3인 다항식의 조각별 함수를 기반으로 합니다. 아키마 수식이 오버슈트를 방지하도록 수정되었습니다. | C1 |
|
'spline' | 쿼리 점에서 보간된 값은 각 차원의 인접 그리드 점에서 값이 3차 보간된 것입니다. 이 보간은 not-a-knot 끝점 조건을 사용한 3차 스플라인을 기반으로 합니다. | C2 |
|
extrapval
— X1,X2,...,Xn
영역 밖의 함수 값
스칼라
X1,X2,...,Xn
영역 밖의 함수 값으로, 실수 또는 복소수 스칼라로 지정됩니다. interpn
은 X1,X2,...,Xn
의 영역 밖에 있는 모든 점에 대해 이 상수 값을 반환합니다.
예: 5
예: 5+1i
데이터형: single
| double
복소수 지원 여부: 예
출력 인수
Vq
— 보간된 값
스칼라 | 벡터 | 배열
보간된 값으로, 실수 또는 복소수 스칼라, 벡터, 배열 중 하나로 반환됩니다. Vq
의 크기와 형태는 사용하는 구문에 따라 다르며, 입력 인수의 크기와 값에 따라 달라지기도 합니다.
X1,X2,...,Xn
으로 샘플 점을 지정하거나 디폴트 그리드를 사용하고V
가 샘플 점의 n차원 그리드와 동일한 차원 수를 갖는 경우Vq
는Xq1,Xq2,...,Xqn
으로 정의된 쿼리 점에서 단일한 보간 값 세트를 포함합니다.Xq1,Xq2,...,Xqn
이 스칼라이면Vq
도 스칼라입니다.Xq1,Xq2,...,Xqn
이 크기와 방향이 동일한 벡터이면Vq
도 크기와 방향이 동일한 벡터입니다.Xq1,Xq2,...,Xqn
이 방향이 혼합된 그리드 벡터이면Vq
는 그리드 벡터에 의해 묵시적으로 정의된 그리드와 크기가 동일한 배열입니다.Xq1,Xq2,...,Xqn
이 크기가 동일한 배열이면Vq
도 크기가 동일한 배열입니다.
X1,X2,...,Xn
으로 샘플 점을 지정하거나 디폴트 그리드를 사용하고V
가 샘플 점의 n차원 그리드보다 더 큰 차원을 갖는 경우,Vq
는Xq1,Xq2,...,Xqn
으로 정의된 쿼리 점에서 복수의 보간 값 세트를 포함합니다. 이 경우Vq
의 처음 n개 차원은 위의 단일한 보간 값 세트의 크기 규칙을 따르지만 동시에Vq
는V
와 동일한 크기의 추가 차원을 갖습니다.구문
interpn(V)
및interpn(V,k)
를 사용하면 디폴트 그리드를k
번(interpn(V)
의 경우k=1
) 세분화하여 보간이 수행됩니다. 이 경우Vq
는V
와 차원 수가 동일한 배열이며, i번째 차원의 크기는2^k * (size(V,i)-1)+1
입니다.
세부 정보
순단조(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)
사이에 반전이 포함되어 있으므로 단조 형식이 아닙니다.
전체 그리드(ndgrid 형식)
interpn
에서 전체 그리드는 n개의 배열 X1,X2,...,Xn
으로 구성됩니다. 이 배열의 요소는 Rn에 있는 점의 그리드를 나타냅니다. i번째 배열 Xi
는 i번째 차원을 따라 가장 빠르게 변화하는 순단조(Strictly Monotonic) 증가 값을 포함합니다.
interpn
에 전달할 수 있는 전체 그리드를 만들려면 ndgrid
함수를 사용하십시오. 예를 들어, 다음 코드는 영역 1 ≤ X1 ≤ 3, 1 ≤ X2 ≤ 4에 대해 R2의 전체 그리드를 만듭니다.
[X1,X2] = ndgrid(-1:3,(1:4))
X1 = -1 -1 -1 -1 0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3 X2 = 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4
그리드 벡터
interpn
에서 그리드 벡터는 Rn의 그리드의 점을 정의하는, 방향이 혼합된 n개의 벡터로 구성됩니다.
예를 들어, 다음 코드는 영역 1 ≤ x1 ≤ 3, 4 ≤ x2 ≤ 5 및 6 ≤x3≤ 8에 대해 R3의 그리드 벡터를 만듭니다.
x1 = 1:3; x2 = (4:5)'; x3 = 6:8;
산점(Scattered Point)
interpn
의 경우 산점은 Rn의 산점 모음을 정의하는 n개의 배열 또는 벡터인 Xq1,Xq2,...,Xqn
으로 구성됩니다. i
번째 배열 Xi
는 i
번째 차원의 좌표를 포함합니다.
예를 들어, 다음 코드는 R3의 점 (1, 19, 10), (6, 40, 1), (15, 33, 22)와 (0, 61, 13)을 지정합니다.
Xq1 = [1 6; 15 0]; Xq2 = [19 40; 33 61]; Xq3 = [10 1; 22 13];
확장 기능
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
사용법 관련 참고 및 제한 사항:
최상의 결과를 얻으려면
X1,X2,...,Xn
을 벡터로 제공하십시오. 이러한 벡터의 값은 순단조 증가 형식이어야 합니다.코드 생성 시
'makima'
보간 방법은 지원되지 않습니다.보간 방법은 상수 문자형 벡터여야 합니다.
스레드 기반 환경
MATLAB®의 backgroundPool
을 사용해 백그라운드에서 코드를 실행하거나 Parallel Computing Toolbox™의 ThreadPool
을 사용해 코드 실행 속도를 높일 수 있습니다.
이 함수는 스레드 기반 환경을 완전히 지원합니다. 자세한 내용은 스레드 기반 환경에서 MATLAB 함수 실행하기 항목을 참조하십시오.
GPU 배열
Parallel Computing Toolbox™를 사용해 GPU(그래픽스 처리 장치)에서 실행하여 코드 실행 속도를 높일 수 있습니다.
사용법 관련 참고 및 제한 사항:
최대 5개의 차원이 지원됩니다.
X1,X2,...,Xn
은V
와 일치하는 차원을 가져야 합니다.method
는'linear'
또는'nearest'
여야 합니다.
자세한 내용은 GPU에서 MATLAB 함수 실행하기 (Parallel Computing Toolbox) 항목을 참조하십시오.
분산 배열
Parallel Computing Toolbox™를 사용하여 대규모 배열을 클러스터의 결합된 메모리에 걸쳐 분할할 수 있습니다.
사용법 관련 참고 및 제한 사항:
X1,X2,...,Xn
은V
와 일치하는 차원을 가져야 합니다.
자세한 내용은 분산 배열을 사용하여 MATLAB 함수 실행 (Parallel Computing Toolbox) 항목을 참조하십시오.
버전 내역
R2006a 이전에 개발됨R2021a: 동시에 여러 개의 데이터 세트 보간
동일한 그리드의 동일한 쿼리 점에서 여러 개의 데이터 세트를 보간할 수 있는 지원이 추가되었습니다. 예를 들어, 2차원 그리드를 지정하고, 그리드 점에서의 값을 3차원 배열로 지정하고, 2차원 쿼리 점 모음을 지정할 경우 interpn
은 각 2차원 페이지에 대한 쿼리 점에서 보간된 값을 3차원 배열의 값으로 반환합니다.
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)