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

Faktor in nlinfit Funktion

 

jack_24
Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 06.01.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.01.2010, 00:38     Titel: Faktor in nlinfit Funktion
  Antworten mit Zitat      
Hallo lieber Forumbesucher

Wie lässt sich ein gegebener Faktor in einer nlinfit Funktion mit darstellen?

Ich möchte eine Funktion mit der nlinfit Funktion fitten. Allerdings lässt sich in dem Model kein Faktor der gegeben ist, einbauen. Hier ein Bsp, wie ich es mir ursrücglich gedacht habe:

Code:

t = 0:0.01:2*pi;
y = sin(t);
w = 5;
fc = 'a(1)*sin(w*t+a(2))';
f  = inline(fc,'a','t');
as = [2,2];
af = nlinfit(t,y,f,as)
yfit = f(af,t);
 


das Problem: sollange w im fittingmodell fc bleibt, wir ein Error angezeigt.Wie kann ich das vermeiden, ohne die eval Funktion zu verwenden.
So ich hoffe es kann jemand was anfangen damit.
Besten dank schonmal.

Beste Grüße
Jack
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: 23.01.2010, 10:12     Titel:
  Antworten mit Zitat      
Hallo,

Code:
fc = 'a(1)*sin(a(3)*t+a(2))';

Natürlich benötigst du dann auch drrei Startwerte, in as.
Hinweis: die Inline-Schreibweise ist etwas veraltet. Besser ist es, mit Function Handles zu arbeiten, z.B.

Code:
f = @(a,t) a(1)*sin(a(3)*t+a(2))

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 06.01.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.01.2010, 12:10     Titel:
  Antworten mit Zitat      
danke für antwort. Aber ich möchte den Faktor w vorgeben. Er errechnet sich aus en Eingabeparametern. Klar kann ich den über eine Variable errechnen. aber es wäre doch besser ihn gleich vorzugeben, wenn er schonmal gegeben ist.

beste grüße jack
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: 23.01.2010, 19:04     Titel:
  Antworten mit Zitat      
Hallo,

dann
Code:
f = @(a,t) a(1)*sin(w*t+a(2))


wobei w vorher definiert worden sein muss.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 06.01.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.01.2010, 20:36     Titel:
  Antworten mit Zitat      
in der alten Schreibweise ging das irgendwie nicht. Hast mir sehr weitergeholfen. Dankeschön Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
jack_24
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 06.01.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.01.2010, 21:03     Titel:
  Antworten mit Zitat      
Ich wollte mal noch anmerken, dass die alte Schreibweise aus irgendeinem Grund mit mehr Paramatern klar kommt also die "neue".
Bei der "neuen" meckert Matlab schon bei etwa 4 Parametern rum, dass er die Parameter nicht mehr korrekt bestimmen konnte.
bei der "alten" hab ich es bis 24 getrieben, ohne das Matlab gemuckt hat.

"neu":
Code:

f = @(a,t) a(1)*sin(a(2)*t+a(3))
 


"alt":
Code:

fc = 'a(1)*sin(a(2)*t+a(3))';
f  = inline(fc,'a','t');
 
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: 23.01.2010, 22:31     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Bei der "neuen" meckert Matlab schon bei etwa 4 Parametern rum, dass er die Parameter nicht mehr korrekt bestimmen konnte.


Kannst du da ein Beispiel sagen? Welcher Code, und inwiefern "rummeckern"?

Grüße,
Harald[/quote]
Private Nachricht senden Benutzer-Profile anzeigen
 
Philipp123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.02.2011, 09:16     Titel:
  Antworten mit Zitat      
Hallo,

ich bin auf der Suche nach einem passenden Fit/Fittingtool.

Was liegt vor:
3d Vektoren alá Punk1 (x,y,z) usw..
6 bis 14 dieser Vektoren ("Punktwolke") bilden den Verlauf einer bestimmten "Strecke" nach.
von diesen "Strecken" habe ich so ca 250 bis 350 stück.

Was möchte ich:
Grundgedanke ist es zu jedem Punkt (oder eben vielen Punkten) auf dieser Strecke einen Winkel angeben können(in bestimmten Ebenen, bspw. x-z-Ebene und y-z-Ebene), indem ich bspw. eine Kathete anlege. Ich suche also etwas, was den Kurvenverlauf über die vorhandenen Punkte fittet und mir es ermöglicht beliebig viele neue Punkte auf der Strecke anzugeben und mit der berechneten Funktion (und ihren ausgegebenen Koeffizienten) eine Ableitung zu bilden und daraus die Winkel zu berechnen.

Das Problem:
Die vorliegenden Daten sind recht diffus, so das ein homogener "Kurvenverlauf" nicht darstellbar ist, er aber real beim originalen Objekt existiert (entspricht ca. einem Polynom 2. Grades). Ein Polynom kann ich ebenfalls nicht drüber legen, da ich erstens zu jeder einzelnen ein individuelles Polynom berechnen müßte und zum anderen weil dies bei manchen Strecken zwei y-Werte zu einem x-Wert ergeben würde (man stelle sich ein "C" in einem Koordinatensektor vor).

Wie löse ich das Problem? Ist dies mit "nlinfit" möglich?
 
Harald
Forum-Meister

Forum-Meister


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

schau dir bitte mal diesen verwandten Thread an:
http://www.gomatlab.de/curve-fittin.....lossene-kurve-t16272.html

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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.