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 Fitting problem

 

sAmdE
Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 23.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.08.2010, 20:25     Titel: Curve Fitting problem
  Antworten mit Zitat      
Hallo,
habe ein kleines Problem bezüglich CFT.
Meine Funktion lautet: F(x)=A/(1+x*B)^C
ich habe keine weiteren Funktion zur Lösung, lediglich die eine Gleichung und die Funktionswerte. Es gibt keine explizite Lösung, benötige jedoch lediglich die Parameter für A,B und C für die R^2(Bestimmtheitsmaß) der gleichung am geringstens ist.
Ist CFT eventuell hier das falsche Tool? Bekomme ständig die Fehlermeldung das ich zuviele Variablen habe o.ä..
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.2010, 21:45     Titel:
  Antworten mit Zitat      
Hallo,

etwas mehr Infos?
Wieviele Funktionswerte?
Wie genau gehst du vor?
Grundsätzlich sollte das mit der Curve Fitting Toolbox ebenso gehen wie mit nlinfit oder lsqcurvefit.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 23.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.08.2010, 02:40     Titel:
  Antworten mit Zitat      
Alles klar, sorry.
Also mir stehen meist so ca 10 Punkte zur Verfügung im Graphen.
Ich lade diese in die Curvefitting Toolbox und lass sie mir anzeigen.
Anschließend wähle ich unter Fitting "Costum Equtations" und gehe zum Register "General Equtations" wo ich meine Funktion eintippe. Drunter im Fenster werden meine 3 Unbekannten Paramter a,b und c angezeigt, hier verändere ich an der Einstellung nichts. Anschließend Klicke ich noch auf Fit, erhalte jedoch folgende Fehlermeldung:
"Fit could not be computed due to error:

Complex value computed by model function."

Gruß sAm
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: 31.08.2010, 08:56     Titel:
  Antworten mit Zitat      
Hallo,

das kann z.B. ein Problem schlechter Startwerte sein. Ich bräuchte aber wohl die konkreten Zahlen, um das reproduzieren zu können.

Gib die Funktion auch mal so ein (entscheidend sind die Punkte):
F(x)=A ./ (1+x*B) .^ C

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 23.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.08.2010, 23:50     Titel:
  Antworten mit Zitat      
Hi,
danke erst einmal für die Hilfe, bin nu ein Schritt weiter gekommen, nen Fitting funktioniert jedoch immer noch nicht. Beispiele für Funktionswerte wären folgende:
X:
-2,00
-1,80
-1,60
-1,40
-1,20
-1,00
-0,80
-0,60
-0,40
-0,20
0,00
0,20
0,40
0,60
0,80
1,00
1,20
1,40
1,60
1,80
2,00

Y:

4,9
4,9
4,8
4,8
4,7
4,7
4,6
4,5
4,5
4,4
4,3
4,2
4,1
4,1
4,0
3,8
3,7
3,6
3,5
3,4
3,3


Erhalte nun die Meldung, dass das Fitting nicht fortgeführt werden kann?!
Typische Werte wären:
A: 110000 - 130000
B: 5 - 10
C: 0,4 - 0,8

Habe den Startwert und Lower auf den kleineren Wert gesetzt und den Upper auf den oberen, da ich von Matlab auch einmal den Hinweis erhielt den bereich evzl. einzuschränken. Erhalte jedoch weiterhin kein Fitting.
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: 01.09.2010, 09:23     Titel:
  Antworten mit Zitat      
Hallo,

das liegt an schlechten Wertebereichen für die Parameter.
Für x = -2 und B zwischen 5 und 10 wird (1+ B*x) negativ und damit die Werte unter der Wurzel negativ, was zu komplexen Zahlen führt.

Ich habe mal als einzige Beschränkung B nach oben auf 0.49 beschränkt und bekomme eine gut angepasste Kurve mit folgenden Daten:

Zitat:
General model:
f(x) = A./(1+x*B).^C
Coefficients (with 95% confidence bounds):
A = 4.295 (4.27, 4.32)
B = -0.3003 (-0.3473, -0.2533)
C = -0.3028 (-0.361, -0.2445)


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

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 23.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.09.2010, 11:51     Titel:
  Antworten mit Zitat      
Hi Harald,

super danke schön, nun erhalte ich ebenfalls ein Fitting, werde den Funktionswerten nun nochmal auf den Grund gehen.
Gibt es eine Möglichkeit, das ich in Zukunft ohne übergabe des Intervalls ein Fitting erhalte?
Das Programm soll letztlich wenn es vollendet ist per Excel-Tabelle die Werte übergeben bekommen und die entsprechenden Paramter ausgeben. Es wäre ziemlich blöd, wenn es in bestimmten Bereichen nicht funktionieren würde.
Gibt es die Möglichkeit nun die Schritte, die ich mit der CFTOOL-Box ausführe direkt als ProgrammCode ausgeben zu lassen, oder suche ich mir einen Vorgefertigten ProgrammCode aus und passe ihn dann an?
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: 01.09.2010, 12:27     Titel:
  Antworten mit Zitat      
Hallo,

wenn du immer mit derselben Funktion arbeitest, kannst du die obere Schranke für B ja errechnen aus B = -1/min(x).
Codeerzeugung geht über File -> Generate Code.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 23.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.09.2010, 19:13     Titel:
  Antworten mit Zitat      
Super,
danke sehr Harald für deine mühe.

Thread kann geschlossen werden Smile
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.