matlab拟合直线代码_matlab最小二乘法拟合直线

matlab拟合直线代码_matlab最小二乘法拟合直线,第1张

matlab拟合直线代码_matlab最小二乘法拟合直线 今天我们一起学习一下参数拟合问题,这一问题在我们日常学习生活中是很常见的。

在初中的时候我们经常碰到这样一个问题,已知两个点(x1,y1)和(x2,y2)让我们求出一条过这两点的曲线y=kx+b。

在这个问题中我们碰到了两个参数k 和b的求解问题,我们回顾一下初中的解决方案:1.首先我们将两个点带入,得到y1=k*x1+by2=k*x2+b2.我们通过求解方程得出k 和b这一个思路完整的叙述了参数拟合的整个过程,事实上,对于该问题我们只是希望的找到一条直线,使他到这两个点的距离误差最短。

通过建立评价函数对各参数求偏导令其为零的可得到所需要的两个方程y1=k*x1+by2=k*x2+b在高中我们计算圆参数,椭圆参数以及回归求系数等这些均是一个典型的参数拟合问题,再到大学项目中的系统参数辨识以及复杂函数拟合等对于这一问题 我们matlab 怎么解决那我们给出两种思路一.通过给定的函数直接参数拟合%已知函数形式—多项式等给定的简单函数形式x=[1 3 5 8 9];y=[2 5 7 10 13];%已知函数形式为y=k*x+bcoeff=polyfit(x,y,1);k=coeff(1);b=coeff(2);二.通过设置目标函数求解—原理就是优化算法迭代求解目标函数:function err=objfun(x,y,p)%目标函数%找到一条曲线是的到目标曲线最小 err=sum((y-yi)^2)err1=p(1)*x+p(2)-y;err=err1*err1′;end主程序调用目标函数x=[1 3 5 8 9];y=[2 5 7 10 13];loss=@(p)objfun(x,y,p) %带入已有参数p_initial=[0 0];%定义优化工具箱迭代初值[p,fval]=fmincon(loss,p_initial);k1=p(1);b1=p(2);当然对于复杂的问题,方法二问题解答精度受限于初值的影响,通常可通过设置数据集穷举参数作为初值或者定义目标函数优化参数初值进一步解决拟合问题对于日常科研过程中,要主要识别拟合问题:1. 在信号处理方面,给出传递函数让你求参数:该问题只需要将传递函数进行变换成差分形式,再结合方式2求解。

2. 给出已知数据,通过该数据进行预测,实际上该问题也可以从拟合的角度出发找到当前数据最接近的函数形式,在通过该形式的函数带入全新的数值。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/657273.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-18
下一篇 2022-04-18

发表评论

登录后才能评论

评论列表(0条)

保存