How can I change opts.StartPoint for every loop iteration for the predefined points used by the curve fitting tool?
3 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Matt J
2021-12-16
编辑:Matt J
2021-12-16
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 个评论
Matt J
2021-12-16
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
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Get Started with Curve Fitting Toolbox 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!