
matlab的lsqnonlin,fit都是用于拟合函数表达式系数的函数,lsqnonlin函数主要是非线性最小二乘拟合,而fit 函数主要用于标准数学模型的拟合。拟合精度一般差不多。
可以用fit函数进行拟合,你可以查看帮助文件了解fit函数的具体用法。我举个简单的例子:
已知有一组数据:
x=[1 2 3 4 5 6 7 8 9 10];y=[01411 -02794 04121 -05366 06503 -07510 08367 -09056 09564 -09880]
然后对其进行拟合,你合成y=asin(bx)
代码如下:
mymodel=fittype('asin(bx)');
opts=fitoptions(mymodel);
[fit1,gof1,out1]=fit(x',y',mymodel,opts)
然后会显示结果对结果进行检查发现,系数值偏差很大,拟合情况很不理想,你可以通过gof1第一项察看,他是拟合后与拟合前y值差的平方和。
然后你可以调节待求系数的上下限,用optslower=[0 2];optsupper=[2 4];这两个命令,[]里的值按判断设定,使拟合更合理。
nlinfit与lsqcurvefit ,lsqnonlin,fit都是matlab的基本拟合函数,nlinfit,lsqcurvefit 是比较常用的拟合函数,可以拟合线性函数和非线性函数的系数,大部分数学模型拟合基本能满足,而lsqnonlin,fit适应于特别的数学模型拟合。拟合效果都是一样的。
可以用fit函数进行拟合,你可以查看帮助文件了解fit函数的具体用法。我举个简单的例子:
已知有一组数据:
x=[12345678910];y=[01411-0279404121-0536606503-0751008367-0905609564-09880]
然后对其进行拟合,你合成y=asin(bx)
代码如下:
mymodel=fittype('asin(bx)');
opts=fitoptions(mymodel);
[fit1,gof1,out1]=fit(x',y',mymodel,opts)
扩展资料:
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷的多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。
MATLAB开发环境是一套方便用户使用的MATLAB函数和文件工具集,其中许多工具是图形化用户接口。它是一个集成的 用户工作空间,允许用户输入输出数据,并提供了M文件的集成编译和调试环境,包括MATLAB桌面、命令窗口、M文件编辑调试器。
-MATLAB
-sin函数
fit 返回的拟合函数是把自变量x进行规范化的(normalized),也就是说,
ff(x) = ax^3 + bx^2 + cx + d中的x,并不是你的原始数据,而是经过规范化的数据,即 (原始数据-均值)/ 标准差,其中均值和标准差可以在图中看到。
事实上,用fit拟合得到的结果为cfit对象,计算函数值时不应该用题主的方式,而应该用feval:
feval(ff,500)欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)