当前位置:文档之家› matlab非线性拟合

matlab非线性拟合

如何拟合曲线
表达式必须自己估计。

有很多表达式都能拟合出类似曲线。

matlab里做曲线拟合的主要有(我经常用的)有这两个:polyfit和lsqcurvefit。

前者专门对高次多项式拟合,后者则适用于绝大多数非线性拟合。

根据描点判断可以用多项式拟合,我下面以二次多项式举例:
clear
x=[ 0 28 64 103 123 144 217 291 429 504 553 657 711 783 838]';
y=[ 31.5300
30.4300
29.3800
28.8000
28.1300
27.5900
25.5300
24.3000
22.8300
21.5700
21.8600
29.4900
34.5200
41.7600
44.6000];
%用polyfit拟合
p=polyfit(x,y,2); %用2次多项式
figure(1);
title('拟合1')
hold on
plot(x,y,'+',x,polyval(p,x));
legend('原始值','拟合值');
%用lsqcurvefit拟合
f=@(b,x) b(1)+b(2).*x+b(3).*x.^2; %构造要拟合的函数
b=lsqcurvefit(f,[1,1,1],x,y); %进行拟合
figure(2)
title('拟合2');
hold on
plot(x,y,'+',x,f(b,x));
legend('原始数据','拟合数据')
如何计算残差!
首先确定你把拟合曲线图画出来了,然后在figure 1上边的选项中按Tools----Basic Fitting-----cubic----Show equations----plot residuals-----"然后点向右的箭头"-----”再从右边选项框里选Save to workspace“
这就行了。

相关主题