今天,古哥带来如何使用Matlab快速拟合实验数据,得到这些数据所遵循的变换函数。这种方式,一般你需要大概知道自己的实验数据所可能遵循的函数规律。比如是高斯、n次函数等常见函数的曲线自动拟合,甚至可以使用插值方式,自动拟合数据所可能对应的函数规律。
数据来源
既然要曲线拟合,即拟合你的实验数据,当然需要数据才能拟合。
假如是离散数据,数据量不太多,就可以直接在matlab 命令行或者m文件中手动输入数据。
如果数据在excel中,可以直接使用Matlab导入数据,然后将数据的每一列分别赋值给一个变量即可,下面我们分别举例说明如何导入这些数据。
数据量很少,直接在命令行或者m文件中手动输入,命令如下:
%% 数据导入
clc % 清理命令行窗口
clear % 清理工作区数据
x=[1 2 3 4 5 6];
y1=[1 2 3 4 5 6];
y2=[2 5 10 17 26 37];
y3=[2 96 972 5120 18750 54432];
y4=[1 4 5 8 20 16];
数据是我随便写的,主要是演示下Matlab曲线拟合工具的使用方法。
如果数据存在csv文件中,我们可以直接用函数读取,这在上一篇关于Matlab的文章中已经有过相干描述,这里就不再赘述了。
大体上如下:
%% 数据导入
M = csvread('*.csv', 0,0);
x=M(:,1);
y1=M(:,2);
y2=M(:,3);
y3=M(:,4);
y4=M(:,5);
拟合工具调用
这就很简单了,你可以在Matlab命令行窗口中输入cftool直接打开拟合工具,也可以在m文件结尾输入cftool来打开拟合工具:
cftool
打开的窗口如下图所示:
接下来就是导入变量了,上图左侧可以看到x data、y data等,这些就是数据导入。前提条件是,你已经运行过上面的数据导入,即数据已经导入到Matlab工作区,才可以在这里导入。也就是,这里是从工作区读取数据。接着,就是拟合公式的选择了,我们使用y3数据和x来拟合,选择一元四次方程拟合(原始数据是六元一次方程产生的,但由于我只有6个数据,无法拟合六元一次方程,要7个数据才可以)。左侧Results区域会直接产生拟合结果,如下图所示:
Matlab支持很多拟合方式,一元多次方程、高斯、以及一些经验公式,还可以自定义函数去拟合,看看下面三张图,你就知道有多强大了。
看完后,你会发现怎么这组数据好多曲线看着都拟合的不错,主要是因为数据量太少,才6组数据。而在实际应用中,往往有很多数据,这样拟合到的函数就会很准确。同时,在实际拟合过程中,你的数据会有误差,但这种情况,往往你会知道数据所遵循的物理规律,所以这种拟合方式,可以很快的帮你得到函数的参数。
原创文章,作者:古哥,转载需经过作者授权同意,并附上原文链接:https://iymark.com/articles/161.html