1차원 데이터 보간(테이블 룩업)
페이지 내 모두 축소
구문
vq = interp1(x,v,xq)
vq = interp1(x,v,xq,method)
vq = interp1(x,v,xq,method,extrapolation)
vq = interp1(v,xq)
vq = interp1(v,xq,method)
vq = interp1(v,xq,method,extrapolation)
pp = interp1(x,v,method,'pp')
설명
예제
vq = interp1(x,v,xq)
은 선형 보간을 사용하여 특정 쿼리 점에서 1차원 함수의 보간된 값을 반환합니다. 벡터 x
는 샘플 점을 포함하며 v
는 대응값 v(x)를 포함합니다. 벡터 xq
는 쿼리 점의 좌표를 포함합니다.
동일한 점 좌표에서 샘플링된 여러 데이터 세트가 있을 경우 v
를 배열로 전달할 수 있습니다. 배열 v
의 각 열은 서로 다른 1차원 샘플 값의 세트를 포함합니다.
예제
vq = interp1(x,v,xq,method)
는 대체 보간 방법을 'linear'
, 'nearest'
, 'next'
, 'previous'
, 'pchip'
, 'cubic'
, 'v5cubic'
, 'makima'
또는 'spline'
으로 지정합니다. 디폴트 방법은 'linear'
입니다.
예제
vq = interp1(x,v,xq,method,extrapolation)
은 x
의 영역 밖에 있는 점을 평가하기 위한 전략을 지정합니다. 외삽용 method
알고리즘을 사용하려면 extrapolation
을 'extrap'
으로 설정하십시오. 또는 스칼라 값을 지정할 수 있으며, 이 경우 interp1
은 x
의 영역 밖에 있는 모든 점에 대해 보간된 값을 반환합니다.
예제
vq = interp1(v,xq)
는 보간된 값을 반환하고 샘플 점 좌표의 디폴트 세트를 가정합니다. 디폴트 점은 1
부터 n
까지의 숫자 시퀀스입니다. 여기서 n
은 v
의 형태에 따라 달라집니다.
v가 벡터이면 디폴트 점은
1:length(v)
입니다.v가 배열이면 디폴트 점은
1:size(v,1)
입니다.
점 간의 절대 거리를 고려하지 않아도 되는 경우 이 구문을 사용하십시오.
vq = interp1(v,xq,method)
는 대체 보간 방법 중 하나를 지정하고 디폴트 샘플 점을 사용합니다.
vq = interp1(v,xq,method,extrapolation)
은 외삽법을 지정하고 디폴트 샘플 점을 사용합니다.
pp = interp1(x,v,method,'pp')
는 method
알고리즘을 사용하여 v(x)의 조각별 다항식(Piecewise Polynomial)을 반환합니다.
참고
이 구문은 권장되지 않습니다. griddedInterpolant를 대신 사용하십시오.
예제
모두 축소
성기게 샘플링된 사인 함수의 보간
라이브 스크립트 열기
샘플 점 x
와 이에 대응하는 샘플 값 v
를 정의합니다.
x = 0:pi/4:2*pi; v = sin(x);
x
의 범위에 걸쳐 미세한 샘플링이 되도록 쿼리 점을 정의합니다.
xq = 0:pi/16:2*pi;
쿼리 점에서 함수를 보간하고 결과를 플로팅합니다.
figurevq1 = interp1(x,v,xq);plot(x,v,'o',xq,vq1,':.');xlim([0 2*pi]);title('(Default) Linear Interpolation');
이제 'spline'
방법을 사용하여 동일한 점에서 v
를 계산합니다.
figurevq2 = interp1(x,v,xq,'spline');plot(x,v,'o',xq,vq2,':.');xlim([0 2*pi]);title('Spline Interpolation');
점을 지정하지 않고 보간
라이브 스크립트 열기
일련의 함수 값을 정의합니다.
v = [0 1.41 2 1.41 0 -1.41 -2 -1.41 0];
디폴트 점 1:9
사이에 속하는 일련의 쿼리 점을 정의합니다. 이 경우 v
에 9
개의 값이 포함되므로 디폴트 점은 1:9
입니다.
xq
에서 v
를 계산합니다.
vq = interp1(v,xq);
결과를 플로팅합니다.
figureplot((1:9),v,'o',xq,vq,'*');legend('v','vq');
복소수 값의 보간
라이브 스크립트 열기
샘플 점 집합을 정의합니다.
x = 1:10;
샘플 점에서 함수 의 값을 정의합니다.
v = (5*x)+(x.^2*1i);
x
의 범위에 걸쳐 미세한 샘플링이 되도록 쿼리 점을 정의합니다.
xq = 1:0.25:10;
쿼리 점에서 v
를 보간합니다.
vq = interp1(x,v,xq);
결과의 실수부를 빨간색으로 플로팅하고 허수부를 파란색으로 플로팅합니다.
figureplot(x,real(v),'*r',xq,real(vq),'-r');hold onplot(x,imag(v),'*b',xq,imag(vq),'-b');
날짜와 시간 보간하기
라이브 스크립트 열기
타임스탬프가 지정된 데이터 점을 보간합니다.
4시간 단위로 측정된 온도 측정값이 들어 있는 데이터 세트가 있다고 가정합니다. 하루치의 데이터로 테이블을 만들고 이 데이터를 플로팅합니다.
x = (datetime(2016,1,1):hours(4):datetime(2016,1,2))';x.Format = 'MMM dd, HH:mm';T = [31 25 24 41 43 33 31]';WeatherData = table(x,T,'VariableNames',{'Time','Temperature'})
WeatherData=7×2 table Time Temperature _____________ ___________ Jan 01, 00:00 31 Jan 01, 04:00 25 Jan 01, 08:00 24 Jan 01, 12:00 41 Jan 01, 16:00 43 Jan 01, 20:00 33 Jan 02, 00:00 31
plot(WeatherData.Time, WeatherData.Temperature, 'o')
데이터 세트를 보간하여 하루 중 매 분의 온도 측정값을 예측합니다. 이 데이터는 주기적이므로, 'spline'
보간 방법을 사용합니다.
xq = (datetime(2016,1,1):minutes(1):datetime(2016,1,2))';V = interp1(WeatherData.Time, WeatherData.Temperature, xq, 'spline');
보간된 점을 플로팅합니다.
hold onplot(xq,V,'r')
두 가지 다른 방법으로 외삽
라이브 스크립트 열기
샘플 점 x
와 이에 대응하는 샘플 값 v
를 정의합니다.
x = [1 2 3 4 5];v = [12 16 31 10 6];
x
의 영역을 벗어나는 쿼리 점 xq
를 지정합니다.
xq = [0 0.5 1.5 5.5 6];
'pchip'
방법을 사용하여 xq
에서 v
를 계산합니다.
vq1 = interp1(x,v,xq,'pchip')
vq1 = 1×5 19.3684 13.6316 13.2105 7.4800 12.5600
그 다음 'linear'
방법을 사용하여 xq
에서 v
를 계산합니다.
vq2 = interp1(x,v,xq,'linear')
vq2 = 1×5 NaN NaN 14 NaN NaN
이제 'linear'
방법을 'extrap'
옵션과 함께 사용합니다.
vq3 = interp1(x,v,xq,'linear','extrap')
vq3 = 1×5 8 10 14 4 2
'pchip'
은 기본적으로 외삽을 적용하지만 'linear'
는 외삽을 적용하지 않습니다.
x의 영역 밖에 있는 모든 쿼리에 대해 상수 값 지정
라이브 스크립트 열기
샘플 점 x
와 이에 대응하는 샘플 값 v
를 정의합니다.
x = [-3 -2 -1 0 1 2 3];v = 3*x.^2;
x
의 영역을 벗어나는 쿼리 점 xq
를 지정합니다.
xq = [-4 -2.5 -0.5 0.5 2.5 4];
이제 'pchip'
방법을 사용하여 xq
에서 v
를 계산하고, x
의 정의역 밖에 있는 값에는 값 27
을 대입합니다.
vq = interp1(x,v,xq,'pchip',27)
vq = 1×6 27.0000 18.6562 0.9375 0.9375 18.6562 27.0000
여러 데이터 세트를 단일 통과로 보간
라이브 스크립트 열기
샘플 점을 정의합니다.
x = (-5:5)';
세 가지 다른 포물선 함수를 x
에 정의된 점에서 샘플링합니다.
v1 = x.^2;v2 = 2*x.^2 + 2;v3 = 3*x.^2 + 4;
각 열이 벡터 v1
, v2
, v3
인 행렬 v
를 만듭니다.
v = [v1 v2 v3];
x
의 범위에 걸쳐 미세한 샘플링이 되도록 쿼리 점 집합 xq
를 정의합니다.
xq = -5:0.1:5;
xq
에서 세 개 함수를 모두 계산하고 결과를 플로팅합니다.
vq = interp1(x,v,xq,'pchip');figureplot(x,v,'o',xq,vq);h = gca;h.XTick = -5:5;
플롯의 원은 v
를 나타내고 실선은 vq
를 나타냅니다.
입력 인수
모두 축소
x
— 샘플 점
벡터
샘플 점으로, 실수의 행 벡터 또는 열 벡터로 지정됩니다. x
의 값은 고유해야 합니다. x
의 길이는 다음 요구 사항 중 하나를 준수해야 합니다.
v
가 벡터인 경우length(x)
는length(v)
와 같아야 합니다.v
가 배열인 경우length(x)
는size(v,1)
과 같아야 합니다.
예: [1 2 3 4 5 6 7 8 9 10]
예: 1:10
예: [3 7 11 15 19 23 27 31]'
데이터형: single
| double
| duration
| datetime
v
— 샘플 값
벡터 | 행렬 | 배열
샘플 값으로, 실수 또는 복소수로 구성된 벡터, 행렬, 배열 중 하나로 지정됩니다. v
가 행렬 또는 배열인 경우 각 열은 별개의 1차원 값 세트를 포함합니다.
v
에 복소수가 있는 경우 interp1
은 실수부와 허수부를 각각 별도로 보간합니다.
예: rand(1,10)
예: rand(10,1)
예: rand(10,3)
데이터형: single
| double
| duration
| datetime
복소수 지원 여부: 예
xq
— 쿼리 점
스칼라 | 벡터 | 행렬 | 배열
쿼리 점으로, 실수로 구성된 스칼라, 벡터, 행렬, 배열 중 하나로 지정됩니다.
예: 5
예: 1:0.05:10
예: (1:0.05:10)'
예: [0 1 2 7.5 10]
데이터형: single
| double
| duration
| datetime
method
— 보간 방법
'linear'
(디폴트 값) | 'nearest'
| 'next'
| 'previous'
| 'pchip'
| 'cubic'
| 'v5cubic'
| 'makima'
| 'spline'
보간 방법으로, 다음 표에 나와 있는 옵션 중 하나로 지정됩니다.
방법 | 설명 | 연속성 | 설명 |
---|---|---|---|
| 선형 보간입니다. 쿼리 점에서 보간된 값은 각 차원의 인접 그리드 점에서 값이 선형 보간된 것입니다. 이는 디폴트 보간 방법입니다. | C0 |
|
| 최근접이웃 보간입니다. 쿼리 점에서 보간된 값은 가장 근접한 샘플 그리드 점에서의 값입니다. | 불연속 |
|
| 다음 근방(Next Neighbor) 보간입니다. 쿼리 점에서 보간된 값은 그다음 샘플 그리드 점에서의 값입니다. | 불연속 |
|
| 이전 근방(Previous Neighbor) 보간입니다. 쿼리 점에서 보간된 값은 이전 샘플 그리드 점에서의 값입니다. | 불연속 |
|
| 형태 보존 조각별 3차 보간입니다. 쿼리 점에서 보간된 값은 인접 그리드 점에서 값이 형태 보존 조각별 3차 보간된 것입니다. | C1 |
|
| MATLAB® 5에서 사용되는 3차 컨벌루션입니다. | C1 |
|
|
| C1 | |
| 아키마 3차 에르미트 다항식 변형 보간. 쿼리 점에서 보간된 값은 차수가 최대 3인 다항식의 조각별 함수를 기반으로 합니다. 아키마 수식이 오버슈트를 방지하도록 수정되었습니다. | C1 |
|
| not-a-knot 끝점 조건을 사용한 스플라인 보간입니다. 쿼리 점에서 보간된 값은 각 차원의 인접 그리드 점에서 값이 3차 보간된 것입니다. | C2 |
|
extrapolation
— 외삽법(보외법)
'extrap'
| 스칼라 값
외삽법으로, 'extrap'
나 실수형 스칼라 값으로 지정됩니다.
interp1
이 보간에 사용하는 것과 동일한 방법을 사용하여 영역 밖에 있는 점을 계산하도록 하려면'extrap'
을 지정하십시오.interp1
이 영역 밖에 있는 점에 대해 특정 상수 값을 반환하도록 하려면 스칼라 값을 지정하십시오.
디폴트 동작은 입력 인수에 따라 달라집니다.
'pchip'
,'spline'
,'makima'
보간 방법 중 하나를 지정할 경우 디폴트 동작은'extrap'
입니다.다른 모든 보간 방법은 영역 밖에 있는 쿼리 점에 대해 기본적으로
NaN
을 반환합니다.
예: 'extrap'
예: 5
데이터형: char
| string
| single
| double
출력 인수
모두 축소
vq
— 보간된 값
스칼라 | 벡터 | 행렬 | 배열
보간된 값으로, 스칼라, 벡터, 행렬, 배열 중 하나로 반환됩니다. vq
의 크기는 v
와 xq
의 형태에 따라 달라집니다.
v의 형태 | xq의 형태 | Vq의 크기 | 예 |
---|---|---|---|
벡터 | 벡터 | size(xq) | size(v) = [1 100] 이고 size(xq) = [1 500] 이면 size(vq) = [1 500] 이 됩니다. |
벡터 | 행렬 또는 N차원 배열 | size(xq) | size(v) = [1 100] 이고 size(xq) = [50 30] 이면 size(vq) = [50 30] 이 됩니다. |
행렬 또는 N차원 배열 | 벡터 | [length(xq) size(v,2),...,size(v,n)] | size(v) = [100 3] 이고 size(xq) = [1 500] 이면 size(vq) = [500 3] 이 됩니다. |
행렬 또는 N차원 배열 | 행렬 또는 N차원 배열 | [size(xq,1),...,size(xq,n),... size(v,2),...,size(v,m)] | size(v) = [4 5 6] 이고 size(xq) = [2 3 7] 이면 size(vq) = [2 3 7 5 6] 이 됩니다. |
pp
— 조각별 다항식
구조체
조각별 다항식(Piecewise Polynomial)으로, 계산을 위해 ppval 함수로 전달될 수 있도록 구조체로 반환됩니다.
세부 정보
모두 축소
아키마와 스플라인 보간
1차원 보간에 대한 아키마 알고리즘은 연속 1계 도함수(C1)를 갖는 조각별 다항식들을 생성하기 위해 3차 보간을 수행합니다. 자세한 설명은 [1]과 [2]를 참조하십시오. 이 알고리즘은 기울기를 보존하고 평탄 영역에서의 요동을 방지합니다. 평탄 영역은 동일직선상의 점이 3개 이상 연속될 때마다 발생하는데, 이 알고리즘에서는 이러한 점들을 직선으로 연결합니다. 두 데이터 점 사이의 영역의 평탄성을 보장하려면 두 점 사이에 데이터 점을 하나 삽입하십시오.
기울기가 서로 다른 두 평탄 영역이 만나는 경우, 기존 아키마 알고리즘에 적용된 수정 사항은 기울기가 0에 더 가까운 쪽에 가중치를 더 줍니다. 수정된 알고리즘은 가로에 더 가까운 쪽에 우선 순위를 주는데, 이는 보다 직관적이면서 오버슈트를 방지합니다. (기존 아키마 알고리즘은 양쪽 점에 동일한 가중치를 주기 때문에 요동이 균일하게 분배됩니다.)
반면 스플라인 알고리즘은 3차 보간을 수행하여 연속 2계 도함수(C2)를 갖는 조각별 다항식들을 생성합니다. 결과는 일반적인 다항식 보간과 비슷하지만 높은 차수에서 데이터 점 사이의 심한 진동에 영향을 훨씬 덜 받습니다. 그렇지만 이 방법도 데이터 점 사이의 진동과 오버슈트의 영향을 받을 수 있습니다.
아키마 알고리즘은 스플라인 알고리즘과 비교했을 때 요동을 더 적게 생성하며 평탄 영역 간의 빠른 변화에 대응하기에 더 적합합니다. 다음은 여러 개의 평탄 영역을 연결하는 테스트 데이터를 사용하여 두 알고리즘의 차이를 도식화한 것입니다.
참고 문헌
[1] Akima, Hiroshi. "A new method of interpolation and smooth curve fitting based on local procedures." Journal of the ACM (JACM) , 17.4, 1970, pp. 589-602.
[2] Akima, Hiroshi. "A method of bivariate interpolation and smooth surface fitting based on local procedures." Communications of the ACM , 17.1, 1974, pp. 18-20.
확장 기능
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
사용법 관련 참고 및 제한 사항:
입력 인수
x
(샘플 점)는 순증가하거나 순감소해야 합니다. 인덱스는 재정렬되지 않습니다.입력 인수
v
(샘플 값)가 가변 길이 벡터인 경우(1×:
또는:
×1) 출력 인수vq
의 형태는 MATLAB에 있는 형태와 일치합니다.입력 인수
v
가 가변 크기이고, 가변 길이 벡터가 아니며, 런타임 시 행 벡터가 되는 경우 오류가 발생합니다.샘플 값 또는 쿼리 점에
Inf
또는-Inf
가 포함된 경우, 생성된 코드의 출력값이 MATLAB의 출력값과 일치하지 않을 수 있습니다.입력 인수
xq
(쿼리 점)가 가변 크기이고, 가변 길이 벡터가 아니며, 런타임 시 행 또는 열 벡터가 되는 경우 오류가 발생합니다.Variable-Sizing Restrictions for Code Generation of Toolbox Functions (MATLAB Coder) 항목을 참조하십시오.
GPU 코드 생성
GPU Coder™를 사용하여 NVIDIA® GPU용 CUDA® 코드를 생성할 수 있습니다.
사용법 관련 참고 및 제한 사항:
입력 인수
x
(샘플 점)는 순증가하거나 순감소해야 합니다. 인덱스는 재정렬되지 않습니다.입력 인수
v
(샘플 값)가 가변 길이 벡터인 경우(1×:
또는:
×1) 출력 인수vq
의 형태는 MATLAB에 있는 형태와 일치합니다.입력 인수
v
가 가변 크기이고, 가변 길이 벡터가 아니며, 런타임 시 행 벡터가 되는 경우 오류가 발생합니다.입력 인수
xq
(쿼리 점)가 가변 크기이고, 가변 길이 벡터가 아니며, 런타임 시 행 또는 열 벡터가 되는 경우 오류가 발생합니다.Variable-Sizing Restrictions for Code Generation of Toolbox Functions (MATLAB Coder) 항목을 참조하십시오.
스레드 기반 환경
MATLAB®의 backgroundPool
을 사용해 백그라운드에서 코드를 실행하거나 Parallel Computing Toolbox™의 ThreadPool
을 사용해 코드 실행 속도를 높일 수 있습니다.
이 함수는 스레드 기반 환경을 완전히 지원합니다. 자세한 내용은 스레드 기반 환경에서 MATLAB 함수 실행하기 항목을 참조하십시오.
GPU 배열
Parallel Computing Toolbox™를 사용해 GPU(그래픽스 처리 장치)에서 실행하여 코드 실행 속도를 높일 수 있습니다.
사용법 관련 참고 및 제한 사항:
보간 방법
'pchip'
과'makima'
는 지원되지 않습니다.NaN
을 포함하는 샘플 값v
에는'spline'
보간 방법이 지원되지 않습니다.
자세한 내용은 GPU에서 MATLAB 함수 실행하기 (Parallel Computing Toolbox) 항목을 참조하십시오.
분산 배열
Parallel Computing Toolbox™를 사용하여 대규모 배열을 클러스터의 결합된 메모리에 걸쳐 분할할 수 있습니다.
이 함수는 분산 배열을 완전히 지원합니다. 자세한 내용은 분산 배열을 사용하여 MATLAB 함수 실행 (Parallel Computing Toolbox) 항목을 참조하십시오.
버전 내역
R2006a 이전에 개발됨
모두 확장
R2020b: interp1
의 'cubic'
방법은 3차 컨벌루션을 수행함
R2020b에서 interp1
의 'cubic'
보간 방법은 3차 컨벌루션을 수행합니다. 이제 'v5cubic'
과 'cubic'
보간 방법은 interp2
, interp3
, interpn
동작과 일치하는 동일한 유형의 보간을 수행합니다. 3차 컨벌루션 보간 방법은 균일한 간격의 데이터를 위한 것으로, 불규칙한 간격의 데이터는 'spline'
보간을 사용합니다.
이전 릴리스에서는 'cubic'
이 'pchip'
와 동일했고 'v5cubic'
만 3차 컨벌루션을 수행했습니다.
참고 항목
interp2 | interp3 | interpn | griddedInterpolant
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:
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
- Deutsch
- English
- Français
- United Kingdom (English)
Contact your local office