![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/288441/image.png)
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.
0 个评论
采纳的回答
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-');
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/288441/image.png)
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 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File 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!