1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > matlab调取excel非线性拟合 用matlab实现非线性曲线拟合_matlab非线性曲线拟合

matlab调取excel非线性拟合 用matlab实现非线性曲线拟合_matlab非线性曲线拟合

时间:2021-11-30 09:37:17

相关推荐

matlab调取excel非线性拟合 用matlab实现非线性曲线拟合_matlab非线性曲线拟合

用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)得到如下所示的拟合曲线:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。