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

lsqcurvefit mir drei Variablen

 

scoobydo
Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 23.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.07.2014, 15:00     Titel: lsqcurvefit mir drei Variablen
  Antworten mit Zitat      
Hallo,

ich habe da folgendes Problem. Zunächst hatte ich eine Funktion bestehend aus zwei Variablen, mit denen lsqcurvefit prima geklapt hat.
Nun ist noch eine dazugekommen, welche ich einer Funktion übergebe und nu geht es nicht mehr. Wisst ihr woran das liegen kann? Evtl. ein Fehler bei der Variablen übergabe....
Hier ist der Code dazu, die Matrix data hat die Dimension data(41,3) wie sie entsteht würde den Rahmen sprengen Wink

Code:

    [Koeff] = lsqcurvefit(@King,[4.5 2.5 0.5],data(:,1),data(:,2:3));
 


Code:

function E = King(coeff,u_0)                                        
E = sqrt( (coeff(1) + coeff(2) * u_0(:,1).^coeff(3)) *. u_0(:,2));
 


Besten Dank schon einmal!
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

die Reihenfolge der Argumente ist
Code:
x = lsqcurvefit(fun,x0,xdata,ydata)

d.h. xdata hat bei dir 1 Spalte und ydata hat 2 Spalten - es müsste aber genau umgekehrt sein.

Bitte generell auch dazuschreiben, was "nu nicht mehr geht" (d.h. ob es eine Fehlermeldung gibt oder ein unerwartetes Verhalten, und wenn ja genauer beschreiben).

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 23.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.07.2014, 15:57     Titel:
  Antworten mit Zitat      
Hallo Harald danke für die schnelle Hilfe,

habe die Argumente ausgetauscht. Was aber leider noch nicht geholfen hat.
Code sieht nun wi folgt aus:

Code:

[Koeff] = lsqcurvefit(@King,[4.5 2.5 0.5],data(:,1:2),data(:,3));
 


Code:

function E = King(coeff,u_0)                                        
E = sqrt( (coeff(1) + coeff(2) * u_0(:,1).^coeff(3)) *. u_0(:,2));
 


Als Fehlermeldung erhalte ich:

>> Auswertung_Kal_Hitz_Kk
Error using feval
Error: File: King.m Line: 3 Column: 55
Unexpected MATLAB operator.

Error in lsqcurvefit (line 199)
initVals.F = feval(funfcn_x_xdata{3},xCurrent,XDATA,varargin{:});

Error in Auswertung_Kal_Hitz_Kk (line 115)
[Koeff] = lsqcurvefit(@King,[4.5 2.5 0.5],data(:,1:2),data(:,3));

Caused by:
Failure in initial user-supplied objective function evaluation. LSQCURVEFIT cannot continue.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

schau doch mal in die King-Funktion. Da dürfte im Editor rechts oben ein rotes Quadrat bzw. rechts auf der Seite ein roter Balken sein, die dich auf den Fehler hinweisen, der dann auch rot unterringelt ist.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 23.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.07.2014, 16:45     Titel:
  Antworten mit Zitat      
Er scheint Probleme mit den übergebenen Variablen coeff und u_0 zu haben.
Er unterstreicht mir in der ersten Zeile coeff und u_0 mit der Meldung:
Code:

function E = King( [color=red]coeff[/color] , [color=red]u_0[/color] )                                        
E = sqrt( (coeff(1) + coeff(2) * u_0(:,1).^coeff(3))  [color=red]*.[/color]  u_0(:,2 [color=red])[/color] );
 


Input argument might be unused

Nur weiss ich nicht warum denn in der Form funktioniert es (wenn u_0 keine Matrix sondern ein Vektor ist):

Code:

[Koeff] = lsqcurvefit(@King,[4.5 2.5 0.5],data(:,1),data(:,2));
 


Code:

function E = King(coeff,u_0)                                        
E = sqrt( (coeff(1) + coeff(2) * u_0.^coeff(3)) );
 
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

das entscheidende ist das unterstrichene *.
Der Operator ist nämlich .*
Die anderen (vermutlich orangen) Meldungen dürften Folge dieses Fehlers sein.

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 - 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.