我得到了函数f的数据点:R ^ 3-> R,即我得到 x1, x2, x3
并且对于 x1, x2, x3
的不同值的每个组合,我得到 f
的值 . 例如
x1 = 1:10, x2 = 1:6, x3 = 1:8
然后我得到了 f
的10 * 6 * 8 = 480个值 .
我知道有一个函数 interp3
在3d空间中进行插值,但仅适用于给定的一组查询点 .
现在我的问题:我希望函数 f
有某种通用表达式,即 f(x1,x2,x3) = ...
,其中点表示最适合上述数据的函数,并且是"closed form"表达式 . 例如,如果 x1
中的最佳线性, x2
中的二次和 x3
中的常量,那么 f
将类似于 f(x1,x2,x3) = a*x1 + b*x2^2 +c
和 a, b, c
是固定数字 . 所以基本上有两件事我想解决:
-
f
如何取决于数据,即一般表达式(如上所述a*x1 + b*x2^2 +c
) -
获取
a,b,c
的最佳值以适合给定数据 .
有没有办法matlab可以解决这个/这两个问题/ s,这样它根据 x1, x2, x3
为 f
计算一个好的函数表达式?如果没有(因为我猜1.很难解决?!)是否有可能'assume' f
有一个给定的形式(如 f(x1,x2,x3) = a*x1^2 + b*x2^2 +c*x3^2
或其他),然后找到适合这个形式的最佳值与给定的数据?
另外现在你看到我不能使用interp3(至少我猜是这样)因为我没有这个'封闭形式'表达式 .
1 回答
据我所知,你想要一个几乎描述你的3D数据的数学表达式 . 可能最适合您的解决方案是MATLAB的表面拟合工具 . 使用
sftool
指令打开表面工具 . 然后插入您的数据X, Y, Z
. 然后从窗口中心的列表中选择Custom Equation
,然后插入所需的拟合函数,然后只需单击拟合按钮 . 如果没有出错,自定义函数的系数(您的a,b,c
)将显示在Results
部分的窗口左侧 .