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

 

Florian85
Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 29.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.08.2010, 15:36     Titel: Spline Interpolation
  Antworten mit Zitat      
Hallo,

Nach langer Suche im Forum mache ich jetzt doch eine neues Thema. Ähnliche Problemstellungen sind zwar schon behandelt worden, aber es hat nie wirklich für mein problem gepasst.

Ich habe eine Matrix[6x52] mit 6Spalten und 52 Zeilen. Ich möchte diese MAtrix zeilenweise interpolieren, was ich wie folgt mache:
Code:
for i=1:E;
zn(i,:)=interp1(r_p,z(i,:),r_pn,'spline');
end


E = die Anzahl der Zeilen(in diesem Fall 52)
r_p = Vektor mit 6 Spalten
z = Datenmatrix [6x52]
r_pn = Vektor mit 50 Spalten


Meine Frage bezieht sich auf den Ausdruck 'spline'. Kann man diesen Spline, der für die Interpolation verwendet wird irgendwie verändern? Weil die Fläche, die diese Interpolation ergibt hat ziemlich hohe Spitzen bzw. Täler. Sollte etwas flacher verlaufen.

Ich habe auch 'cubic' probiert. Kann 'cubic' auch irgendwie modifiziert werden?`

Ich hoffe meine Fragestellung war halbwegs verständlich Smile

mfg Flo
Private Nachricht senden Benutzer-Profile anzeigen


Florian85
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 29.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.08.2010, 15:45     Titel:
  Antworten mit Zitat      
Im angehängten Bild sieht man meine Darstellung. Was mich stört sind die zwei Hügel und das Tal dazwischen.

Meine Messdaten sind in den 4 Subplots unten zu sehen. Diese Kurven muss man sich auf die eingezeichneten 4 Radien der rechten oberen Darstellung verteilt vorstellen. Sensor 1 ist der innere Radius, Sensor 4 der äußere.


mfg Flo

untitled.jpg
 Beschreibung:

Download
 Dateiname:  untitled.jpg
 Dateigröße:  97.52 KB
 Heruntergeladen:  1516 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 10.08.2010, 18:10     Titel: Re: Spline Interpolation
  Antworten mit Zitat      
Hallo Florian,

ich hatte irgendwo in diesem Forum schon mal auf eine Spline-Frage von Dir geantwortet.

Mit INTERP1 kannst Du übrigens auch Matrizen bearbeiten. Es gibt keinen Grund die Vecktoren einzeln zu liefern:
Code:
zn = interp1(r_p, z, r_pn, 'spline');


Zitat:
Meine Frage bezieht sich auf den Ausdruck 'spline'. Kann man diesen Spline, der für die Interpolation verwendet wird irgendwie verändern? Weil die Fläche, die diese Interpolation ergibt hat ziemlich hohe Spitzen bzw. Täler. Sollte etwas flacher verlaufen.

Ich habe auch 'cubic' probiert. Kann 'cubic' auch irgendwie modifiziert werden?`

Eine Spline-Interpolation ist eindeutig definiert. Es gibt keine Möglichkeit an einem Parameter zu drehen. Das gleiche gilt für die Kubische Interpolation.
Ein Spline kann bei der Interpolation "überschwingen" und dabei heftige Wellen produzieren. Wenn man Messdaten normalisieren möchte, ist eine Spline (oder Kubische) Interpolation deshalb im Allg. nicht hilfreich. Die lineare Interpolation ist dann immer noch das ehrlichste.

Kannst Du nochmal beschreiben, was Du mit der Interpolation erreichen möchtest und wie sich die Resultate von Deinen erwartungen unterscheiden?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Florian85
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 29.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.08.2010, 08:20     Titel:
  Antworten mit Zitat      
Ich soll einen Druckverlauf eines Ölfilmes über eine Segmentfläche darstellen. Als Messwerte bekomm ich die Daten der 4 Sensoren. Die Darstellung soll möglichst physikalisch plausibel sein. Beim Druckverlauf kann es keine scharfe Drucksprünge geben. Ebenso ist es eher unlogisch, dass zwischen den beiden Spitzen eine Vertiefung ist. Bei der linearen Interpolation entstehen scharfe Kanten, die ich nicht brauchen kann Sad
hmmm....

Wäre vielleicht eine ganz andere Art der Interpolation sinnvoller?
Bei
Code:
wird ja, was ich aus der Forumsuche erfahren habe, ein rechteckiges Gitter benötigt, was ich ja nicht habe. Deswegen hab ichs damit noch gar nicht versucht.

mfg Flo
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 11.08.2010, 12:29     Titel:
  Antworten mit Zitat      
Hallo Florian,

darin finden sich nun einiger wertvolle Informationen.
Du möchtest eigentlich nicht per Spline interpolieren. sondern einen Spline finden, der durch Deine Messwerte geht. Nun ist auch ein Spline nicht beliebig differenzierbar, sondern aus einzelnen Stücken stetig und einfach differenzierbar zusammengesetzt.
Ein Polynom dagegen könnte so durch Deine 4 Punkte gelegt werden, dass die entstehende Kurve auch physikalisch sinnvoll ist. Siehe POLYFIT und PLOYVAL.

Wenn Du allerdings schon physikalisch argumentierst, welche Funktion würdest Du denn als Druckverlauf erwarten? Dann könntest Du nämlich gleich die Parameter dieser Funktion per Optimiertung an Deine Messdaten anpassen lassen.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Florian85
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 29.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.08.2010, 13:02     Titel:
  Antworten mit Zitat      
Ich würde mir erwarten, dass der Flächenverlauf zwischen den 4 Radien ziemleich eben verläuft. So wie es außen aussieht passts eh, find ich.

ich schau mir mal das mit polyfit und polyval an. danke für den tip

mfg flo
Private Nachricht senden Benutzer-Profile anzeigen
 
Florian85
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 29.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.08.2010, 08:16     Titel:
  Antworten mit Zitat      
Also ich hab mal folgendes ausprobiert: im Anhang sind die ergebnisse...

ich hab die 6 messpunkte aus einer zeile meiner matrix herausgenommen und für diese zeile ein polynom erstellt. hab mehrere ordnungen ausprobiert, aber wieso werden hier nur geraden erstellt?

Code:
x

x =

   360
   390
   448
   506
   564
   585

>> y

y =

         0
   39.6000
   40.6000
   38.4000
   41.4000
         0

>> p = polyfit(x,y,6);
Warning: Polynomial is not unique; degree >= number of data points.
> In polyfit at 72
>> f = polyval(p,x);
>> figure
plot(x,y,'o');hold on;title('Polynom 1ter Ordnung')
plot(x,f)


Die Warnung, die hier kommt kommt bei allen Ordnungen, die höher als n=2 ist.

Ich dachte mir, dass hier gekrümmte kurven rauskommen, aber leider sind es nur gerade stücke.

mfg flo

polynome.jpg
 Beschreibung:

Download
 Dateiname:  polynome.jpg
 Dateigröße:  209.97 KB
 Heruntergeladen:  1284 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Florian85
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 29.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.08.2010, 10:43     Titel:
  Antworten mit Zitat      
ich bin immer noch nicht dahinter gekommen, warum der Plot der Kurven gerade Teilstücke sind und nicht gekrümmte Linien.

Bitte um Hilfe Smile

mfg Flo
Private Nachricht senden Benutzer-Profile anzeigen
 
Thomas84
Forum-Meister

Forum-Meister


Beiträge: 546
Anmeldedatum: 10.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.08.2010, 11:01     Titel:
  Antworten mit Zitat      
Du berechnest das Polynom ja nur an den Stützstellen. Wie es dazwischen aussieht weiss Matlab nicht und interpoliert daher einfach linear. Um das Polynom richtig zu erkennen musst du es an vielen Stellen berechnen lassen.

Code:

%Daten
x =[   360   390   448   506   564   585]
y =[         0   39.6000   40.6000   38.4000   41.4000         0]

%Fit
p = polyfit(x,y,4);

% Polynom berchnen
xvec = 360:585;
f = polyval(p,xvec);

figure;
plot(x,y,'o');hold on;title('Polynom 4ter Ordnung')
plot(xvec,f)

 
Private Nachricht senden Benutzer-Profile anzeigen
 
Florian85
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 29.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.08.2010, 14:29     Titel:
  Antworten mit Zitat      
danke thomas!

Hat funktioniert, aber ich hab bemerkt, dass polyfit und polyval nicht das richtige für meine zwecke ist.

hmmmm.....

ich bin ganz schön am verzweifeln....

gibt es eine möglichkeit, selber einen spline zu erstellen? nicht mit interp1 und auch nicht mit
Code:
.

Diese funktionen bauen mir in meine messpunkte einen fix definierten spline. ich kann zwar die anzahl der punkte verändern, aber der spline bzw. die kurve(bei interp1 mit'cubic' ) bleibt trotzdem immer dieselbe.

Ich frag mich schon langsam ob es im MATLAB überhaupt möglich ist diese Fläche so darzustellen wie es mein chef haben will Smile

bin weiterhin überaus dankbar für jede hilfe und jeden tipp.

mfg Flo
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.