我试图了解Simulink(连续)传递函数 . 在documentation for the transfer function block中,它表示当分子和分母具有相同的长度时,它具有直接馈通特性 .
根据documentation,直接馈通特性表明输出直接由输入控制(而不是由状态变量控制) .
我不明白如何在不使用状态变量或先前的输入/输出值来计算相关导数的情况下,实现分子和分母具有相同度数(大于零)的传递函数 .
背景
以下是让我想到这个问题的思路:
我想实现一个代表具有传递函数的线性系统的C代码 . 对于此实现,我将使用输入 x(t)
并计算输出 y(t)
. 假设该系统的传递函数是 G(s)
. 我可以把它写成 Y(s) = G(s) * X(s)
.
此外,我会说 G(s) = numerator(s) / denominator(s)
,其中 numerator(s)
是度数为M且其系数为 c_{M}, c_{M-1}, ..., c_{1}, ..., c_{0}
的拉普拉斯域变量 s
的多项式 . 分母是另一个多项式,但是 N
和系数 d_{N}, ..., d_{0}
.
为了解决这个系统,我将其重写为 denominator(s) * Y(s) = numerator(s) * X(s)
. 使用拉普拉斯变换属性并假设所有导数的初始条件为零,我得到
d_{N}*y^{N} + d_{N-1}*y^{N-1} + ... + d_{0}*y = c_{M}*x^{M} + c_{M-1}*x^{M-1} + ... + c_{0}*x
y^{k}
是 y(t)
的k衍生物, x
类似 .
我用数值积分器解析这个方程(简单来说就是欧拉),这让我可以用 N-1
状态变量计算 y
及其导数 . 对于 x
的k-导数,我粗略地使用输入的最后 k+1
值来近似它(例如 x^{1} = (x(t2) - x(t1)) / (t2-t1)
.
简而言之,我需要跟踪 Y
和 M+1
以前的 x
值的 N-1
状态变量 . 然后我记得simulink在 M==N
时没有任何先前的值 . 这怎么可能?
1 回答
在分母和分子具有相同大小的情况下,输出将取决于输入值,但它也将取决于状态的值 . 因此块将具有直接馈通,但它也需要N-1个状态,其中N是分母的长度 .
有关传递函数的示例,请参见此wiki article,其中输出直接取决于输入(以及状态) .
我看了一下你指出的文档,我同意这很令人困惑 . 它似乎表明输出要么仅依赖于状态,要么仅取决于输入 . 实际上,输出可以取决于输入,状态和参数的组合 . 直接馈通仅询问输出是否依赖于输入值,它不关心输出是否也依赖于状态 .
我希望这有帮助 .