How can I automatically save the coefficients of fit functions?

15 次查看(过去 30 天)
Hello.
Since I'm a graduate student under phsics laboratory, I have used matlab to fit the experimental datas with the appropriate functions so many times.
Everytime I fit the data with the matlab, It is very inconvenient to save the coefficients of the fit function(eg : A and B of A*x + b*x^2 fit function) by 'copy and paste' way. The situation becames worse when the number of datas to be analyzed is about several hundreds!
I frequently use the commands about fit - fit, fittype, fitoptions, etc. The matlab just displays the results similar to the masseage below
fit_options = fitoptions('Method','NonlinearLeastSquares','Lower',[0,0,0,0,5600,0,6500,10],'Upper',[1.50e+04,100,1.50e+04,100,5800,5.00e+04,6600,300],'Startpoint',[0,0,0,0,5600,0,6500,10]);
fun = fittype('I * ( width^2 / ( 4*(x - center)^2 + width^2 ) ) + A - B * x + C*exp(-D*(x-E))','options',fit_options); fit_func = fit(x_alpha,y_alpha,fun)
fit_func =
General model:
fit_func(x) = I * ( width^2 / ( 4*(x - center)^2 + width^2 ) ) + A - B *
x + C*exp(-D*(x-E))
Coefficients (with 95% confidence bounds):
A = 116.2 (-1.703e+004, 1.726e+004)
B = 0.0002194 (-1.468, 1.469)
C = 633.8 (-4.822e+008, 4.822e+008)
D = 0.00039 (-0.002925, 0.003706)
E = 5603 (-1.951e+009, 1.951e+009)
I = 4138 (4109, 4166)
center = 6554 (6554, 6555)
width = 89.73 (88.69, 90.77)
I really need to save coefficient of 'width', for example, in automatic way, not several times of clicking!
Please help to break through the situation.
Thank you for reading my question.

采纳的回答

Arnaud Miege
Arnaud Miege 2011-4-4
How about:
fit_func.width
Does that answer your question?
HTH,
Arnaud

更多回答(1 个)

Isabelle Brichetto
Use the function
vector= coeffvalues(fittedmodel)
for collecting them into a vector. The function's instruction here https://it.mathworks.com/help/curvefit/cfit.coeffvalues.html;jsessionid=6259a965c461b0a3b0a6c96b1b35
Isabelle
  1 个评论
Walter Roberson
Walter Roberson 2021-3-9
Note that if you do this, the order of coefficients might not be what you are expecting. You can ask for the coefficient names, and the values will be in the same order, but the coefficient names will be presented as a cell array of character vectors, so to ask about a particular coefficient you would need to search the cell array to find the index. Or do something like sort() the cell array of names and use the result to index the coefficients to put them into the same order, after which you would be able to count on the relative order (until, that is, you change the names of coefficients.)

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Interpolation 的更多信息

标签

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by