0

Spline メソッドを使用して、Spline 関数と Interp1 関数から異なる結果が得られる理由を知っている人はいますか? 他の人がこの問題を抱えているかどうか調べてみましたが、私が見つけることができる唯一のことは、関数が異なる順序で入力を期待していることです (つまり、列と行)。私が実行しているコードは...

p1 = [20 40];    p2 = [200 500];    p3 = [400 300];    p4 = [600 500];
p = [p1; p2; p3; p4];

axis([0 1000 0 1000]); hold;
plot(p(:,1), p(:,2),'o')
x = linspace(0,1000,600);

%% 1
pp = spline(p(:,1),p(:,2));
yy = ppval(pp, x);
plot(yy,'r')

%% 2
y = interp1(p(:,1),p(:,2),x,'spline');
plot(x,y,'g')

結果のプロットを見ると、大きな違いがあり、その理由はわかりません。どんな助けでも大歓迎です!

4

1 に答える 1

0

最初の方法をプロットする際にタイプミスを犯しました。

それは次のようになります。

%% 1
pp = spline(p(:,1),p(:,2));
yy = ppval(pp, x);
plot(x,yy,'r') %notice the x!

%% 2
y = interp1(p(:,1),p(:,2),x,'spline');
plot(x,y,'g')

そのxパラメータがないと、プロットはプロットの x 軸で「x = 1:numel(yy)」を取り、以前のように圧縮されたプロットになります。

于 2011-08-17T19:19:08.127 に答える