« Intrinsicな注意、extrinsicな注意 | 最新のページに戻る | OISTでのワークショップ »

■ テンパってます:MATLABのspline()

過去日記は続くよどこまでも:

なんでMATLABのyi=spline(x,y,xi)はxが単調増加もしくは単調減少でないと使えないんだよ! 使えてると思ったらたんにxを勝手にソートされてたよ! あぶねー。

xx=[1:5 4.5]
yy=[2:7]
xxi=1:0.2:5;
yyi=spline(xx,yy,xxi);
figure
hold on
plot(xx,yy,'bx-')
plot(xxi,yyi,'ro-')

Linearのinterpolation(interp1)でも同じ。Linearのinterpolationだったら、んな問題、本質的じゃないじゃんか。2点ありゃ計算できるんだから。あと、

xx=[1:5 5]
yy=[2:6 6]

とかにしておくと、"The data sites should be distinct."とか文句言いやがる。んなもん、隣り合ってる点が同じだったら取り除いて計算すりゃいいじゃんか。

……とソフトにあたる私。

追記:冷静になりました。つまり、発想が違うのでしょうな。順序の概念を前提としていない、と。あと、y=f(x)でinterpolationをするということからして、xによってyが一意に決まるようでないとおかしい、という筋もあるのかもしれない。(xとyとが対照でないのですな。)

でも、x=[1 0 -1 0]とy=[0 1 0 -1]から円を描く、というサンプルプログラムでわざわざ極座標に変換してから補完するくらいなら、順序の概念を使えばよい気もするのだけれど。


お勧めエントリ


月別過去ログ