1

LinearNDInterpolator에서 원하는 2D 선형 보간 기능을 얻지 못했습니다. 다음 코드는 4 개의 매듭 점 (0,0), (1,0), (0,1), (1,1) 사이의 보간을 시도합니다. interp2d는 내게 예상 된 (선형 보간 된) 결과를 주지만 LinearNDInterpolator는 다른 일을하고 있습니다. 알아낼 수 없습니다. 아마 API를 올바르게 사용하지 않을 것입니다. 불행히도, 사용법에 대한 자세한 문서를 찾을 수 없습니다. 누군가가 도와 주시거나 저를 올바른 포럼 (mathoverflow?)으로 보내 주실 수 있습니까? http://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.LinearNDInterpolator.html 가입일scipy.interpolate.LinearNDInterpolator가 원하는 기능을 생성하지 않습니다.

>>> f = interp2d([0,1,0,1], [0,0,1,1], [0,1,2,4]) 
>>> f(0.5,0.5) 
array([ 1.75]) 
>>> g = LinearNDInterpolator([[0,0],[1,0],[0,1],[1,1]], [0,1,2,4]) 
>>> g(0.5,0.5) 
array(2.0) 

답변

6

는 :

는 보간 된 Qhull [R15]로 입력 데이터를 삼각 측량에 의해 구성하고, 무게 중심의 선형 보간을 수행하는 각각의 삼각형이다.

귀하의 경우 선택한 삼각형이 (0,0), (1,1) 가장자리를 공유하는 것으로 보입니다. (0.5, 0.5)(0,0)(1,1) 사이의 중간이므로 보간 값은 해당 꼭지점의 값 사이에 있으므로 (0+4)/2 = 2.0입니다.

+0

대단히 감사합니다! – Ashwin

1

네 입력 포인트가 동심원이므로 기본 Delaunay 삼각 측량은 모호합니다. (0,0)에서 (1,1)까지의 "가장자리"또는 (1,0)에서 (0,1)까지의 "다른 대각선"을 따라 하나가 될 수 있습니다.

첫 번째 경우 (0.5,0.5)의 보간은 2.0이되고, 후자의 경우 1.5가됩니다. 당신은 당신이 얻는 것을 통제 할 수 없습니다.

1) 보간에게 들로네 삼각 분할에 의해 반환 된 하나처럼 보이는 개체를 제공하여 명시 적으로 삼각 측량을 제공 : 당신이 제어하려면

, 당신은 두 가지 옵션이 있습니다.

2) 센터를 향한 모서리 중 하나를 "뾰족하게 가리십시오". 예를 들어, (1,1) 대신 (0.99999,0.99999)를 사용하십시오. Delauney 삼각 측량을 결정 론적 결과로 "강제"합니다. (이 경우 다른 대각선보다 (0,0) ~ (0.99999,0.99999) 세그먼트의 사용이 강제됩니다.

그리고 FWIW, 나는 이 두 가지 가능한 값 (1.5와 2.0)은 쌍 일차 보간법을 사용할 때 관찰 한 값입니다. 나는 그것이 수학적으로 예상된다고 생각한다.