matlab lsqcurvefit得出的x的值那2个数到底是什么意思~求解释清楚点 我想进行指数拟合
展开全部
函数lsqcurvefit返回的数是代拟合函数的参数,不一定是两个数。
举例来说,假如你观察数据,打算用下面的函数关系来进行拟合:
y = A + B*exp(C*t)
其中A、B、C即为拟合参数,也就是调用函数lsqcurvefit应该返回的数
特别提醒,有两点很重要:
(1) 所选拟合函数的形式是否适合相应的数据;
(2) 拟合参数的初值要合理选择。
下面是一个简单的例子,写了详细的注释,对照看看会明白的
% 生成测试数据
% 真实的函数关系:y = A + B*exp(C*t)
% 为使效果更真实,函数值上加入适当噪声得到测试数据
t=0:0.1:2;
y=4-3*exp(-5*t);
y1=y+0.1*randn(size(y));
% 定义拟合函数的形式,这里使用inline函数
% 在MATLAB 7.0以上也可以使用匿名函数
% 如果函数形式比较复杂,应考虑编写函数型M文件
f=inline('x(1)+x(2)*exp(x(3)*t)','x','t');
% 调用拟合函数,返回的x即为想要拟合的参数[A B C]
% 注意初值的选择,例如初值选[0 0 0]得不到理想的结果
x0=[1 -1 -1];
x=lsqcurvefit(f,x0,t,y);
% 把原始函数、测试数据、拟合函数画在同一张图上对照效果
plot(t,y,'-',t,y1,'.',t,f(x,t),'ro')
legend('真实函数','测试数据','拟合函数',0)
举例来说,假如你观察数据,打算用下面的函数关系来进行拟合:
y = A + B*exp(C*t)
其中A、B、C即为拟合参数,也就是调用函数lsqcurvefit应该返回的数
特别提醒,有两点很重要:
(1) 所选拟合函数的形式是否适合相应的数据;
(2) 拟合参数的初值要合理选择。
下面是一个简单的例子,写了详细的注释,对照看看会明白的
% 生成测试数据
% 真实的函数关系:y = A + B*exp(C*t)
% 为使效果更真实,函数值上加入适当噪声得到测试数据
t=0:0.1:2;
y=4-3*exp(-5*t);
y1=y+0.1*randn(size(y));
% 定义拟合函数的形式,这里使用inline函数
% 在MATLAB 7.0以上也可以使用匿名函数
% 如果函数形式比较复杂,应考虑编写函数型M文件
f=inline('x(1)+x(2)*exp(x(3)*t)','x','t');
% 调用拟合函数,返回的x即为想要拟合的参数[A B C]
% 注意初值的选择,例如初值选[0 0 0]得不到理想的结果
x0=[1 -1 -1];
x=lsqcurvefit(f,x0,t,y);
% 把原始函数、测试数据、拟合函数画在同一张图上对照效果
plot(t,y,'-',t,y1,'.',t,f(x,t),'ro')
legend('真实函数','测试数据','拟合函数',0)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询