前言
在命令行窗口中完成插值与拟合
一、插值与拟合
插值:在离散数据的基础上补插连续函数,使得这条连续曲线通过全部给定的离散数据点。插值是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,估算出函数在其他点处的近似值。
拟合:拟合是指已知某函数的若干离散函数值,通过调整该函数中若干待定系数,使得该函数与已知点集的方差最小。
二、使用步骤
1.插值
1.1对某个点插值
一个简单的例子
这里有一组速度随时间变化的数据:
x(时间) | 0 | 3 | 5 | 7 | 9 | 11 | 12 | 13 | 14 | 15 |
---|---|---|---|---|---|---|---|---|---|---|
y(速度) | 0 | 1.2 | 1.7 | 2 | 2.1 | 2 | 1.8 | 1.2 | 1 | 1.6 |
如果我们想知道当时间为8.5s时,速度是多少?
先导入数据到matlab,我这里直接在命令行窗口中创建一个x、y的向量,把数据直接复制进去。
>> x=[]
x =
[]
>> y=[]
y =
[]
如图,x、y向量被创建。
分别将时间数据和速度数据复制到x、y中。
把8.5s对应的数据求出来:
>> interp1(x,y,8.5,'spline')
ans =
2.0959
对于第四个参数,对应的是插值方法,插值的方法有
1.2对一个范围插值
即对向量中的每一项进行插值,对与多个缺失数据可进行补全。如相对x中0~15这个区间我们取一万个点。
>> x1=linspace(1,15,10000);
>> y1=interp1(x,y,x1,'spline');
>> plot(x,y)
>> hold on
>> plot(x1,y1)
在y中的数据已变成10000个。
2.拟合
在命令行窗口中输入:>> cftool
可得到曲线拟合工具箱。
选择输入的数据:
选择拟合的类型。这里选择三次多项式拟合:
在窗口的左边可以看到拟合的表达式。
当拟合完成后,可以将数据邮件保存到工作区。
工作区会生成一个模型文件。
将其直接拖拽到命令行窗口
>> fittedmodel(8.5)
ans =
1.9885
即可得到8.5s时的速度。
参考:https://www.bilibili.com/video/BV1uR4y1p73L?spm_id_from=333.1007.top_right_bar_window_custom_collection.content.click