大量のデータを円滑に補間するためにscipy.interpolate.UnivariateSpline
を使用しています。よく働く。私は関数のように動作するオブジェクトを取得します。元のデータポイントを必要とせずに、後でpythonまたはMatlabでscipy.interpolate.UnivariateSplineの出力を使用
私はスプライン点を後で保存して元のデータを必要とせずに、Matlab(そしてPythonもそれほど緊急ではありません)で使用します。これどうやってするの?
私は手がかりがありません。 UnivariateSplineは以前に計算されたノットと係数を持つコンストラクタを提供していないようです。 MATLABで
、私はMATLABはspline()
とpchip()
を機能試してみた、との両方が近くに来ている間、彼らは一種のGibbs earsのように見えるエンドポイントの近くにエラーを持っています。ここで
は、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の値であり、または:fは私のUnivariateSplineある
y = f(f.get_knots())
。
カーブフィッティングツールボックスを使用せずに、このデータを使用してUnivariateSplineの動作に一致するスプラインを作成するにはどうすればよいですか? Matlabでデータフィッティングを行う必要はありません。ノット/係数/スプライン値から3次スプラインを作成する方法を知る必要があります。スプラインのノット、係数、および程度を含む...配列:
あなたは再使用したい場合には、このことができます場合、私は知らないが、 'UnivariateSpline'オブジェクトは、少なくともpickleableのようですあなたのPythonでのフィット感。 –
OPの質問に対する詳細な回答はhttp://stackoverflow.com/questions/22488637/getting-spline-equation-from-univariatespline-object/25330648#25330648に掲載されています。この答えは、スプラインノットと係数を手動で評価する手段を提供するので、OPは他のプログラムで使用されている入力と一致させることができます。 – nzh