【问题标题】:Custom transfer function based on system matrix基于系统矩阵的自定义传递函数
【发布时间】:2013-08-26 14:34:47
【问题描述】:

背景:我有一个复杂的机械振荡系统。通过类比,我把它变成了一个电路(每个元件都是一个 RLC 振荡器)。计算电路的唯一方法是节点分析,手工计算过于复杂。

由于没有Symbolic Math ToolboxSimPowerSystems工具箱,所以没有方便的方法来计算传递函数G(s)来使用传递函数块。

所以我考虑过使用自定义函数,但是在查阅了文档后我还是很无奈。我希望在这里找到一些初步的想法。

我的系统可以用矩阵方程来描述:

A*x = y

其中 A 是一个 8x8 矩阵,包含我电路的 RLC 阻抗,所以基本上每个元素都是多项式 Z(s) 例如Z_11(s) = (s^1+2s^0)/(s^2+3s-s^-1) 其中s 是拉普拉斯域变量。向量x 是一个 8x1 行向量,包含我的 8 个标量输出。而y 是一个 8x1 行向量,其元素要么是我的 4 个输入信号之一,要么是 0。

最后我需要一个具有 4 个输入和 8 个输出的 Simulink 模块,它可以求解以 s 为变量的线性方程组。

我可以想象使用 4 个块,每个块只有一个输入(将其他输入设置为“零”)并将它们叠加。也可以考虑只选择一个输出。

有什么方法可以实现吗?如何创建一个在拉普拉斯域而不是时域工作的块?

【问题讨论】:

    标签: matlab simulink equation-solving


    【解决方案1】:

    您可以按照您的建议使用 4 个 Transfer Function (SISO) 块,但对于像您这样的 MIMO 系统,我建议您将系统转换为或重写为状态空间表示并使用State-Space 改为阻止。

    【讨论】:

    • 它并没有真正解决我的问题。我目前正在使用控制系统工具箱的“LTI-System”块开发解决方案,它允许我评估填充了传递函数的系统矩阵。如果它最终有效,我会在这里发布。
    • 在哪些方面不能解决您的问题?我建议的两种方法都有效(我以前使用过),状态空间表示是对 MIMO 系统建模的更好方法。
    • 有几个原因。 1)不熟悉我的代码的人也需要使用模型,我确信他们可以创建方系统矩阵,但我怀疑他们可以创建状态空间系统。我也有我的问题,因为一些微分方程是四阶甚至更高。一个单一的矩阵是最透明的。 2)听说matlab能做的ss转换并不总是可靠的。 3) 我使用多个 SISO 块的第一个想法似乎很复杂,因为系统大小必须相等,而且我不想为每个特定问题添加块。
    • 我正在研究的解决方案涉及一个“n x n”传输矩阵,每个元素代表一个单一的振荡电路。通过反转矩阵,我可以使用具有多个输入和输出的 LTI-System 模块。如果它有效,在我看来这是一个干净的解决方案。
    【解决方案2】:

    n x n系统矩阵需要定义传递函数:

    W = minreal( [  tf( ... ) ... tf(...) ; ... ; tf( ... ) ... tf(...)  ];
    

    例如:

    Z_11(s) = (s^1+2s^0)/(s^2+3s-s^-1)
    

    ->

    Z_11 = tf( [1 2 0] , [1 3 -1] );
    

    通常需要反转

    H = inv(W);
    

    该矩阵可以直接包含在控制系统工具箱的 LTI-Sytem 模块中。 输入和输出向量使用 mux 和 demux 嵌入。

    LTI 系统在内部使用 n*n 个建议的状态空间模型,因此大型系统手动创建它们会很复杂。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-10
      • 2015-06-12
      相关资源
      最近更新 更多