Fitting Data to a Square root Cruve
29 views (last 30 days)
Show older comments
I'm looking to fit some data that I have to a function in the form of
y=k(sqrt(x))
with "k" being some constant. How would I find such a line of best fit for the data that I have?
0 Comments
Accepted Answer
Matt J
on 6 Sep 2022
k=sqrt(x(:))\y(:)
5 Comments
Image Analyst
on 6 Sep 2022
fontSize = 18;
spacing=[0.5,1,1.5,2,2.5,3];
velocity=[55.71428571,72.97297297,88.46153846,100,115.1162791,116.3265306];
coefficients = sqrt(spacing(:))\velocity(:);
fittedVelocity = coefficients*(sqrt(spacing))
subplot(2, 1, 1);
plot(spacing, velocity, 'rv', spacing, fittedVelocity,'b.-') ;
grid on;
title('Velocity Measurements', 'FontSize', fontSize)
xlabel('Spacing', 'FontSize', fontSize)
ylabel('Velocity', 'FontSize', fontSize)
legend('Original Data', 'Fitted Curve', 'Location', 'northwest')
% Determine and say how well we did with our predictions, numerically, using several metrics like RMSE and MAE.
% Fit a linear model between predicted and true so we can get the R squared.
subplot(2, 1, 2);
% Draw 45 degree line.
line([50, 120], [50, 120], 'Color', 'g', 'LineWidth', 2)
hold on;
plot(velocity, fittedVelocity, 'b.-', 'LineWidth', 2, 'MarkerSize', 25);
grid on;
xlabel('Velocity (Original Data)', 'FontSize', fontSize)
ylabel('Fitted Velocity', 'FontSize', fontSize)
mdl = fitlm(velocity, fittedVelocity);
rSquared = mdl.Rsquared.Ordinary;
caption = sprintf('R Squared = %.3f', rSquared);
title(caption, 'FontSize', fontSize, 'Interpreter', 'none')
legend('Perfect Fit Line', 'Fitted vs. Original Data', 'Location', 'northwest')
More Answers (0)
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!

