3

共通の x 値のセットと 3 つの y 値のセットを使用して、平滑化されたスプラインを生成したいと思います。

xs = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

ys1 = [0.2, 0.3, 0.1, 0.8, 0.7, 0.2, 0.1, 0.8, 0.9, 1.1]
ys2 = [0.1, 0.2, 0.4, 0.5, 0.8, 0.3, 0.2, 0.9, 1.2, 1.2]
ys3 = [0.1, 0.1, 0.4, 0.1, 0.9, 0.3, 0.1, 0.8, 0.9, 0.9]

スプラインのドキュメントを見ると、正しい関数を使用しているかどうかわかりませんが、を使用してスプラインを作成しようとしていますRectBivariateSpline。私がやろうとしているのはこのようなものですが、いくつかのエラーが発生しているため、間違った関数を使用していると思われますか?

import scipy as scip
from scipy.interpolate import RectBivariateSpline

x_arr = scip.array(x_arr)
y_arr = scip.vstack((ys1, ys2, ys3))
spline = RectBivariate(x_arr, x_arr, y_arr)
4

1 に答える 1

2

は、Z 座標が 2D 配列として与えられる3D スプラインRectBivariateSplineで使用され、各要素は位置およびに対応します。[i,j]x[i]y[j]

あなたの場合、次を使用して計算できる3 X 2D-splinesがあるように見えます。

import scipy
from scipy.interpolate import spline
xnew = scipy.linspace(0, 10, 1000)
ys1 = spline(xs, ys1, xnew, order=3)
ys2 = spline(xs, ys2, xnew, order=3)
ys3 = spline(xs, ys3, xnew, order=3)

平均スプラインを取りたい場合(コメントで明確になっているように):

ys = np.vstack((ys1,ys2,ys3)).mean(axis=0)
于 2013-08-11T13:06:45.720 に答える