【问题标题】:How to create a mathematical model out of my data in MATLAB?如何在 MATLAB 中根据我的数据创建数学模型?
【发布时间】:2018-10-04 05:16:12
【问题描述】:

我有两组数据xy,它们给了我另一组数据z。 这意味着,有一个函数f(x,y)=z。 如何在 MATLAB 中对此进行建模?我应该选择什么样的模型? 如何确定函数f(x,y)

【问题讨论】:

  • 您至少应该知道您要拟合的函数类型(例如:线性、二次、指数、正弦等),然后您可以使用lsqcurvefit确定函数的系数。为什么不能直接找到整个函数?因为您的数据可以通过多个函数拟合(例如使用傅立叶级数,您几乎可以拟合每个连续函数)
  • 如果你愿意发布一个数据链接,我将通过我的在线曲线和曲面拟合网站的“函数查找器”运行它,看看它会出现什么 az = f(x,y ) 模型。
  • f = @(x,y) mean(zdata(:));。就问题中提供的信息而言,这是您数据的完美模型。描述您对其性能的任何观察可能有助于确定您对模型的真正目标。
  • @obchardon 直接找到整个函数是什么意思?我的问题是我不知道函数的类型。所以,我不能使用lsqcurvefit

标签: matlab math regression modeling


【解决方案1】:

长话短说:您所要求的根本不可能。

为什么?因为你的data z 可以被多个函数f(x,y) 适配。 即使一个函数比另一个函数更适合您的data z,也不一定意味着如果您有新数据xy,该函数就是能够适合z 的模型。

你有什么选择:

  • 您可以通过

    拟合您的数据
      1. 尝试应用大量众所周知的函数/模型,看看哪种模型最适合您的数据(在这里您可以使用lsqcurvefit 调整每个函数/模型的常数
      1. 尝试应用泰勒级数或傅立叶级数。
  • 您开始了解变量xy 如何相互作用以产生z,以便开发您自己的模型,该模型将基于物理/经济/...假设。

我认为您将“拟合数据”与“获得可以完全解释您的数据的完美模型”混淆了

【讨论】:

  • 据我了解,您的选项 1 不适用于众所周知的非线性方程,只能应用于线性方程。这是正确的吗?
  • 我从来没有说过它只能用于线性方程?我会吗?
  • 顺便说一句,我已经尝试过 zunzun 拟合引擎 ;) 真的很棒!但在这种情况下,当 OP 不知道哪个模型决定了他的结果时,使用这种技术可能会很危险,因为它可能导致选择错误的模型,因为这些特定数据与特定方程非常吻合。
  • 在任何“方程搜索”或“函数查找器”使用中,数据中的实际基础关系未知,最佳解决方案是具有最少参数的解决方案。我的网站的函数查找器允许使用具有少量参数的方程开始搜索,然后增加搜索中的参数计数。至少,该站点可能会就数据中的未知关系提出一个可能的思考方向。顺便说一句,该网站是开源的,每个页面底部都有源代码链接。
猜你喜欢
  • 2023-01-03
  • 1970-01-01
  • 1970-01-01
  • 2015-08-16
  • 1970-01-01
  • 2023-03-09
  • 2014-06-25
  • 2013-11-03
  • 1970-01-01
相关资源
最近更新 更多