How to stop nonlinear fitting and obtain the results of fitting at that iteration
6 vues (au cours des 30 derniers jours)
I am doing a non linear fittig of data to a function. It takes a lot of time for each iteration since it involve also action to external file.
As the title says, do you know how to stop nonlinear fitting iteration at certain point, and obtain the results of fitting at that iteration.
Wiht the result I mean like goodness of fitting, confidence interval, jacobian, etc.. etc.. all this thigs that matlab fitting usually provide at the end of the fitting.
I tried to manually stop the fitting with ctrl+break but I lose the above mentioned results.
Thank you very much in advance.
Sargondjani le 24 Juil 2012
Modifié(e) : Sargondjani le 24 Juil 2012
im no expert on this (sorry) but did you try the 'output' function thingy... i know for most optimizers there is such a thing. it should be able to get the results of each iteration and put them somewhere i guess.
if you cant find it pls tell me which function you are using, then i can have a look there
Star Strider le 24 Juil 2012
Modifié(e) : Star Strider le 24 Juil 2012
You probably need to add an ‘options’ structure to your main routine before calling your curve-fit function, to limit the number of function iterations to less than the default. For ‘lsqcurvefit’ this is ‘optimset’, and for ‘nlinfit’ it is ‘statset’. The options you need to add are 'MaxIter', 'MaxFunEvals', or both. To find out what the defaults are, type ‘optimset’ or ‘statset’ at the command line without either input or output arguments (and without the quotes). Then follow the documentation to create your own options structure with the number of iterations or function evaluations you want.
Sargondjani le 25 Juil 2012
the display iter only displays something after an iteration is complete (after all function evaluations of that iteration are done)
i doubt if there is a built in solution to solve this. however, you can get the code of the function 'nlinfit' if you do "type nlinfit" then you can copy-paste the code, adjust it to your needs, and save it as a function nlinfit_2