我有一个3D网格/表面(我可能使用这个术语错了),即我有x,y和z的数据,用于
z = f(x,y)
我希望MATLAB将三次(或其他)样条曲线拟合到这个数据,然后我想提取实际的数学样条函数,所以我可以简单地自己编写代数函数,
z = my_mathematical_spline_curve_function(x,y)
而不是使用sfit对象。我知道我可以通过使用MATLAB的拟合工具,然后提取系数,用多项式曲线拟合来做到这一点。我希望做同样的事情,但我需要样条;多项式曲线不能很好地拟合数据。这可以在MATLAB中完成吗?
答案 0 :(得分:0)
我有一个类似的问题,虽然在2d,但问题仍然存在。由于样条函数是f(t)而不是f(x)而t没有映射到x(至少可以看到任何简单的方法),问题很难解决。我听说过这些点的采样和插值是最简单的解决方案(以及我现在计划实现的),尽管其他人已经讨论过找到每个分段函数的根来估计三次参数 - 尽管我并不完全确定这是多么可行。我看到的问题是这些段实际上不需要是函数,因此f(x)实际上并不“存在”,因为t是点之间的段距离的缩放度量,这就是f(t)工作和catmull的原因例如,rom splines(我正在使用的那个)可以映射圆形和形状。
我可能做得很差,因为我当然不是专家,但我自己也遇到过这个问题所以我想你会找到解决这个问题的潜在方法。
在2d上也可以看到这个主题,但在3d中可能同样适用:Transform 2d spline function f(t) into f(x)