如何用matlab的CurveFitting拟合复杂特定公式的二维数据

今天分享一个如何用CurveFitting拟合一个由五万多个数据组成的特定公式的曲线
首先打开一个在桌面上名为laohua.xlsxexcel列表(文件所在位置很重要,放在桌面比较方便),它里面有两组数据分别为x和y,它们的数据长度都是57768,可见数据量的庞大,接下来我们要在matlab上按照一个特定公式y=alog(bx + 1) + c来拟合这条曲线。
在这里插入图片描述

在这里插入图片描述

首先要将这个二维数据导入到matlab中,导入代码如下,在matlab上可以生成图片观察

x=xlsread('C:\Users\Administrator\Desktop\laohua.xlsx','A1:A57768');%从桌面文件excle中读取x轴数据
y=xlsread('C:\Users\Administrator\Desktop\laohua.xlsx','B1:B57768');%从桌面文件excle中读取y轴数据
x1=1:1:57768;%新建一个横坐标
y1=smooth(y,10000);%平滑滤波
plot(x,y,'r*',x1,y1,'b-');

红色-噪声曲线,蓝色-滤波后曲线

注意这里使用了平滑滤波。
接下来依次点击-APP-CurveFitting
在这里插入图片描述

由于有些图形过于复杂,在没有设置初始值的情况下直接使用CurveFitting会出现下面数据太过复杂报错的现象,所以我总结出一个策略,先用matlab平滑滤波,用滤波后的图形进行拟合,smooth(y1,10000)函数第二个参数取值越大曲线越光滑,光滑的曲线更容易拟合,一般来说,数据量较小的曲线直接采用滤波后曲线进行拟合就可以了,但复杂曲线由于数据量庞大,简单的滤波也不能拟合出来。
对于数据量庞大的复杂曲线来说,我们用滤波后曲线拟合的目的是得到一些初始参数,有了初始参数后在原图形上再进行拟合,成功几率将大大增加。
1.在Xdata和Ydata中选择滤波后的图形x1,y1。
2.选择CustomEquation后输入我们想要的特定公式

在这里插入图片描述
我们在结果这个地方发现系统依然报错,没有给出我们的公式,这是因为尽管我们已经平滑了曲线,但是由于没有设置初始参数,5万多个数据依然过于庞大,数据过于复杂导致的拟合失败。
解决办法:
数据量太大不能拟合,那我们就截取一些散点来减少数据量进行拟合吧,这样做的目的是找一些初始参数方便matlab做更简单的工作。
我们稍微变一下刚才的代码

x=xlsread('C:\Users\Administrator\Desktop\laohua.xlsx','A1:A57768');
  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值