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 mit 2 Variablen fitten

 

Ronnie1111
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 29.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.08.2011, 11:48     Titel: Funktion mit 2 Variablen fitten
  Antworten mit Zitat      
Hey!

Ich habe eine Funktion die sieht folgendermaßen aus:

f(z,T) = 1- exp(-A*z^B-C*T*z^D)

A.B,C,D...Konstanten
T... Temperatur (kann 50°C und 80°C sein)
z...Feuchte (zwischen 0 und oo)

Dazu habe ich Messergebnisse für z und f bei zwei verschiedenen Temperaturen.

Bislange habe ich solche Probleme mit lsqcurvefit gelöst. Funktioniert auch einwandfrei, wenn ich z.B. die Temperatur konstant 50 setze).

Wie kann ich jetzt aber die Temperatur als Variable lassen und die Parameter so fitten, dass die Temperatur berücksichtigt wird?

Wäre über jede Hilfe froh Very Happy

LG
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 29.08.2011, 13:03     Titel:
  Antworten mit Zitat      
Hallo,

du musst lediglich statt einem Vektor xdata eine Matrix xdata mit, in deinem Fall, zwei Spalten übergeben.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Ronnie1111
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 29.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.08.2011, 14:39     Titel:
  Antworten mit Zitat      
Hallo Harald, danke für deine Antwort, das habe ich bereits so ähnlich versucht:

Meine Funktion:
Code:
f = @(a,x) 1 - exp(-a(1)*x(:,1).^a(2)-a(3)*x(:,2).*x(:,2).^a(4));



Die Daten:
xd =

0.0519 80.0000
0.0350 80.0000
0.0256 80.0000
0.0181 80.0000
0 80.0000
0.0882 50.0000
0.0431 50.0000
0.0431 50.0000
0.0255 50.0000
0 50.0000


yd =

0.7000
0.5000
0.3000
0.1300
0
0.7000
0.5000
0.3000
0.1300
0

Und der Aufruf von lsqcurvefit

lsqcurvefit(f,[x,x,x,x],xd,yd);

(wobei die Startwerte dann in einer Schleife variiert werden, nur zur Vollständigkeit erwähnt)


Wo liegt hier der Gedankenfehler vor ?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 29.08.2011, 15:38     Titel:
  Antworten mit Zitat      
Hallo,

das sieht doch an sich gut aus, nur dass du in deinem Modell wohl einen Tippfehler hast:

Code:
f = @(a,x) 1 - exp(-a(1)*x(:,1).^a(2)-a(3)*x(:,2).*x(:,1).^a(4));  

Ansonsten bekomme ich mit [1 1 1 1] als Startwerte schon Residuen in einem vernünftigen Bereich.

Wenn noch Probleme bestehen, bitte genau beschreiben, was das Problem ist.

Grüße,
Harald
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.