参考:matlab拟合空间曲线。散点拟合三维曲线_matlab三维曲线拟合函数-CSDN博客
第一步:利用1stOpt初步拟合
软件下载安装参考:关于1stOpt安装与使用 - 哔哩哔哩
使用教程:利用1stOpt进行方程拟合与参数优化-CSDN博客
第二步:将初步拟合得到的系数导入Matlab中,利用lsqcurvefit函数(用最小二乘求解非线性曲线拟合问题)再次拟合
clc;clear;
data = load('data.txt');%三维曲线坐标点数据
zs = data(:, 1);
rs = data(:, 2);
ts = data(:, 3);
plot3(zs,rs,ts)
xlabel('z')
ylabel('r')
zlabel('t')
hold on
%拟合t=f(z,r)函数
%1stOpt所得系数值:
a1=0.230719377541946;
a2=-0.000613447662708129;
a3=0.00517748706055398;
a4=0.194139845493105;
a5=-0.00575235286119679;
a6=-0.00408923752540963;
X=[zs rs];% n行2列
Y=ts;
a0=[a1,a2,a3,a4,a5,a6];
fun=@(a,X)a(1)+a(2)*X(:,1)+a(3)*X(:,1).^2+a(4)*X(:,2)+a(5)*X(:,2).^2+a(6)*X(:,1).*X(:,2);
a=lsqcurvefit(fun,a0,X,Y);
ti=a(1)+a(2)*X(:,1)+a(3)*X(:,1).^2+a(4)*X(:,2)+a(5)*X(:,2).^2+a(6)*X(:,1).*X(:,2);
plot3(zs,rs,ti,'.')
拟合结果: