0
言い換えれば、値bに関連付けられた一連のデータポイント(x、y、z)が得られ、このデータをできるだけ正確に補間したいと思います。 Scipy.interpolate.griddataは線形補間しかできませんが、他のオプションは何ですか?Pythonの分散データの3つの変数に対するスプライン補間?
言い換えれば、値bに関連付けられた一連のデータポイント(x、y、z)が得られ、このデータをできるだけ正確に補間したいと思います。 Scipy.interpolate.griddataは線形補間しかできませんが、他のオプションは何ですか?Pythonの分散データの3つの変数に対するスプライン補間?
x、y、zを別々に補間するのはどうですか?私はthisチュートリアルの例を変更し、それに補間を追加しました:
import matplotlib as mpl
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import InterpolatedUnivariateSpline
mpl.rcParams['legend.fontsize'] = 10
# let's take only 20 points for original data:
n = 20
fig = plt.figure()
ax = fig.gca(projection='3d')
theta = np.linspace(-4 * np.pi, 4 * np.pi, n)
z = np.linspace(-2, 2, n)
r = z**2 + 1
x = r * np.sin(theta)
y = r * np.cos(theta)
ax.plot(x, y, z, label='rough curve')
# this variable represents distance along the curve:
t = np.arange(n)
# now let's refine it to 100 points:
t2 = np.linspace(t.min(), t.max(), 100)
# interpolate vector components separately:
x2 = InterpolatedUnivariateSpline(t, x)(t2)
y2 = InterpolatedUnivariateSpline(t, y)(t2)
z2 = InterpolatedUnivariateSpline(t, z)(t2)
ax.plot(x2, y2, z2, label='interpolated curve')
ax.legend()
plt.show()
UPDATE
は申し訳ありませんが、初めてで質問を理解していませんでした。
おそらく、三角形補間が必要です。試してくださいthis。
返信いただきありがとうございます。パラメータ化を使用することは、私のケースではオプションではありません。なぜなら、パラメータ化が何であるかわからないからです... – Odile
ええ、あなたはラインを補間する必要があると思いました。更新された回答をご覧ください。 – koxy
三角補間は、等間隔の座標に対して行われ、鉱山は散在します。とにかく、いろいろなメソッドを使いました。私の唯一の選択肢は、線形補間を行い、scipy.interpolate.griddata()を使うことだけです。 – Odile