【问题标题】:Calculating transfer function coefficients计算传递函数系数
【发布时间】:2012-11-19 17:16:47
【问题描述】:

我推导出了s域中弹簧质量系统组合的传递函数,其形式为

G = (as*s + bs +c) / (ps + q)

我有以位移为输入,力为输出的测量数据,我知道频率和采样率。

如何使用 MATLAB 计算常量 a,b,c,p and q 的值?

【问题讨论】:

  • 您确定这是您的系统型号吗?您导出的模型是非因果的,这意味着它实际上不存在。假设您推导出因果模型(例如 1/G),您可以使用 MATLAB System Identification UI。最简单的方法是估计一个流程模型,您可以从那里开始。
  • 顺便说一下非因果系统的意思;系统的输出取决于未来的输入。从而使其无法在实践中存在。
  • 非常感谢您的回复。认为我需要深入研究系统识别工具箱。最后一个关于因果关系的问题。您是否说这是非因果关系,因为零的数量多于极点?永远不可能研究这样的系统吗?顺便说一下,我是从弹簧阻尼器组合中推导出来的。再次感谢您
  • 是的,如果系统的零点数大于其极点数,系统将是非因果的。我不能说这永远不可能,我不知道学术界对此做了什么。但我可以很容易地说,如果你在建模一个实际存在或可能存在的系统,它应该是因果关系。

标签: matlab


【解决方案1】:

您没有提供足够的信息来给出完整的答案 (*),但听起来您要进行某种最小二乘曲线拟合。 fminsearch 可以解决这个问题,但有更好的选择。我倾向于使用统计工具箱中的nlinfit,但也有优化工具箱中的lsqcurvefit 和曲线拟合工具箱中的fit

(*) 你的数据到底是什么?在已知频率的正弦驱动力下,位移是时间的函数吗?但是您必须拥有多个驱动频率的数据,因为您需要了解多个频率的响应才能提取传递函数的所有 5 个参数,对吧?

【讨论】:

  • 感谢您的回复。你是对的,我有超过 1 个频率的数据。这些数据是在时域中以位移为输入,力为输出而获得的。所以我试图对数据做一个 tfestimate ,但它的输出是一个复数的列向量。我应该如何使用这个列向量与理论上导出的传递函数相关联。也许我还没有理解确切的概念。如果你能详细说明这一点,那就太好了。提前致谢
  • 我对@9​​87654325@ 一无所知,所以如果您对此有具体问题,我建议您提出一个新问题。但听起来你真正的问题是如何解决这个特定实验的数据分析问题。这真的不是stackoverflow的主题,所以我建议在其他地方寻求帮助(教授/助教是为了上课,同事如果这是为了工作,等等)。祝你好运!
【解决方案2】:

是的,这可以使用fminsearch 来完成。更多信息请阅读function documentation

【讨论】:

  • 非常感谢您的即时回复。要使用它,我需要以上述形式获取测量数据的传递函数,但是当我使用 tfestimate 时,我得到了一个复数向量。您能否建议我如何进一步进行。这真的很有帮助。
猜你喜欢
  • 2017-10-16
  • 2017-07-23
  • 1970-01-01
  • 2012-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多