专栏导读
- 作者简介:工学博士,高级工程师,专注于工业软件算法研究
- 本文已收录于专栏:《复杂函数拟合案例分享 》本专栏旨在提供 1.以案例 的形式讲解各类复杂函数拟合的程序实现方法,并提供所有案例完整源码 ;2.复杂函数 包含:分段函数、积分函数、常/偏微分函数、隐函数、方程组、级数函数、多参数函数;3.拟合工具 是Matlab种的lsqcurvefit, nlinfit,神经网络,ga遗传算法,MultiStart全局优化算法等;4.拟合案例均源自科研实践 中遇到的案例,文本教程+视频教程+案例源码 ,三向强化学习!提高大家解决实际数学建模的问题。
- 【视频课程地址 】https://www.bilibili.com/video/BV1bQ4y1U7mu/?spm_id_from=333.337.search-card.all.click
- 欢迎订阅专栏,订阅用户可私聊进入Matlab编程交流群 (知识交流、问题解答),并获赠丰厚的Matlab相关学习资料 (教材、源码、视频课)
- 专栏订阅地址: https://blog.csdn.net/u010542847/category_12576325.html
【总体简介】💻🔍
你将获得: 分段函数拟合matlab源码 (三种方法)
获取链接: Matlab实现分段函数拟合(分段点未知)| 源码分享 | 视频教程 | 三种分段函数拟合方法
本代码是针对一个分段函数中的参数进行拟合,使用的拟合工具是matlab中的lsqcurvefit或nlinfit。具体函数形式和待拟合参数如下所示。该案例的特殊之处在于分段点也是待拟合参数 ,因此如何自定义拟合函数,实现分段点的拟合是本案例最大的难点。本代码提供了三种分段函数的拟合方法:1.是用if......else条件语句定义的分段函数;2.另一种是通过(x0>a1)*f1+(x0<=a1)*f2这种形式定义的分段函数;3.第三种是通过sub1=find(x0<=a1);X1=x0(sub1);y(sub1)=f1;sub2=find(x0>a1);X2=x0(sub2);y(sub2)=f2实现分段函数的定义。三种方法原则上都没有错误,但是拟合的效果各有差别,最终我们选取拟合效果最好的第三种方法。
要求:各参数在规范中取值如下表,拟合出的参数值尽量和规范的参数值不要相差太多。
规范曲线如下图所示,做出的曲线符合下图的趋势,分段点出尽量保持平滑。
最终我们的拟合效果如下,可见整体分段点处还是比较平滑的
【代码截图】
【视频课程】
本案例已收录至b站的《Matlab复杂函数非线性拟合》专题课程【Matlab复杂函数非线性拟合专题/lsqcurvefit/nlinfit/积分函数、微分函数、隐函数、方程组、最小二乘法/机器学习/神经网络/编程/人工智能】 Matlab复杂函数非线性拟合专题/lsqcurvefit/nlinfit/积分函数、微分函数、隐函数、方程组、最小二乘法/机器学习/神经网络/编程/人工智能_哔哩哔哩_bilibili