MATLAB: Line of best fit

line of best fitMATLABtrendline

How would i go about adding a line of best fit to this plot?
E = 6.9*10^10;
xaxis = [-20, -11.8, 0.4, 9.4, 20];
stress = [0.00039174, 0.00017886, -2.02e-06, -0.000214, -0.0002926]*E;
stress1 = stress;
plot(xaxis, stress1, 'r', 'Marker', '*')
xlabel('Vertical Distance from Neutral Axis (mm)')
ylabel('Stress (N/mm^2)')
title('Stress data with respect to Neutral axis')
legend('Stress data')

Best Answer

It depends on what you intend by ‘best fit’.
For a linear fit, add these lines:
P = polyfit(xaxis, stress, 1);
linfit = polyval(P, xaxis);
hold on
plot(xaxis, linfit, '--b')
hold off
so the complete code si now:
E = 6.9*10^10;
xaxis = [-20, -11.8, 0.4, 9.4, 20];
stress = [0.00039174, 0.00017886, -2.02e-06, -0.000214, -0.0002926]*E;
stress1 = stress;
plot(xaxis, stress1, 'r', 'Marker', '*')
xlabel('Vertical Distance from Neutral Axis (mm)')
ylabel('Stress (N/mm^2)')
title('Stress data with respect to Neutral axis')
legend('Stress data')
P = polyfit(xaxis, stress, 1);
linfit = polyval(P, xaxis);
hold on
plot(xaxis, linfit, '--b')
hold off
For a different fitting function, use a different model, and likely fminsearch rather than polyfit if it is not a polynomial function.
That is your call.