我试图理解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度的laplace-domain变量s
的多项式,其系数为c_{M}, c_{M-1}, ..., c_{1}, ..., c_{0}
。分母是另一个多项式,但是度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
的k衍生物类似。
我用数值积分器解析这个等式(为简单起见,我们假设为euler),它允许我使用y
状态变量计算N-1
及其导数。对于x
的k-导数,我使用输入的最后k+1
值粗略估计它(例如x^{1} = (x(t2) - x(t1)) / (t2-t1)
。
简而言之,我需要跟踪N-1
的{{1}}状态变量以及Y
以前的M+1
值。然后我记得simulink在x
时没有任何先前的值。怎么可能呢?
答案 0 :(得分:2)
在分母和分子具有相同大小的情况下,输出将取决于输入值,但它也将取决于状态的值。因此块将具有直接馈通,但它也需要N-1个状态,其中N是分母的长度。
有关传递函数的示例,请参阅此wiki article,其中输出直接取决于输入(以及状态)。
我看了你指出的文件,我同意这令人困惑。它似乎表明输出要么仅依赖于状态,要么仅取决于输入。实际上,输出可以取决于输入,状态和参数的组合。直接馈通仅询问输出是否依赖于输入值,它不关心输出是否也依赖于状态。
我希望这会有所帮助。