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

Funktion aus Datenreihe und damit arbeiten

 

Zinderella
Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 24.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.07.2013, 13:54     Titel: Funktion aus Datenreihe und damit arbeiten
  Antworten mit Zitat      
Hallo,

ich brauche dringend aus einer Datenreihe eine Funktion mit der ich dann aber auch arbeiten kann, dh, zB Fläche der Kurve mit bestimmten Grenzen bis zu y=0 berechnen oder y Werte ausgeben etc.
Benutze ich da spline oder lsqcurvefit oder was anderes? Habe spline versucht aber ich weiss nicht wie ich dann damit weiterarbeite. Will ja nicht nur abbilden sondern brauche die Werte.

Danke
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 24.07.2013, 14:00     Titel:
  Antworten mit Zitat      
wennn du eine funktion haben willst musst du die art kennen und kannst dann zb die koeffizienten mittels lsqcurvefit oder anderen mitteln bestimmmen.
wenn du nur flächen und werte berechnen willst würde das auch über interpolation mittels spline etc gehen. flächen könnte man mit trapz oder so bestimmen dann. für genauere hilfe wäre eine umfangreiche fragestellung nötig. sihe dazu in meiner signatur. deine frage ist sehr allgemein gestellt und damit schwer zu beantworten. die frage ist immer was hast du bis jetzt versucht. was hat nicht so geklappt wie du wolltest. kleine lauffähige codebeispiele die dein problem verdeutlichen sind immer hilfreich.
grüße winkow
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Zinderella
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 24.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.07.2013, 14:34     Titel:
  Antworten mit Zitat      
Tausend Dank für die schnelle Antwort & sorry für die Anfänger Fragestellung

Habe unten ein Bild eingefügt:

Brauche die Fläche & den x sowie y Abschnitt des Bereiches unter y=2. Die Schnittpunkte hatte ich über intersections.m einer Lösung die man downloaden konnte gefunden. Damit komme ich auf die x Werte, aber nicht auf die y werte, schon gar nicht auf die Fläche.

Das Hauptproblem ist, dass ich nicht weiss was ich mit dem durch spline erzeugten Struct anfangen kann. Wie spreche ich z.B. einen y-wert an einer bestimmten Stelle x an?

Ich glaube wenn ich das wüsste, könnte ich es, wenn auch umständlich irgendwie mathematisch lösen.

Bildschirmfoto 2013-07-24 um 14.10.52.png
 Beschreibung:

Download
 Dateiname:  Bildschirmfoto 2013-07-24 um 14.10.52.png
 Dateigröße:  14.15 KB
 Heruntergeladen:  512 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 24.07.2013, 14:40     Titel:
  Antworten mit Zitat      
spline ist eine interpolation der daten. wenn du also den wert y an der stelle x ansprechen willst muss x teil der daten sein auf die du interpolierst.
ich hab dir mal ein kleines beispiel geschrieben.
Code:
x=-10:10;
y=x.^2;
xx=-10:0.5:10;
yy=spline(x,y,xx)
yy(find(xx==0.5)) % y an der stelle xx=0.5

wenn du den schnittpunkt mit der y achse willst wäre das einfach y an der stelle 0
für den flächeninhalt würde dan zb
Code:
gehen. ist aber nur eine annährung.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Zinderella
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 24.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.07.2013, 17:25     Titel:
  Antworten mit Zitat      
Danke, das hat schonmal weitergeholfen. Irgendwie war mein spline erst ein struct und ich konnte keine Werte aufrufen. Plötzlich ist es ein array...versteh ich nicht.

Allerdings komme ich auch nicht auf die Schnittpunkte Sad(


Code:
sp=[];
for i =1:10000
    if yi(i)==20000
    sp=[sp, xi(i)];
    end
end


bringt keine Ergebnisse, da es nach der Interpolation nicht unbedingt ein yi genau an der Stelle 20000 gibt, sondern vielleicht bei 20000,1

und sowas hier bringt zu viele oder zu wenig Werte, wäre es genau 1 annähernder Wert pro Schnittpunkt wärs ja ok.
Code:
sp=[];
for i =1:10000
    if yi(i)<20100 && yi(i)>19900
    sp=[sp, xi(i)];
    end
end


Wenn ich mit
Code:
arbeite dann kommt ja nur genau 1 wert raus der am nächsten an 20000 liegt, aber ich habe ja einen Kurvenverlauf der öfters die y=20000 schneidet..!!
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 25.07.2013, 17:57     Titel:
  Antworten mit Zitat      
wie ich bereits sagte ist eine genaue lösung mittels interpolation nicht möglich. da wie gesagt nur die punkte einen wert haben die du auch gewählt hast.
du könntest jetzt zb die vorzeichen wechseln von deiner funktion -20000 bestimmen
irgendwie so
Code:
x=-10:1:10;
y=x.^2-0.5;
b=find(diff(sign(y)))

das ist jetzt nur ein kleines beispiel aber ich denke so konntest du die werte finden zwischen denen dein schnittpunkt liegt.
du könntest natürlich auch zu versuchen die funktion zu fitten aber dazu musst du wie gesagt die art der funktion kennen.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Zinderella
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 24.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.07.2013, 18:22     Titel:
  Antworten mit Zitat      
danke! habs jetzt so ähnlich gemacht! vielleicht umständlicher Smile
Code:

 sp=[];
for i =1:length(yi)-1
    if yi(i)>20000&&yi(i+1)<20000
    sp=[sp, (xi(i)+xi(i+1))*0.5];
    elseif yi(i)<20000&&yi(i+1)>20000
        sp=[sp,(xi(i)+xi(i+1))*0.5];
    end
end
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 25.07.2013, 18:45     Titel:
  Antworten mit Zitat      
na is doch ungefär das gleiche Smile
schön das du ne lösung gefunden hast Smile
_________________

richtig Fragen
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.