matlab非线性拟合

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

如何拟合曲线

表达式必须自己估计。有很多表达式都能拟合出类似曲线。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“

这就行了

相关文档
最新文档