上一篇给大家介绍了如何使用matlab拟合工具箱进行函数的插值拟合,今天介绍matlab中常用的拟合函数:polyfit和fittype。
1 基于最小二乘法的多项式拟合函数:polyfit
p = polyfit(x,y,n),待拟合的多项式为p(1)*x^n + p(2)*x^(n-1) +…+ p(n)*x + p(n+1),其中x是拟合数据的自变量,y是因变量,n是拟合多项式的阶数,如当n为1时,即为一次线性拟合。
例1
x = -10:0.2:10;
y = 1.25*x.^2 + 0.38*x+2;
len = length(x);
yy = y + 2*(rand(1,len)-0.5);
plot(x,yy,'.')
% 拟合得到系数
p = polyfit(x,yy,2);
% 求出拟合值
yfit = p(1)*x.^2 + p(2)*x+p(3);
hold on
plot(x,yfit,'r');
hold off
legend('原始数据','拟合值');
2 多项式拟合求值函数:polyval
y = polyval(p,x),p为采用polyfit求出的拟合系数,x为自变值,可以为单个值也可以为数组。使用该函数可以省去例1中列出表达式原型。
例2
x = -10:0.2:10;
y = 1.25*x.^2 + 0.38*x+2;
len = length(x);
yy = y + 2*(rand(1,len)-0.5);
plot(x,yy,'.')
% 拟合得到系数
p = polyfit(x,yy,2);
% 求出拟合值
yfit = polyval(p,x);
hold on
plot(x,yfit,'r');
hold off
legend('原始数据','拟合值');
3 自定义类型拟合函数:fittype
使用fittype函数可以自定义拟合函数,可以满足线性拟合和非线性拟合。调用格式如下:
aFittype = fittype(libraryModelName),其中,libraryModelName为内置库模型名称,如:
aFittype = fittype(expression),其中,expression为自定表达式,这也是最常用到的,如:
例3
x = -10:0.2:10;
y = 1.25*x.^3 + 0.38*x.^2 + 2*x + 4;
len = length(x);
yy = y + 30*(rand(1,len)-0.5);
plot(x,yy,'.')
% 定义三次曲线拟合
p = fittype('poly3');
% 获取拟合函数
yfit = fit(x',yy',p);
hold on
% 计算并绘图
plot(x,yfit(x),'r');
hold off
legend('原始数据','拟合值');
温馨提示
如果你喜欢本文,请分享到朋友圈,想要获得更多信息,请持续关注我。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有