2011-08-17 1 views
0

Est-ce que quelqu'un sait pourquoi j'obtiendrais des résultats différents de la fonction Spline par rapport à la fonction Interp1 utilisant la méthode Spline? J'ai essayé de regarder si d'autres ont ce problème mais la seule chose que je peux trouver est que les fonctions attendent les entrées dans des ordres différents (c'est-à-dire colonne vs ligne). Le code que je suis en cours d'exécution est ...En quoi la fonction Spline est-elle différente de la fonction Interp1 lors de l'utilisation de la méthode Spline?

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') 

Si vous regardez les parcelles résultant, il y a une grande différence et je ne suis pas sûr de savoir pourquoi c'est. Toute aide serait appréciée!

Répondre

0

Vous avez fait une faute de frappe en traçant la première méthode.

Cela devrait être:

%% 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') 

Sans ce paramètre x, l'intrigue prendra `x = 1: numel (aa) » sur l'axe x de votre parcelle, ce qui provoque l'intrigue serrée vous aviez avant.

+0

Oh mon dieu, c'est ça! Merci, regardait cela depuis trop longtemps. – abroad

+0

Pas de problème, cela nous arrive à tous après avoir regardé un morceau de code pendant trop longtemps. – Egon

Questions connexes