Creating equation gives error using fit function.
1 view (last 30 days)
Show older comments
Hello,
I'm trying to make an equation from data with fit function. In a data it seems like a straight line and what I'm expecting in my equation.but not sure why it give me larger error. It gives me a coefficient of the equation which is not fitting to my data sets.
Is there any another function that can help me to set a data sets and getting coefficient of the equation?
I'm trying wih the available data and I divide column as per requirement and I'm ploting column 13 Vs. 22. I expecting same results as in the column 14. But it's deviating.
load trial_hand_fixing.txt
h_DC_SPHERE_250_G1_R8 = trial_hand_fixing(:,4);
h_delta_DC_SPHERE_250_G1_R8= trial_hand_fixing(:,22);
k_DC_SPHERE_250_G1_R8 = trial_hand_fixing(:,13);
g_DC_SPHERE_250_G1_R8 = trial_hand_fixing(:,15);
w_DC_SPHERE_250_G1_R8 = trial_hand_fixing(:,16);
m_DC_SPHERE_250_G1_R8 = trial_hand_fixing(:,17);
k_w_DC_SPHERE_250_G1_R8 = trial_hand_fixing(:,19);
u50_DC_SPHERE_250_G1_R8 = trial_hand_fixing(:,5);
u50_corrected_DC_SPHERE_250_G1_R8 = trial_hand_fixing(:,14);
temp_DC_SPHERE_250_G1_R8= trial_hand_fixing(:,2);
x=h_delta_DC_SPHERE_250_G1_R8;
x1=h_delta_DC_SPHERE_250_G1_R8-11;
y=k_DC_SPHERE_250_G1_R8;
f=fit(x1,y,'poly3') %using poly3 fir function for the calculating coefficient
y_est = f.p1*x1.^3 + f.p2*x1.^2 + f.p3*x1 + f.p4;
plot(x1, y , 'b-', x1, y_est, 'r-', 'LineWidth', 1)
xlabel('h/delta')
ylabel('k')
legend('real','polynominal3')
axis square
title('DC SPHERE 500 G04 2 POLY3')
error= y_est-y;
rmse= sqrt(mean(error.^2))
2 Comments
Monica Roberts
on 6 May 2022
It looks like fit is doing an okay job here. It's a bit more clear if you plot with markers instead of lines:
plot(x1, y , 'bx', x1, y_est, 'ro', 'LineWidth', 1)
There is a larger deviation in the data on the left side so the majority of the error is coming from there.
Answers (1)
Nipun
on 29 Dec 2023
Hi Nilanshu,
I understand that you are trying to retrieve the polynomial equation from the "fit" function in MATLAB.
On analyzing your code, I notice that you are fitting the data using a third degree polynomial regression
f=fit(x1,y,'poly3') %using poly3 fir function for the calculating coefficient
The coefficients can be accessed using "coeffvalues" function on the "cfit" object as under:
coeff_array = coeffvalues(f);
Here, "coeff_array" represents the array of coefficients. For instance to get the second coefficient "p2", do the following
p2 = coeff_array(2);
I am attaching the link to a similar question for more information: How can I obtain the coefficient values, confidence intervals, and other data generated by the CFTOOL GUI within the Curve Fi... - MATLAB Answers - MATLAB Central (mathworks.com)
Hope this helps.
Regards,
Nipun
0 Comments
See Also
Categories
Find more on Get Started with Curve Fitting Toolbox in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!