Verfasst am: 14.06.2012, 11:59
Titel: Kurve an Messwerte anpassen
Hallo zusammen,
ich versuche eine Kurve an Messwerte(also I und U sind Listen mit ca 200 Werten)
Irgendwie habe ich da aber einen Fehler drin, den ich leider nicht finde...
Wäre super wenn mir einer helfen kann. Vielleicht gibt es sogar eine bessere Methode als lsqcurvefit zu benutzten?!
n=max(size(U));
for i=1:n
Im(i)=geti(U(i),I(i),X(1),X(2),X(3),X(4),X(5));
%difference between model and measurement -> function to be minimized
fun(i) = X(1)-X(2)*(exp((U(i)+Im(i)*X(4))/(X(3)*UT))-1)-(U(i)+Im(i)*X(4))/X(5);
end
end
%set iterationsoptions (algorithm, aso)
%nonlcon = [];
options=optimset('display','iter','Algorithm','trust-region-reflective');
function i=geti(U,I,Iph,Is1,n1,Rs,Rp)
x=[Iph,Is1,n1,Rs,Rp];
k = 1.3806504e-23; % Boltzman constant
e = 1.60218e-19; % Elementary Charge
T = 298.15; % T:top
UT = k*T/e;
fun = @(X) x(1)-x(2)*(exp((U+X*x(4))/(x(3)*UT))-1)-(U+X*x(4))/x(5)-X;
i=fzero(fun,I);
end
wie macht sich der Fehler bemerkbar? Gibt es eine Fehlermeldung?
Grüße, Marc
zudumm
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 14.06.2012, 14:40
Titel:
Es gibt gleich mehrere Fehlermeldungen:
Error using fzero (line 309)
Function value at starting guess must be finite and real.
Error in getieindio (line
i=fzero(fun,I);
Error in eindiodenmitListe/myfunction (line 47)
Im(i)=getieindio(U(i),I(i),X(1),X(2),X(3),X(4),X(5));
Error in lsqcurvefit (line 205)
initVals.F = feval(funfcn_x_xdata{3},xCurrent,XDATA,varargin{:});
Error in eindiodenmitListe (line 5
[Z,fval] = lsqcurvefit(@myfunction,x0,U,I,lb,ub,options);
Caused by:
Failure in initial user-supplied objective function evaluation. LSQCURVEFIT cannot continue.
zudumm
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 14.06.2012, 14:44
Titel:
Ich habe die Funktion ein wenig umgenannt also nicht verwirren lassen:
getieindio = geti
eindiodenmitListe = eindio
Zum ersten Fehler:
Ich kann mir nicht erklären, wieso der wert nicht real sein sollte.
zudumm
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 15.06.2012, 09:19
Titel:
Hat sich erledigt. Die Probleme treten nur für hohe U-Werte auf und die kann ich einfach weglassen. Es macht zwar keinen Sinn, dass die Werte da nicht definiert sein sollen, aber so ist das eben
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.