2011-10-16 2 views
6

그래서 우리는 길이가 2 × n 개의와2 차원에서 2 차원 함수로 보간법을 수행하는 수학적 방법은 무엇입니까?

12,32 
24,12 
... 

길이 × n 개의 또 다른

44,32 
44,19 
... 

같은 매트릭스를 가지고 있고, Z [1], Z의 [를 반환 어떤 함수 f (x, y)가 존재 2]. 우리가 주어진 2 개의 행렬은 x, y 및 z [1], z [2]에 대해 알려진 값 쌍을 나타냅니다. 그런 경우에 도움이되는 보간 공식은 무엇입니까?

+0

당신이 기능에 대한 다항식 보간과 같은 뭔가를 찾고있다 2 변수? – amit

+0

예. 하지만 그 함수는 2 개의 변수를 반환해야 할 것입니다 ... – Rella

+0

당신은 복소수로 그것을 시도 할 수 있습니다. – starblue

답변

4

반환 값 하나에 대해 문제를 해결하면 보간에 f_1(x,y)f_2(x,y)의 두 함수를 찾고 f(x, y) = [f_1(x,y), f_2(x,y)]으로 함수를 구성 할 수 있습니다. 문제에 적합한 보간 기능을 해결하기위한 방법을 선택하십시오.

2 차원의 실제 보간 문제의 경우이를 처리 할 수있는 많은 방법이 있습니다. 필요한 것이 단순하다면 선형 보간법을 사용할 수 있습니다. piecewise 함수로 괜찮 으면 베 지어 커브 또는 스플라인을 사용할 수 있습니다. 또는 데이터가 일정한 경우 간단한 다항식 보간법을 사용할 수 있습니다 (물론 2D에서는 쉽지는 않지만 간단 함).


편집 : 추가 정보 및 일부 링크.

Bilinear interpolation (wikipedia)을 사용하여 조각 별 솔루션이 가능합니다.

다항식 보간의 경우 데이터가 모눈에있는 경우 다음 알고리즘을 사용할 수 있습니다 (메모리에있는 참조를 찾을 수 없습니다). 데이터 포인트가 kl에 의해 그리드에있는 경우 다음과 같이

, 당신의 다항식을 재 작성 : 여기

f(x,y) = cx_1(x)*y^(k-1) + cx_2(x)*y^(k-2) + ... + cx_k(x) 

각 계수 cx_i(x)도 정도 l의 다항식이다. 첫 번째 단계는 그리드의 각 행이나 열을 보간하여 의 다항식을 찾을 수 있습니다. 이 작업이 완료되면 각 cx_i(x) 다항식의 보간 점으로 계수 세트 (즉, l 다항식)가 cx_i(x0), cx_i(x1), ... cx_i(xl) (총 1 * k 포인트를 제공)으로 나타납니다. 이제, 위의 상수를 보간 점으로 사용하여 이러한 다항식을 결정할 수 있습니다. 결과는 f(x,y)입니다.

동일한 방법이 베 지어 곡선 또는 스플라인에 사용됩니다. 유일한 차이점은 다항식 계수 대신 제어점을 사용한다는 것입니다. 먼저 데이터 점을 생성 할 스플라인 세트를 얻은 다음 이러한 중간 커브의 제어점을 보간하여 서페이스 커브의 제어점을 얻습니다.


위의 알고리즘을 명확히하기 위해 예제를 추가하겠습니다.

0,0 => 1 
0,1 => 2 
1,0 => 3 
1,1 => 4 

우리는 피팅 두 다항식에 의해 시작 : (1, 0), (1, 1에 대한 데이터 포인트에 대해 하나의 (0,0)와 (0,1), 그리고 다른 사람의 다음과 같은 데이터 포인트를 보자) :

f_0(x) = x + 1 
f_1(x) = x + 3 

지금, 우리는 우리가 수직으로 이러한 다항식 계수를 읽어 coefficients.When을 결정하기 위해 다른 방향으로 보간, 우리는 두 다항식이 필요합니다. 하나는 0과 1 모두에서 1로 평가됩니다. 1에서 0에서 1로 평가하는 또 다른, 3 : 우리가 f(x,y)로이 결합하면

cy_1(y) = 1 
cy_2(y) = 2*y + 1 

, 우리가 얻을 :

f(x,y) = cy_1(y)*x + cy_2(y) 
     = 1*x + (2*y + 1)*1 
     = x + 2*y + 1 
+0

2 차원 정보에 대해 언급 한 방법이 어떻게 작용하는지 설명 할 수 있습니까? – amit