【问题标题】:How do I use tf2ss() with discrete-time systems?如何在离散时间系统中使用 tf2ss()?
【发布时间】:2012-05-24 08:25:38
【问题描述】:

A 有一个离散的时间传递函数,

H(z-1) = B(z-1) / A(z-1) = (b 0 + b1z-1) / (a0 + a1z-1 + a2z-2)。

其分子和分母在代码中表示为:

Num = [b0, b1];
den = [a0, a1, a2];
Ts = 0.01; % 采样周期`

如何使用tf2ss() 获得ABCD 状态空间矩阵?
我是否像在连续时间系统中那样直接调用tf2ss()
或者是否有任何其他内置的 Matlab 函数用于此目的?

【问题讨论】:

    标签: function matlab transfer state-space


    【解决方案1】:

    也许我在你的问题中遗漏了一些东西,但你可以像这样简单地使用它:

    [A, B, C, D] = tf2ss(Den, Num);
    

    你也可以参考official tf2ss documentation来确认。

    【讨论】:

    • 那么,我们在处理离散系统时不做额外的操作?
    • 在这种简单的情况下,没有必要(但有时需要考虑抽样的影响)。
    【解决方案2】:

    转移函数到状态空间的转换在连续模型和离散模型中是相等的。但是,如果你想离散地表示系统中的矩阵,你可能想做这样的事情

    S = ss(tf(Num,Den,T))

    【讨论】:

      【解决方案3】:

      首先,您应该使用以下方法构建您的连续状态空间模型: sys_state_space = tf2ss(a,b) 之后你应该使用这个: sys_ss_discrete = c2d(sys_state_space,T*-sampling*,'zoh')

      那么你就有了系统的状态空间离散模型。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-01-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-07
        • 2021-12-31
        相关资源
        最近更新 更多