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

4 Ansichten (letzte 30 Tage)
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.

Akzeptierte Antwort

Ameer Hamza
Ameer Hamza am 28 Apr. 2020
Bearbeitet: Ameer Hamza am 28 Apr. 2020
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-')

Weitere Antworten (0)

Kategorien

Mehr zu Get Started with Curve Fitting Toolbox finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by