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

Fitten von Funktionen mit mehreren Variablen

 

Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.03.2012, 14:06     Titel: Fitten von Funktionen mit mehreren Variablen
  Antworten mit Zitat      
Hallo,

ich habe eine Frage zum Fitten mehrerer Parameter in einer Funktion mit zwei Variablen.
Und zwar würde ich gerne die Funktion:

z=(a*x+b*y^c)/(d+y^e)

gleichzeitig an zwei verschiedene Datensätze fitten, wobei alle 5 Parameter optimiert werden sollen. Bei den Datensätzen wurden jeweils x und y variiert und z gemessen.

Hat jemand eine Idee?


Kevin
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 93
Anmeldedatum: 18.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.03.2012, 14:46     Titel:
  Antworten mit Zitat      
Hallo,
gehören die beiden Datensätze zu einer Funktionsschar oder willst du einfach nur runtime beim fitten sparen?
Gruß
Kevin
_________________

1000 Buchstaben? Warum nur 6?
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.03.2012, 14:54     Titel:
  Antworten mit Zitat      
Hi Kevin,
es sollte ein multi-experimenteller Fit sein. Ein einziger Parametersatz sollte beide Datensätze erklären können.

Gruß,
Marcel
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 06.03.2012, 15:01     Titel:
  Antworten mit Zitat      
dann klatsch doch einfach beide messsätze aneinander.
den fit kannst du mit fminsearch machen. dazu ist auch ein beispiel in der doc
Code:
function [estimates, model] = fit(xdata, ydata)
model = @fun;
estimates = fminsearch(model, [1,1,1,1,1]);
    function [sse, FittedCurve] = fun(params)
        A = params(1);
        B = params(2);
        C = params(3);
        D = params(4);
        E = params(5);
        FittedCurve=(A*xdata(:,1)+B*xdata(:,2).^C)./(D+xdata(:,2).^E);
        ErrorVector = FittedCurve - ydata;
        sse = sum(ErrorVector .^ 2);        
    end
end
sollte ungefär so aussehen. xdata is deine matrix mit deinen 2 eingangs größen und ydata dann dein gemessener z wert. startvariablen können auch zufällig gewählt werden. oder wenn du ne ahnung hast kannst du dauch schonmal was angeben. ich hab jetzt 1 für alles genommen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.03.2012, 16:03     Titel:
  Antworten mit Zitat      
ja das klappt.
super, danke!!
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 06.03.2012, 16:47     Titel:
  Antworten mit Zitat      
Hallo,

wenn die Statistics Toolbox oder die Optimization Toolbox zur Verfügung stehen, dann sind NLINFIT oder LSQCURVEFIT in der Nutzung deutlich angenehmer, da es dort im Grunde nur zwei Zeilen sind: eine für die Definition des Modells, eine für den Funktionsaufruf.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
peterson
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 25.05.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.05.2012, 10:56     Titel: sse ausgeben lassen
  Antworten mit Zitat      
Hallo Winkow,


erstmal vielen dank für deinen Code, hat mir sehr geholfen.
Versuche gerade zu verstehen was da genau ausgeführt wird. Vlt. könntest du etwas dazu erklären. Ich hätte gerne "sse"(alos den letzten/geringsten Fehler) als output von fit, also irgendwieso:
Code:
function [sse, estimates, model] = fit(xdata, ydata)
in deinem code? Falls das hier unangebracht war, sorry, bin komplett neu hier und matlab-anfänger Smile

vielen dank im vorraus schonmal
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.