MATLAB和Origin批量拟合非线性函数细节对比

前言:需要对多组数据同时进行非线性拟合加快数据处理速度,MATLAB和Origin都可以完成这项目标,但需要借助速度和精度两个指标综合衡量选择哪种方式进行批量的非线性拟合。

MATLAB批量拟合方法

对一组数据进行非线性拟合时,可以用多种非线性函数进行拟合,这里选择lsqcurvefit函数。对标Origin拟合条件,设置

options = optimoptions('lsqcurvefit','Algorithm','levenberg-marquardt','MaxIter',500, 'TolFun', 1e-9); 
b0=[0; 0; 0.001; 0; 0.01; 0];  % 初值
L=[0; 0; 0.001; 0; 0.01; 0]; % 下界
U=[0.01; 0.01; 0.01; 0.01; 0.1; 0.01]; % 上界

当对多组数据同时拟合多条非线性曲线时,最初想过使用MATLAB的矩阵运算优势进行批量快速拟合,但似乎不太可行,还是只能使用for循环,但传统的for循环迭代时间长,故使用了开启并行池的方法加速拟合速度,效果是显而易见的,速度上远超Origin,精度和Origin几乎相当。开启并行池的方法为

parfor i=1:length(x(1,:))
    [b(:,i),~]=lsqcurvefit(fun,b0,x(:,i),y(:,i),L,U,options);
end

Origin批量拟合方法

1. 数据需要按照x-y1-y2等形式粘贴到book中,只有一个x轴(MATLAB不受此约束);

2. 以散点图形式画图;

3. 分析--拟合--非线性拟合;

4. 设置选项:(右边)函数选择(选择自己要拟合的函数)--(左边)数据选择--输入数据--添加没被选中的数据集--多数据拟合模式(全局拟合);

5. 参数选项:点击需要共享的参数(也可以不点击);

6. 拟合。

该方式在共享参数多的时候速度较慢,共享参数少的时候速度明显加快,但是还是不如MATLAB的并行运算。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值