用matlab实现非线性曲线拟合
2014-04-17 20:28
417 查看
用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)考虑以下的试验数据点:(第一列为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)得到如下所示的拟合曲线:
相关文章推荐
- Matlab:非线性曲线拟合
- 用MATLAB怎么实现曲线拟合?
- 最小二乘曲线拟合matlab实现
- MATLAB中利用cftool导出代码实现一张图中拟合多条平滑曲线
- 最小二乘曲线拟合matlab实现
- matlab 万能实用的非线性曲线拟合方法
- Matlab非线性拟合
- matlab 2011b曲线拟合工具箱cftool的使用
- matlab曲线拟合工具箱简明使用说明
- matlab中实现RANSAC平面拟合
- 最小二乘法曲线拟合原理与实现
- 最小二乘曲线拟合算法的C++实现
- 利用Matlab实现已知数据拟合
- 【python数据挖掘课程】十四.Scipy调用curve_fit实现曲线拟合
- 最小二乘法拟合非线性函数及其Matlab/Excel 实现(转)
- Matlab画平滑曲线的两种方法( 拟合或插值后再用plot即可)
- 最小二乘法多项式曲线拟合原理与实现
- Matlab曲线拟合函数
- Matlab的曲线拟合工具箱CFtool使用简介
- Matlab中的lsqcurvefit,非线性拟合