最近笔者尝试采用在MATLAB中通过分段三次样条函数拟合有限元模型提取得到的离散应力数据,以实现对离散应力数据的解析化。然而,MATLAB自带的拟合工具箱似乎只能够采用整体函数来拟合数据,如果采用的拟合函数的变化趋势与拟合数据存在较大偏差,则可能无法取得较好的拟合效果。
为此,笔者基于MATLAB的App Designer编制了一个简单的界面小程序,通过该程序,可以实现用分段线性函数或分段三次样条函数来拟合离散数据。该拟合程序采用的理论基础可以参见《基于广义逆矩阵理论的分段线性拟合方法》。
分段样条曲线拟合工具(Piecewise Spline Fitting)的界面如图1所示。
图1 分段样条曲线拟合工具界面
图中,Fitting Setting面板用于设置拟合数据点和拟合参数,Fitting Data为拟合数据对,可以通过Import按钮导入定义拟合数据对的数据文件,目前支持的数据文件格式包括文本文件(.txt)和Excel文件(.xlsx)等。数据的列数必须为两行,行数必须超过一行,否则程序将给出错误提示。Add按钮和Delete按钮可以添加和删除表格中的数据,Clear按钮可以清除表格中的数据。Plot按钮可以绘制表中的拟合数据。
Type按钮组用于设置采用的拟合类型,Piecewise linear代表执行分段线性拟合,Piecewise spline代表执行分段三次样条拟合。Number of segments用于指定函数的分段数量,程序将采用优化算法,自动计算最优的分段节点位置。
点击Calculate按钮后,程序将执行拟合计算,并将拟合结果显示于表格中。表格中的P3~P0分别代表三次多项式的系数,BoundLower和Bound Upper分别代表分段区间的下限和上限。Export按钮用于导出拟合结果为数据文件,Plot按钮用于绘制拟合曲线和拟合数据点。同时,RMSE Value将给出拟合结果的均方根值,其数值越小,则代表拟合效果越好。
由于本程序采用MATLAB R2023的App Designer编写,对于低版本的MATLAB可能不支持。此外,由于采用了全局优化算法,因此必须保证MATLAB安装了GlobalOptimization Toolbox。