我想在y = 12和x = 3.5處找到一個z值,並給出以下示例數據。我怎樣才能在C++中做到這一點?二維插值
y = 10
x = [1,2, 3,4, 5,6]
z = [2.3, 3.4, 5.6, 7.8, 9.6, 11.2]
y = 20
x = [1,2, 3,4, 5,6]
z = [4.3, 5.4, 7.6, 9.8, 11.6, 13.2]
y = 30
x = [1,2, 3,4, 5,6]
z = [6.3, 7.4, 8.6, 10.8, 13.6, 15.2]
我當前的Python代碼:
import scipy
import math
import numpy
from scipy import interpolate
x = [1, 2, 3, 4, 5, 6]
y = [10, 20, 30]
Y = numpy.array([[i]*len(x) for i in y])
X = numpy.array([x for i in y])
Z = numpy.array([[2.3, 3.4, 5.6, 7.8, 9.6, 11.2],
[4.3, 5.4, 7.6, 9.8, 11.6, 13.2],
[6.3, 7.4, 8.6, 10.8, 13.6, 15.2]])
tck = interpolate.bisplrep(X, Y, Z)
print interpolate.bisplev(3.5, 15, tck)
是功課嗎? – 2010-01-07 22:50:41
有許多算法可以使用。 http://en.wikipedia.org/wiki/Multivariate_interpolation#2_dimensions你有偏好嗎? – 2010-01-07 22:53:19
沒有..我有這個在python中實現我必須在C++中實現它 這是我從我的數據庫提供的示例 我的Y從0到300的步長爲10 我的X從1到20 和相應的20 Z軸上的數據值 您建議或者如何去做的其中一個 – VASUDEVAN 2010-01-07 22:58:06