使用Matlab实现离散数据的曲线拟合

()

今天,古哥带来如何使用Matlab快速拟合实验数据,得到这些数据所遵循的变换函数。这种方式,一般你需要大概知道自己的实验数据所可能遵循的函数规律。比如是高斯、n次函数等常见函数的曲线自动拟合,甚至可以使用插值方式,自动拟合数据所可能对应的函数规律。

使用Matlab实现离散数据的曲线拟合

数据来源

既然要曲线拟合,即拟合你的实验数据,当然需要数据才能拟合。

假如是离散数据,数据量不太多,就可以直接在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曲线拟合工具的使用方法。

使用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

打开的窗口如下图所示:

使用Matlab实现离散数据的曲线拟合

接下来就是导入变量了,上图左侧可以看到x data、y data等,这些就是数据导入。前提条件是,你已经运行过上面的数据导入,即数据已经导入到Matlab工作区,才可以在这里导入。也就是,这里是从工作区读取数据。接着,就是拟合公式的选择了,我们使用y3数据和x来拟合,选择一元四次方程拟合(原始数据是六元一次方程产生的,但由于我只有6个数据,无法拟合六元一次方程,要7个数据才可以)。左侧Results区域会直接产生拟合结果,如下图所示:

使用Matlab实现离散数据的曲线拟合

Matlab支持很多拟合方式,一元多次方程、高斯、以及一些经验公式,还可以自定义函数去拟合,看看下面三张图,你就知道有多强大了。

看完后,你会发现怎么这组数据好多曲线看着都拟合的不错,主要是因为数据量太少,才6组数据。而在实际应用中,往往有很多数据,这样拟合到的函数就会很准确。同时,在实际拟合过程中,你的数据会有误差,但这种情况,往往你会知道数据所遵循的物理规律,所以这种拟合方式,可以很快的帮你得到函数的参数。

共计人评分,平均

到目前为止还没有投票~

很抱歉,这篇文章对您没有用!

让我们改善这篇文章!

告诉我们我们如何改善这篇文章?

原创文章,作者:古哥,如若转载,请注明出处:https://iymark.com/program/matlab-cftool-data.html

发表评论

登录后才能评论
分享本页
返回顶部