用matlab实现非线性曲线拟合

用matlab实现非线性曲线拟合,步骤如下:

(1)考虑以下的试验数据点:(第一列为x坐标,第二列为y坐标)

Data=[
 0.0045 102.9128
 0.0245 43.0681
 0.0445 21.0126
 0.0645 12.4918
 0.0845 9.0246
 0.1045 7.5404
 0.1245 6.8773
 0.1445 6.5724
 0.1645 6.4311
 0.1845 6.3674
 0.2045 6.3316
 0.2245 6.3346
 0.2445 6.3371
 0.2645 6.3444
 0.2845 6.3543
 0.3045 6.3655
 0.3245 6.3774
 0.3445 6.3897];

(2)为了观察试验数据点的形状,首先,绘制试验数据的散点图:

>> xData=Data(:,1);
yData=Data(:,2);
plot(xData,yData,'bo');
title('original data')
(3)运行后,得到如下所示的散点图:

(4)建立非线性曲线拟合函数lsqcurvefit().

    (4.1)首先,建立非线性曲线拟合曲线的M文件:

function [feval]=curvefit_fun(x,Data)
%nonlinear curve fit function:c(1)*exp(c(2)*x)+c(3)*exp(c(4)*x)+c(5)
feval=x(1)*exp(x(2)*Data)+x(3)*exp(x(4)*Data)+x(5);

   (4.2)然后,在matlab的命令行窗口输入:

x0=[10;-50;5;-0.5;5];
>> xData=xData'; yData=yData';
[x,resnorm,residual]=lsqcurvefit(@(x,xData)curvefit_fun(x,xData),x0,xData,yData)
x1=linspace(min(xData),max(xData),1000);
y1=curvefit_fun(x,x1);
hold on
plot(x1,y1,'k-')
legend('data points','fitting curve')

   (4.3)得到如下所示的拟合曲线:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sanqima

一键三连,多多益善

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值