2

私は軌道をgetcurve()表す(少し修正した) 2 つのスプラインを生成しました。を介して、2 つのスプラインを組み合わせて 3D プロットを生成したいと思います。プロットに描いた線のandを出力するように修正しました。XYXZplot3()getcurve()XDataYData

XYスプラインはグラフィカルに生成されるため、要素の数は と の間で必ずしも同じではありませんXZ。仮定しlength(XY)>length(XZ)ます。XZ_2と同じ長さXYで同じ x 値を持つ新しいベクトルを作成しようとしていますXY

私の最初のアイデアは、次のように補間することでした。

XZ_2(:,2) = interp1(XZ(:,1), XZ(:,2), XY(:,1))

しかし、私はエラーが発生します:

Error using griddedInterpolant
The grid vectors are not strictly monotonic increasing.
Error in interp1 (line 191)
    F = griddedInterpolant(X,V,method); 

スプラインXZは次のようになります。

XZ スプライン

このスプラインを補間できない理由がわかりません。特別なものではないようです。次のようにして、このスプラインを自分で再構築できます (Curve Fitting Toolbox が必要です)。

>> xz = [0.0288    0.0518    0.1071    0.1763    0.2707    0.3583    0.4988    0.5864    0.7339    0.8191    0.9182    0.9781
         1.8070    1.3626    0.9766    0.4152   -0.0643   -0.3684   -0.9181   -1.1637   -1.4795   -1.6667   -1.8070   -1.9474];
>> fnplt(cscvn(xz));

XZと同じ x 値を使用するために「サイズ変更」する方法はありますXYか? これを行うと一部の情報XZが失われることは承知していますが、それは問題ありません。

4

1 に答える 1