Effacer les filtres
Effacer les filtres

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

4 vues (au cours des 30 derniers jours)
Ash Maxwell
Ash Maxwell le 28 Avr 2020
Modifié(e) : Ameer Hamza le 28 Avr 2020
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.

Réponse acceptée

Ameer Hamza
Ameer Hamza le 28 Avr 2020
Modifié(e) : Ameer Hamza le 28 Avr 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-')

Plus de réponses (0)

Catégories

En savoir plus sur Get Started with Curve Fitting Toolbox dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by