matlab中lsqcurvefit怎么用
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/07/18 10:13:23
matlab中lsqcurvefit怎么用
我的数据如下,想求解一个反比例函数,怎么用lsqcurvefit实现啊?
x=1:5;
y=[1 0.83 0.75 0.71 0.68];
plot(x,y)
f=@(c,x)1./(c(1)*x+c(2));
c0=[0.5 -0.1];
[c,resnorm]=lsqcurvefit(f,c0,x,y);
其运行结果为:
Optimization terminated:relative function value
changing by less than OPTIONS.TolFun.
请大神指教.
我的数据如下,想求解一个反比例函数,怎么用lsqcurvefit实现啊?
x=1:5;
y=[1 0.83 0.75 0.71 0.68];
plot(x,y)
f=@(c,x)1./(c(1)*x+c(2));
c0=[0.5 -0.1];
[c,resnorm]=lsqcurvefit(f,c0,x,y);
其运行结果为:
Optimization terminated:relative function value
changing by less than OPTIONS.TolFun.
请大神指教.
求解曲线拟合问题的一般过程是,先通过观察曲线形状大致确定函数的形式,然后对函数的参数有个大概的估计作为初值,拟合后画出曲线来看看效果,如果效果不理想,就考虑修改初值或函数的形式再试.有时候需要经过多次尝试才能得到满意的结果.
需要特别注意以下两点:
1、与拟合函数的形式有关,如果函数形式选择不当,不可能得到理想的结果.
例如,对于反比例函数,比较一般的情况应该考虑取1/(c1*x+c2)+c3.
2、拟合问题与初值关系很大,不是随便指定什么初值都行的通的.
例如,对于本题,初值如果选择[0.5 -0.1 1],得到的结果就不太理想;但取[1 1 1]得到的结果就比较满意.
代码及拟合结果如下:
x=1:5;
y=[1 0.83 0.75 0.71 0.68];
f=@(c,x)1./(c(1)*x+c(2))+c(3);
c0=[1 1 1];
[c,resnorm]=lsqcurvefit(f,c0,x,y);
plot(x,y,'.-',x,f(c,x),'r:x')
legend('原始数据','拟合数据')
![](http://img.wesiedu.com/upload/5/26/526f46a33fd63ed4896253440b59fd57.jpg)
需要特别注意以下两点:
1、与拟合函数的形式有关,如果函数形式选择不当,不可能得到理想的结果.
例如,对于反比例函数,比较一般的情况应该考虑取1/(c1*x+c2)+c3.
2、拟合问题与初值关系很大,不是随便指定什么初值都行的通的.
例如,对于本题,初值如果选择[0.5 -0.1 1],得到的结果就不太理想;但取[1 1 1]得到的结果就比较满意.
代码及拟合结果如下:
x=1:5;
y=[1 0.83 0.75 0.71 0.68];
f=@(c,x)1./(c(1)*x+c(2))+c(3);
c0=[1 1 1];
[c,resnorm]=lsqcurvefit(f,c0,x,y);
plot(x,y,'.-',x,f(c,x),'r:x')
legend('原始数据','拟合数据')
![](http://img.wesiedu.com/upload/5/26/526f46a33fd63ed4896253440b59fd57.jpg)
matlab中lsqcurvefit函数报错问题
lsqcurvefit在matlab中拟合函数问题
matlab中高斯拟合函数lsqcurvefit初始参数怎么设置
关于matlab中lsqcurvefit函数应用出错的问题
lsqcurvefit在matlab中拟合多元函数问题
matlab中lsqcurvefit函数拟合问题,有懂的请帮下忙,
matlab中lsqcurvefit的初始解向量什么意思
matlab中使用lsqcurvefit函数拟合老是报错,
matlab lsqcurvefit 函数的使用
如何使用matlab中的lsqcurvefit函数
matlab的lsqcurvefit函数做幂函数拟合出错
matlab中syms怎么用?