【问题标题】:matlab: find interpolation function in 3dmatlab:在3d中找到插值函数
【发布时间】:2016-08-17 02:12:48
【问题描述】:

我得到了函数 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) = ...,其中的点表示最适合上述数据的函数,并且是“封闭形式”表达式。例如,如果它在x1 中最适合线性,在x2 中是二次方,在x3 中是常数,那么f 将类似于f(x1,x2,x3) = a*x1 + b*x2^2 +ca, b, c 是固定数字。所以基本上有两件事我想解决:

  1. f如何取决于数据,即一般表达式(如上a*x1 + b*x2^2 +c

  2. 获取a,b,c 的最佳值以拟合给定数据。

matlab 有没有办法解决这个/这两个问题,以便它根据x1, x2, x3f 计算一个好的函数表达式?如果不是(因为我猜 1. 很难解决?!)是否有可能“假设”f 具有给定的形式(如f(x1,x2,x3) = a*x1^2 + b*x2^2 +c*x3^2 或其他),然后找到适合此的最佳值用给定的数据形成表格?

现在您也看到我不能使用 interp3(至少我猜是这样),因为我没有这种“封闭形式”表达式。

【问题讨论】:

  • 非常感谢。我看了看,但显然它仅适用于 1 或 2 维:“要拟合的数据,指定为具有一列(曲线拟合)或两列(曲面拟合)的矩阵”。此外,在“另见”选项卡中没有提到 3d?!看起来“polyfit”仅适用于 1d,不是吗?
  • 但这看起来很有希望:de.mathworks.com/matlabcentral/newsreader/view_thread/116762 至少 2. 在我的问题中。 1.我可能必须自己处理?

标签: matlab interpolation


【解决方案1】:

据我了解,您需要一个几乎可以描述您的 3D 数据的数学表达式。可能对您来说最好的解决方案是 MATLAB 的曲面拟合工具。使用sftool 指令打开曲面工具。然后插入您的数据,X, Y, Z。然后从窗口中心的列表中选择Custom Equation,然后插入您想要的拟合函数,然后只需单击拟合按钮。如果没有任何问题,自定义函数的系数(您的a,b,c)将出现在窗口左侧的Results 部分。

【讨论】:

  • 问题是我得到了数据X1, X2, X3, F,即多了一个维度。所以我想要一个数学表达式,它几乎可以描述 4D 数据:3D 输入和 1D 输出。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
  • 2014-09-06
  • 2016-05-28
  • 2023-03-07
  • 2014-09-06
相关资源
最近更新 更多