How do I find curve of best fit or create one manually to fit?

4 次查看(过去 30 天)
angle = [45,50,55,60,65,70,75,80,85]';
P = [55.51, 69.5, 78.07, 82.06, 81.81, 77.3, 68.12, 53.42, 31.59]';
scatter(angle, P, 'bx');
%Also I apparently don't have the cftool so I can't use that I'm afraid.

采纳的回答

Ameer Hamza
Ameer Hamza 2020-4-28
编辑:Ameer Hamza 2020-4-28
It looks like a parabols. If you have optimization toolbox, you can use lsqcurvefit to fit this equation (y=a*x^2+b*x+c) to the dataset.
angle = [45,50,55,60,65,70,75,80,85]';
P = [55.51, 69.5, 78.07, 82.06, 81.81, 77.3, 68.12, 53.42, 31.59]';
fun = @(a,b,c,angles) a*angles.^2 + b.*angles + c;
param_sol = lsqcurvefit(@(param, angles) fun(param(1),param(2),param(3),angles), rand(1,3), angle, P);
a_sol = param_sol(1);
b_sol = param_sol(2);
c_sol = param_sol(3);
plot(angle, P, 'bx', angle, fun(a_sol, b_sol, c_sol, angle), 'r-');
You can also do it without any toolbox. Following also fit a parabolic equation of form (y=a*x^2+b*x+c)
angle = [45,50,55,60,65,70,75,80,85]';
P = [55.51, 69.5, 78.07, 82.06, 81.81, 77.3, 68.12, 53.42, 31.59]';
X = [angle(:).^2 angle(:) ones(size(angle(:)))];
params = X\P(:);
P_estimated = X*params;
plot(angle, P, 'bx', angle, P_estimated, 'r-')

更多回答(0 个)

类别

Help CenterFile 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!

Translated by