WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

SPline Interpolation Methode

 

cey
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 69
Anmeldedatum: 16.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.05.2011, 11:52     Titel: SPline Interpolation Methode
  Antworten mit Zitat      
Hallo zusammen,

ich hoffe ihr könnt mir helfen.

ich brauche eine polynominterpolation 2.grades durch bestimmte hochpunkte. ich habe es so versucht:

Code:

p = polyfit(x(Maxima),y(Maxima),2);
f = polyval(p,x);


Das Ergebnis sieht so aus:



Was ich gerne hätte, ist das die Hochpunkte meine STützstellen sind und zwischen den Stützstellen mit einem Polynom 2.Grades extrapoliert wird.

Es gibt ja die Funktion

Code:
interp1(x,Y,xi,method,'extrap')

aber leider gibt es keine Methode: Polynom 2.Grad


Hat einer von euch ne Idee?

Gruß
cey
Private Nachricht senden Benutzer-Profile anzeigen


Thomas84
Forum-Meister

Forum-Meister


Beiträge: 546
Anmeldedatum: 10.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.05.2011, 14:33     Titel:
  Antworten mit Zitat      
Falls du die splie-Tolbox hast: spapi
Private Nachricht senden Benutzer-Profile anzeigen
 
cey
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 69
Anmeldedatum: 16.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.05.2011, 16:30     Titel:
  Antworten mit Zitat      
ich habe diese toolbox, doch leider weiß ich trotzdem nicht was ich machen soll.

setzte ich dann einfach für die methode spapi ein???

hast du nicht vielleicht ein beispiel???
Private Nachricht senden Benutzer-Profile anzeigen
 
cey
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 69
Anmeldedatum: 16.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.05.2011, 18:46     Titel: Polynom 2. Grades
  Antworten mit Zitat      
Ich habe mir die Erklärung dazu Gerde ein bisschen in matlab durchgelesen und ich verstehe irgendwie nicht, an welcher Stelle genau ich angeben muss, dass die interpation mit einem polynom 2.Grades durchgeführt werden soll
Private Nachricht senden Benutzer-Profile anzeigen
 
cey
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 69
Anmeldedatum: 16.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.05.2011, 21:44     Titel: spapi
  Antworten mit Zitat      
Hallo Thomas,

ich habe jetzt die Matlab Erklärung zu spapi gelsen und habe noch eine letzte Frage.

Mit sp = spapi(3,x,y); fnplt(sp3,2,'k--') erhalte ich ein spline funktion mit einem polynom 2.grades. Die Punkte x,y sind ja meine Stützstellen. Aber zwischen diesen Stützstellen befinden sich noch weitere Punkte, auf die sich die Interpolation nur in dem Sinne bezieht, dass ich die Funktionswerte der Splinefunktion an diesen Stellen brauche.

Wie mache ich das denn?

Gruß
cey
Private Nachricht senden Benutzer-Profile anzeigen
 
cey
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 69
Anmeldedatum: 16.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.05.2011, 07:57     Titel: Interp1 und spapi
  Antworten mit Zitat      
Hallo zusammen,

Ich habe noch eine Frage. Wenn ich jetzt interp1 verwende und als Methode spapi nehme, also interp1(x,y,'spapi') zur Interpolation nehme, welchen grad hat dann die Spline Funktion?

Ich habe einmal
interp1(x,y,'spapi') probiert und einmal
interp1(x,y,'spapi(3,x,y)') und habe die gleiche Funktion erhalten. Das verstehe ich nicht.

Vielleicht kann mir das jemand erklären?

Gruss
Cey
Private Nachricht senden Benutzer-Profile anzeigen
 
Thomas84
Forum-Meister

Forum-Meister


Beiträge: 546
Anmeldedatum: 10.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.05.2011, 11:19     Titel:
  Antworten mit Zitat      
zur vorletzten Frage:

Code:

x = 1:10;
y = randn(size(x));
xvec = linspace(0,10,1000);

sp = spapi(3,x,y); % spline erzeugen
pp = fn2fm(sp,'pp'); % in pp Form bringen
ys = ppval(pp,xvec); % Zwischenwerte berechnen
plot(x,y,'+',xvec,ys);
 



zur letzten Frage:
für interp1 kannst du nur bestimmte Methoden verwenden (siehe Doku) spapi gehört nicht dazu. interp1 nimmt einfach die spline methode wenn es mit dem Input nichts anfangen kann. Hier sollte es eigentlich zumindest eine warnung geben
Private Nachricht senden Benutzer-Profile anzeigen
 
cey
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 69
Anmeldedatum: 16.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.05.2011, 14:58     Titel: interp1 und spapi (Unterschied)
  Antworten mit Zitat      
Hallo Thomas,

danke erstmal für deine hILFE. genau sowas habe ich gesucht.

Jetzt habe ich aber doch noch eine Frage. Ich habe jetzt mal geschaut, was genau der unterschied zwischen interp1(x,y,yi,'spline') und spapi(4,x,y) ist.

Und dazu habe ich folgende Frage: Arbeiten beide mit verschiedenen Randbedingungen???

Und die Kurvenverläufe sind auch anders. Wie bekomme ich es denn hin, dass ich mit spapi(4,x,y) am Rand den gleichen Verlauf habe wie bei interp1?




Vielleicht kannst du mir dazu auch noch was sagen???

Gruß
cey
Private Nachricht senden Benutzer-Profile anzeigen
 
Thomas84
Forum-Meister

Forum-Meister


Beiträge: 546
Anmeldedatum: 10.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.05.2011, 06:49     Titel:
  Antworten mit Zitat      
spline sollte das gleiche liefern wie spapi(4,...). Aber cubic ist etwas anderes als spline. Welche Methode hast du denn gewählt? Ich nehme stark an cubic, da die rote Kurve viel weniger überschwingt als die grüne.
Private Nachricht senden Benutzer-Profile anzeigen
 
cey
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 69
Anmeldedatum: 16.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.05.2011, 07:14     Titel:
  Antworten mit Zitat      
Ich habe cubic genommen. Ich dachte cubic und Spline wären dasselbe. Aber Kriege ich es denn mit spapi auch so weniggeschwungen am Rand hin?

Ich habe auch noch ne weitere Frage. Gibt es irgendeine Möglichkeit so zu interpolieren, dass die interpolationskurve sich nie mit der Funktion schneidet? Wenn man mal mein Bild von oben nimmt. Ich habe nämlich fas Problem, dass dies manchmal passiert. Vielleicht hast du eine Idee wie und ob man sowas vermeiden kann. Mir fällt nämlich nix mehr ein.

Gruß
Cey
Private Nachricht senden Benutzer-Profile anzeigen
 
cey
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 69
Anmeldedatum: 16.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.05.2011, 21:04     Titel: ist das überhaupt ein quadratischer spline???
  Antworten mit Zitat      
Thomas84 hat Folgendes geschrieben:
zur vorletzten Frage:

Code:

x = 1:10;
y = randn(size(x));
xvec = linspace(0,10,1000);

sp = spapi(3,x,y); % spline erzeugen
pp = fn2fm(sp,'pp'); % in pp Form bringen
ys = ppval(pp,xvec); % Zwischenwerte berechnen
plot(x,y,'+',xvec,ys);
 



zur letzten Frage:
für interp1 kannst du nur bestimmte Methoden verwenden (siehe Doku) spapi gehört nicht dazu. interp1 nimmt einfach die spline methode wenn es mit dem Input nichts anfangen kann. Hier sollte es eigentlich zumindest eine warnung geben


Hallo Thomas,

Ich habe das jetzt mal dein Beispiel geplottet:




Müsste sich nicht die Funktion zwischen den Stützpunkten einen parabelförmigen Verlauf haben?? Das hat sie ja an der eingekreisten Stelle nicht. Ich hätte das jetzt gedacht, wenn ich ein Polynom 2.ten Grades nehme.

Woran liegt das?

Kann mir das jemand erklären???

Gruß
cey
Private Nachricht senden Benutzer-Profile anzeigen
 
cey
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 69
Anmeldedatum: 16.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.05.2011, 21:53     Titel: Zusatz
  Antworten mit Zitat      
Ich habe gerade herausgefunden dass matlab mit obigem Befehl zwischen den stützstellen noch weitere Punkte berechnet, durch die interpoliert wird. Also zwischen 2 stützstellen wird noch ein weiterer Punkt berechnet, der mit knot bezeichnet wird. Aber mein knots sind doch meine Knotenpunkte, also meine stützstellen. Ich kapiere das nicht. Oder vertue ich mich hier?
Private Nachricht senden Benutzer-Profile anzeigen
 
Thomas84
Forum-Meister

Forum-Meister


Beiträge: 546
Anmeldedatum: 10.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.05.2011, 06:50     Titel:
  Antworten mit Zitat      
Bei spapi werden tatsächlich andere Stützstellen berechnet. Zwischen diesen wird dann quadratisch interpoliert. Die Details des Polynoms kannst du dir mit unmkpp anschauen.
Private Nachricht senden Benutzer-Profile anzeigen
 
cey
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 69
Anmeldedatum: 16.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.05.2011, 07:28     Titel:
  Antworten mit Zitat      
Und wie bekomme ich es hin, dass mit den stützstellen interpoliert wird, die ich angebe? Oder ist spapi dafür nicht geeignet?
Private Nachricht senden Benutzer-Profile anzeigen
 
Thomas84
Forum-Meister

Forum-Meister


Beiträge: 546
Anmeldedatum: 10.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.05.2011, 09:19     Titel:
  Antworten mit Zitat      
Das geht wohl nicht, ausser du machst es per Hand selbst.

Beispiel: http://www-users.cselabs.umn.edu/cl...../csci2031/quad_spline.pdf
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.