主要内容

このペジの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

チタンテストデタへのスプラ

この例では,曲线拟合工具箱™のコマンドを使用して,節点の手動選択および自動選択によりチタンテストデータにスプラインを近似する方法を示します。

スプラ邮箱ン内挿のための節点の手動選択

温度の関数として測定された,チタンの特定のプロパティを記録したデタを次に示します。これを使用して,スプラ。

[xx, yy] =钛;

デタのプロットには,かなりシャクが示されています。

情节(xx, yy,“软”);帧= [-10 10 -.]1。3]+ [min (xx), max (xx)、min (yy)、马克斯(yy)];轴(框架);

内挿が必要なため,これらのやや粗いデ。選択したデタ点をマクしたデタを次の図に示します。

Pick = [1 5 11 21 27 29 31 33 35 40 45 49];τ= xx(选择);y = yy(选择);持有情节(τ,y,“罗”);持有

n + k個の節点をもつ次数kのスプラインの自由度はnであり,データ点の数は12であるため,次数が4のスプラインによる近似には12 + 4 = 16個の節点が必要です。また,この節点シーケンスtは我番目のデータサイトが我番目のBスプラインのサポートになるように存在しなければなりません。データサイトを節点として使用することでこれを実現しますが,両端に2つの単純な節点を追加します。

Dl = (2) - (1);Dr = tau(end) - tau(end-1);T = [tau(1)-dl*[2 1] tau tau(end)+dr*[1 2]];%构造结序列情节(τ,y,“罗”);持有轴(框架+ (2 * dl博士2 * 0 0))情节(t, repmat(框架(3)+ 03,大小(t)),“kx”)举行传奇({的数据值“节”},“位置”“西北”

この節点シケンスを使用して,内挿3次スプラ。

sp = spapi (t,τ,y);

ここでプロットを行います。デタ区間外のスプラン部分は気にしなくて良いため,プロットをその区間に制限します。

情节(τ,y,“罗”轴(帧)fnplt (sp(τ(1)τ(结束)),“k”)举行

スプラン近似の左側をよく見ると,多少波打っているのがわかります。

xxx = linspace(τ(1)τ(5),41);情节(xxx, fnval (sp, xxx),“k”,τ,y,“罗”);轴([tau(1) tau(5) 0.6 1.2]);

最初の区間にある不合理なこぶは,スプラインが最初の節点で滑らかに0に向かっていることが原因です。これを確認するため,スプラ。

fnplt (sp,“k”);持有情节(τ,y,“罗”t repmat(。1、大小(t)),“kx”);持有传奇({“样条Interpolant”的数据值“节”},“位置”“西北”

次に,より妥当な境界挙動を適用する簡単な方法を示します。指定されたデータ区間の外にデータ点を2つ追加し,最初の2つのデータ点を通る直線の値をそこでのデータとして選択します。

Tt = [tau(1)-[4 3 2 1]*dl tau tau(end)+[1 2 3 4]*dr];Xx = [tau(1)-[2 1]*dl tau tau(end)+[1 2]*dr];yy = [y (1) - (2 - 1) * (y (2) - y (1)) y y(结束)+ (1 2)* (y(结束)- y (end-1)));sp2 = spapi (tt, xx和yy);情节(τ,y,“罗”, xx([1 2 end-1 end]),yy([1 2 end-1 end]),“波”);轴(帧+[-2*dl 2*dr 0 0]);持有fnplt (sp2,“b”结束,τ([1])传奇({“原始数据”“为结束条件添加的数据”...“符合附加数据”},“位置”“西北”

次に2つのスプライン近似の比較により,最初と最後の区間のうねりが小さくなっていることを示します。

持有fnplt (sp,“k”结束,τ([1])传奇({“原始数据”“为结束条件添加的数据”...“符合附加数据”“原来适合”},“位置”“西北”

最後に,最初の4つのデータ区間を詳しく確認すると,左端付近のうねりが小さくなっていることがよりはっきりとわかります。

情节(τ,y,“罗”, xxx, fnval (sp2, xxx),“b”xxx, xxx, fnval (sp),“k”);轴([tau(1) tau(5) .6 1.2]);传奇({“原始数据”“符合附加数据”...“原来适合”},“位置”“西北”

内挿のための節点の自動選択

このような細かい部分を確認する必要がない場合は,曲线拟合工具箱で節点を選択することができます。節点シケンスではなく,スプラン内挿コマンドspapiの最初の入力引数として,内挿を行う任意の次数を指定します。

Autosp = spapi(4, tau, y);节= fnbrk (autosp,“节”);情节(τ,y,“罗”)举行fnplt (autosp‘g’)情节(节,repmat(5、大小(结)),“gx”)举行传奇({的数据值“配合SPAPI选择的结”...“SPAPI选择的结”},“位置”“西北”

842次にで節点を少し右に移動し,985で少し左に移動して得られた,より適切な節点の選択結果を示します。

结([7 12])= [851,971];Adjsp = spapi(knots, tau, y);持有fnplt (adjsp“r”2)图(结repmat(54、大小(结)),“处方”)举行传奇({的数据值“配合SPAPI选择的结”...“SPAPI选择的结”“调整了结的合体”...“调整节”},“位置”“西北”

あるいは単純に,csapiで提供される標準の3次スプラe @ e @ン内挿を試します。この場合は,やや異なる節点が選択されることになります。

Autocs = csapi(tau, y);情节(τ,y,“罗”)举行fnplt (autocs“c”)举行

このように急な変化をするデータの場合,どの内挿も3次スプラインであったとしても,妥当な内挿をすべて一致させるのは困難です。次のプロットに,比較のために5の内挿をすべて示します。

情节(τ,y,“罗”)举行fnplt (sp,“k”结束,τ([1]))%黑色:原fnplt (sp2,“b”结束,τ([1]))%蓝色:具有特殊的结束条件fnplt (autosp‘g’%绿色:SPAPI自动选择结fnplt (autocs“c”%青色:CSAPI自动选择结fnplt (adjsp“r”, 2)红色:SPAPI选择的结略有改变持有传奇({的数据值“原来适合”“特殊结束条件”...“用SPAPI选择的结”“用CSAPI选择的结”...“与调整节”},“位置”“西北”