您的位置 首页 > 数码极客

matlab如何做数据拟合MATLAB数据拟合工具箱!

今天我们一起学习一下参数拟合问题,这一问题在我们日常学习生活中是很常见的。在初中的时候我们经常碰到这样一个问题,已知两个点(x1,y1)和(x2,y2)让我们求出一条过这两点的曲线y=kx+b。在这个问题中我们碰到了两个参数k 和b的求解问题,我们回顾一下初中的解决方案:

1.首先我们将两个点带入,得到

y1=k*x1+b

y2=k*x2+b

2.我们通过求解方程得出k 和b

这一个思路完整的叙述了参数拟合的整个过程,事实上,对于该问题我们只是希望的找到一条直线,使他到这两个点的距离误差最短。通过建立评价函数对各参数求偏导令其为零的可得到所需要的两个方程

y1=k*x1+b

y2=k*x2+b

在高中我们计算圆参数,椭圆参数以及回归求系数等这些均是一个典型的参数拟合问题,再到大学项目中的系统参数辨识以及复杂函数拟合等

对于这一问题 我们matlab 怎么解决那

我们给出两种思路

一.通过给定的函数直接参数拟合

%已知函数形式---多项式等给定的简单函数形式

x=[1 3 5 8 9];

y=[2 5 7 10 13];

%已知函数形式为y=k*x+b

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

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“matlab如何做数据拟合,MATLAB数据拟合工具箱,matlab做拟合直线,matlab如何利用数据求函数,matlab数据拟合曲线,matlab导入数据后”边界阅读