scipy.interpolate.UnivariateSpline
大量のデータをスムーズに補間するために使用しています。よく働く。関数のように機能するオブジェクトを取得します。
ここで、スプライン ポイントを後で保存して、元のデータを必要とせずに、Matlab (および Python でも緊急ではありません) で使用したいと考えています。これどうやってするの?
scipy では手がかりがありません。UnivariateSpline は、以前に計算されたノットと係数を持つコンストラクターを提供していないようです。
spline()
MATLAB では、Matlab の関数とを試しましたが、どちらも近いですが、ギブスの耳pchip()
のように見えるエンドポイントの近くにエラーがあります。
以下は、私が持っている Matlab 形式のデータのサンプル セットです。
splinedata = struct('coeffs',[-0.0412739180955273 -0.0236463479425733 0.42393753107602 -1.27274336116436 0.255711720888164 1.93923263846732 -2.30438927604816 1.02078680231079 0.997156858475075 -2.35321792387215 0.667027554745454 0.777918416623834],...
'knots',[0 0.125 0.1875 0.25 0.375 0.5 0.625 0.75 0.875 0.9999],...
'y',[-0.0412739180955273 -0.191354308450615 -0.869601364377744 -0.141538578624065 0.895258135865578 -1.04292294390242 0.462652465278345 0.442550440125204 -1.03967756446455 0.777918416623834])
係数とノットは、scipy UnivariateSpline を呼び出した結果get_coeffs()
ですget_knots()
。「y」の値は、ノットでの UnivariateSpline の値、またはより正確には次の値です。
y = f(f.get_knots())
ここで、f は私の UnivariateSpline です。
Curve-Fitting Toolbox を使用せずに、このデータを使用して UnivariateSpline の動作に一致するスプラインを作成するにはどうすればよいですか? Matlab でデータ フィッティングを行う必要はありません。ノット/係数/スプライン値から 3 次スプラインを作成する方法を知る必要があるだけです。