Verfasst am: 23.11.2014, 19:52
Titel: Fit für Messdaten mit eigener Gleichung
Hey,
Habe zwei Vektoren d und T mit (51,1)-Einträgen. Diese stammen aus einer Messung.
habe jetzt einen plot(d,T,'r.') und brauche dazu jetzt eine passende Regression, mit der
function T=ToFit(a,d)
T = 1/(1+(a(1)/a(2))^((1-(d/a(3))^a(4))*a(5))) ;
dabei sind a(...) unbekannte Parameter, die zu bestimmen sind. Die Parameter haben die Anfangswerte (untere Grenze; obere Grenze):
a(1) = 0; % (0; Inf)
a(2) = 1e-18;% (1/Inf; Inf)
a(3) = 1e-18;% (1/Inf; 2.5e-3)
a(4) = 1;% (0.5; 2)
a(5) = 1;% (1; 10)
a0 = a;
Jetzt wollte ich die function mit [a, resnorm] = lsqcurvefit(@ToFit,a,d,T) aufrufen... jedoch funktioniert das scheinbar nicht...
Habe mit dem CF-Tool eigentlich händisch alles hinbekommen (siehe Bild), jetzt habe ich aber 940 dieser Datensätze und ich möchte eigentlich nicht alles mit der Hand machen müssen. Deswegen versuche ich das als m-File mir zusammen zu bauen.
Error in ==> ToFit at 3
myfun = 1/(1+(a(1)/a(2))^((1-(d/a(3))^a(4))*a(5))) ;
Error in ==> lsqcurvefit at 209
initVals.F =
feval(funfcn_x_xdata{3},xCurrent,XDATA,varargin{:});
Error in ==> Statistik at 28
[a,resnorm]=lsqcurvefit(@ToFit,a0,d,T)%Aufruf der Funktion
Caused by:
Failure in initial user-supplied objective function
evaluation. LSQCURVEFIT cannot continue.
Warning: Rank deficient, rank = 0, tol = 1.#INFe+000.
> In ToFit at 3
In lsqcurvefit at 209
In Statistik at 28
??? Error using ==> lsqcurvefit at 253
Function value and YDATA sizes are incommensurate.
Error in ==> Statistik at 28
[a,resnorm]=lsqcurvefit(@ToFit,a0,d,T)%Aufruf der Funktion
a(1)./a(2) stellt ein Volumenstromverhältnis dar. Also eine dimensionslose Zahl, kann also auch als eine Variable auftreten.
Der Gewichtungsvektor stammt noch aus dem CF-Tool, da kann man dieses ja direkt angeben... da habe ich es so verstanden, dass der punkt T(i) eben w(i) mal generiert wird.
ich meinte, dass du in deinem lsqcurvefit-Ansatz alle / durch ./ ersetzen sollst. Den ersten hast du vergessen.
Nun musst du sehen, wie das performance-mäßig aussieht. Es gab hier erst einen Thread, wo jemand mit fittype/fit da Probleme hatte und dann eben auf lsqcurvefit gegangen ist.
Grüße,
Harald
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
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.