How can I change opts.StartPoint for every loop iteration for the predefined points used by the curve fitting tool?
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Dear community,
Using the curve fitting tool, I have generated the code to fit a curve using specific x and y values. However, I want to automate this process for n curves with different x and y values (with a loop). The problem is that the generated code uses those particular to my first curve as starting points.
In addition, if I leave the starting point unspecified, some estimates give an error. Is there a way to change the starting values at each iteration so that the fit on that iteration is based on the predefined starting points used by the curve fitting tool? I found a similar question in the forum (https://fr.mathworks.com/matlabcentral/answers/578068-how-can-i-change-opts-startpoint-for-a-custom-equation-at-every-loop-iteration). However, the user's initial points matrix would have to be defined manually, and I am looking for the same points that the tool generates, i.e., not to write anything manually. Is this possible?
So far my code is as follows:
ft_left= fittype( 'power2' );
fit_curve=cell(1,length(Arrays_jan));
for k = 1:length(Arrays_jan)
fit_curve{k}= fit(x{k},y{k},ft_left);
end
Thank you very much!
0 commentaires
Réponse acceptée
Matt J
le 16 Déc 2021
Modifié(e) : Matt J
le 16 Déc 2021
However, the user's initial points matrix would have to be defined manually, and I am looking for the same points that the tool generates, i.e., not to write anything manually
That is what is happening in the code that you've posted already. When you don't specify a starting point, fit() will automatically generate one.
2 commentaires
Matt J
le 16 Déc 2021
but this is not the same starting point that the tool uses despite specifying fittype( 'power2' )
Yes, it is the same.The cftool app is just a wrapper for fit().
If curves in adjacent loop iterations are expected to be similar, it can be helpful to choose the previous solution as the start point:
ft_left= fittype( 'power2' );
fit_curve=cell(1,length(Arrays_jan));
NameValue={};
for k = 1:length(Arrays_jan)
fit_curve{k}= fit(x{k},y{k},ft_left,NameValue{:});
NameValue={'StartPoint',coeffvalues(fit_curve{k})};
end
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Get Started with Curve Fitting Toolbox dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!