|
sAmdE |

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 23.08.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 29.08.2010, 20:25
Titel: Curve Fitting problem
|
 |
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.ä..
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 29.08.2010, 21:45
Titel:
|
 |
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
|
|
|
sAmdE |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 23.08.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 31.08.2010, 02:40
Titel:
|
 |
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
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 31.08.2010, 08:56
Titel:
|
 |
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
|
|
|
sAmdE |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 23.08.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 31.08.2010, 23:50
Titel:
|
 |
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.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 01.09.2010, 09:23
Titel:
|
 |
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
|
|
|
sAmdE |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 23.08.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.09.2010, 11:51
Titel:
|
 |
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?
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 01.09.2010, 12:27
Titel:
|
 |
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
|
|
|
sAmdE |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 23.08.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.09.2010, 19:13
Titel:
|
 |
Super,
danke sehr Harald für deine mühe.
Thread kann geschlossen werden
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|