問題タブ [cubic-spline]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
computer-vision - 3 次スプライン/カーブ フィッティング
この連続区分多項式 C(t) によって定義される照度変化のパラメーターを決定する必要があります。ここで、f(t) は 2 つの境界点 (t1,c) と (t2,0) によって定義される 3 次曲線です。 )、また f'(t1)=0 および f'(t2)=0 です。 元の紙: テクスチャ一貫性のあるシャドウ除去
強度曲線は影の境界の法線からサンプリングされ、次のようになります。
各行はサンプルで、照度の変化を表示します。したがって、X は列の番号で、Y はピクセルの強度です。
私はこのような私の実際のデータを持っています (すべてのサンプルから平均化された 1 つのサンプル):
N 個のサンプルがあり、パラメーター (c、t1、t2) を決定する必要があります。
どうすればいいですか?
私はMatlabで一次方程式を解いてそれをやろうとしました:
avr_curve は、すべてのサンプルを平均して得られる平均曲線です。
f(x)= x^3+a2*x^2+a1*x1+a0 は 3 次関数です。
[t1 t2] の avr_curve の一部
私が得た 3 次曲線 (avr_curve のようには見えません)
だから私は間違っているのですか?
更新: 私のエラーは、次のような 3 つの変数を使用して 3 次多項式をモデル化したことが原因のようです。
しかし、私は4つの変数を使用していますが、すべて問題ないようです:
Matlab のコードは次のとおりです。
間隔 [t1-1 t2+1] のスプライン
そして完全な間隔で
function - 補間後の近似関数
補間点の関数をどのように近似しますか? n = 500 ポイントの場合、次のように自然な 3 次スプラインを使用してポイントを補間します。
これらのn個のポイント(nが大きい場合)の関数を近似する方法はありますか? または、補間されたポイントを関数であるかのように扱う方法、つまり zn ベクトルの勾配を見つける方法はありますか? zn は定数のベクトルであるため、これは必ずしも役に立ちません。
更新:特に、私のデータは 2 次多項式を形成しているように見えるため、次の Matlab 関数を使用してデータを適合させました。
これにより、2次多項式の係数推定値が得られます。これはデータに適合しますが、エラー値が高く、正しい多項式を得るには、この係数ベクトルにベクトル [1 zz^2] を掛ける必要があります。これを合理化する方法はありますか?
javascript - JavaScript での B スプライン アニメーションのレンダリングに関する問題
B スプライン曲線の点を計算する関数を作成し、組み込み関数を使用して点が生成されると、画面上に曲線を描画しsetinterval()
ます。問題は、これらのポイントが画面に描画されるときに、補間された曲線に沿って移動して見える曲線の一部または小さなセグメントのみが表示され、曲線がプロットされるときに曲線全体が持続しないことです。これに加えて、カーブが特定のポイントに到達すると、カーブが画面からはみ出します。コードは、t の値が 1 に達すると関数が終了する (つまり、間隔がクリアされる) ように設計されているように見えますが、何らかの理由で関数が呼び出され続け、曲線がアニメーション化され続けます。オフスクリーン。
逆に、単純に for ループを使用して同じポイントで曲線を描く別の関数がありますが、この関数では小さな曲線が 1 回描画され、画面にはっきりと収まります。以下は、両方の関数のコードです。
matlab - matlabで自然なスプラインを生成する方法は?
関数スプラインに組み込まれているMatlabには、ノットではないスプラインとクランプされたスプラインしかないことに気付きました。自然なスプラインを実行 (または実行のみ) できるように、matlab の元のコードを少し変更できますか? 端点でゼロの二次微分を持つことが満足されるように、パラメータの余分な 2 つの自由度を変更するだけでよいので、簡単な作業だと感じました。しかし、スプラインのコードを見つめていると、どのように進めればよいかわかりません。誰でも私を助けることができますか?
r - na.spline() を使用して外挿を防ぐ方法
パッケージ内のna.spline()
機能に問題があります。ドキュメントにはこれが補間zoo
関数であると明示的に記載されていますが、私が得ている動作には外挿が含まれています。
次のコードは問題を再現します。
これの出力は次のようになります。
これは内部 NA の補間であり、後続の NA はそのまま残します。しかし、代わりに私は得る:
documentation によると、これは起こるべきではありません。外挿を回避する方法はありますか?
私の例では、線形補間を使用できることを認識していますが、これは MWE です。私は必ずしも na.spline() 関数に慣れているわけではありませんが、3 次スプラインを使用して補間する方法が必要です。