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

curve fit funktion verwenden

 

Matlabliver
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 10.10.16
Wohnort: ---
Version: R2016a
     Beitrag Verfasst am: 10.10.2016, 16:32     Titel: curve fit funktion verwenden
  Antworten mit Zitat      
Hallo beisammen,

Ich sitze zurzeit an einem Problem das ungefähr so aussieht, ich eine gemessene Sinusspannung approximieren muss um die Maximal und Minimalwerte und den Nulldurchgang herauszufinden. Ich dachte mir ich kann das ganz einfach mit curve fit machen, das haut auch wunderbar hin, aber ich kann die Funktion die ich mit dem fit bekomme nun nicht weiter verwenden. (Heißt ableiten um Extrema und Wendepunkt zu bekommen)

wie mach ich das?

Ich habe hier bereits gefunden wie man den fit in den workspace kopiert. Wenn ich aber dann differentiate(sinefunktion,x) eingebe (wobei ich x= syms x gesetzt habe) gibts mir einen falschen Wert aus.
Private Nachricht senden Benutzer-Profile anzeigen


Friidayy
Forum-Century

Forum-Century


Beiträge: 225
Anmeldedatum: 17.12.13
Wohnort: ---
Version: R2012b
     Beitrag Verfasst am: 10.10.2016, 19:36     Titel:
  Antworten mit Zitat      
Hast du ein Beispielskript?
Private Nachricht senden Benutzer-Profile anzeigen
 
Matlabliver
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 10.10.16
Wohnort: ---
Version: R2016a
     Beitrag Verfasst am: 11.10.2016, 07:08     Titel:
  Antworten mit Zitat      
Leider nicht, aber ich kann genauer beschreiben was ich gemacht habe:

Zuerst habe ich aus einer Tabelle mit xlsread und reshape meinen Spannungs- und Zeitvektor (T,U) ausgelesen, dann cftool(T,U) und Sum of Sine im curve fit mit je nachdem 2-4 Termen, gegebenenfalls Fourier aber das ist hier nicht das Thema. Dann bei "Fit", Save to Workspace mit dem Namen "Sinefunction".
Und nun kommt das eigentliche Problem: Ich dachte mir es ginge auf dem einfachen Weg mit x=syms x und solve(differentiate(Sinefunction,x)=0) oder auch mit zwei "==" aber das funktioniert nicht. Auch nicht mit " solve('...') " oder diff anstatt differentiate. Ich möchte einfach auf die gefittete Funktion als Funktion mit einer Variable x zugreifen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Matlabliver
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 10.10.16
Wohnort: ---
Version: R2016a
     Beitrag Verfasst am: 11.10.2016, 12:36     Titel:
  Antworten mit Zitat      
Code:
function [ ye, yn ] = AbleitungsNst( T,U )
% Fittype bestimmen
syms x;
f=fittype('a*sin(b*x)');
% Fit bestimmen
fit1=fit(T,U,f,'StartPoint',[T(1) U(1)]);
% Ableitungen berechnen in Abhängigkeit von x
[d1, d2]=differentiate(fit1,x);
% Nullstellen des Fits berechnen
ye=solve('d1=0',x); % Soll Extrema ausgeben.
yn=solve('d2=0',x); % Soll Nst ausgeben, da die 2. Ableitung = 0 die Nst des Fits
end

 


Ich hab das jetzt mal Pseudomäßig in eine Funktion geschrieben, dass jeder hier weiß was ich meine!

Danke für baldige Hilfe/Tipps/Überlegungen!
Private Nachricht senden Benutzer-Profile anzeigen
 
Drago
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 18.05.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.10.2016, 15:09     Titel:
  Antworten mit Zitat      
Hallo,

weiß jetzt nicht ob das konkret dein Problem löst, aber ich habe mal diese Files aus FileExchange für was ähnliches benutzt:
click

Ansonsten diff() und nach Nullstellen suchen... click

Grüße

Drago
Private Nachricht senden Benutzer-Profile anzeigen
 
Matlabliver
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 10.10.16
Wohnort: ---
Version: R2016a
     Beitrag Verfasst am: 11.10.2016, 16:20     Titel:
  Antworten mit Zitat      
Also das erste sieht ganz gut aus, falls es denn auch mit den fits geht.

Das mit diff funktioniert leider nicht, da die Nullstellen nur im Fit sind und nicht in den Daten selbst... ich suche also die Approximierten Nullstellen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Drago
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 18.05.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.10.2016, 16:35     Titel:
  Antworten mit Zitat      
das mit diff() geht auch mit dem fit! Man kann sich doch in der fit-Funktion die Werte für die Parameter a und b zurückgeben lassen, plote doch einfach dann deine fit-Funktion und wende darauf diff an. Ist vielleicht etwas umständlich aber gehen müsste es.
Private Nachricht senden Benutzer-Profile anzeigen
 
Matlabliver
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 10.10.16
Wohnort: ---
Version: R2016a
     Beitrag Verfasst am: 12.10.2016, 07:23     Titel:
  Antworten mit Zitat      
Das mit dem "ist vielleicht etwas umständlich" ist genau das Problem!
Ich möchte das nämlich tatsächlich als Funktion schreiben da ich nämlich ca 1000 solcher Kurven zu analysieren habe.

Gibt es keine Möglichkeit meinen Fit abzuleiten und so die Extrema/Nullstellen zu finden, das wäre mathematisch so einfach... aber nicht zu coden offensichtlich!
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 - 2024 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.