为什么如果我在输出上放置一个滤波器我会修改源信号?这是一个simulink错误吗?

why if I put a filter on an output I modify the source signal? is this a simulink bug?

我知道这听起来很奇怪而且这样写问题很糟糕,但让我向您展示这种奇怪的行为。

如您所见,此信号 r5 非常干净。正是我对模拟的期望。

现在看看这个:

这是完全相同的模拟,唯一的区别是过滤器现在没有连接。我尝试了几个小时来寻找原因,但它似乎是一个错误。 这是我的文件,你可以自己断开过滤器测试。

----已编辑。

在两台不同的计算机上用 simulink 2014 和朋友的 2013 试过...如果有人可以在 2015 上测试它会很棒。

(将滤波器附加到任何其他 r,r1-r4 包括“'fixes'”噪音(在所有 r1-r8 上),我尝试将其放在其他信号上,但噪音不会消失).

预期的结果恰好是平滑的,这个文件在其他模拟中表现得非常稳健(所以我猜块内的数学很好)并且这种情况只发生在两个中的一个''link number''(左上角的一个输入)设置为 4,即使出现小噪音,其中一个 ''link number'' 设置为 3.

在此先感谢您的帮助。

在我看来,过滤器唯一可能影响的是集成中使用的时间步长,假设您使用的是动态时间步长(这是默认设置)。所以,我的猜测是(如果这不是错误的话)你的系统在数字上是 unstable/chaotic。它也可能与差异引起的噪声有关。在较小的时间步长上区分噪声通常会使事情变得更糟。

ode23 和 ode45 等求解器使用动态时间步长。 ode23 比较二阶和三阶积分,如果两者之间的差异不太大,则选择第三阶积分。如果差异太大,它会用更小的时间步长进行另一次计算。 ode45 做同样的四阶和五阶计算,更准确,但更灵敏。如果较小的时间步使事情变得更糟,则可能会发生不稳定性,如果您区分噪声,可能会发生这种情况。

要克服这个问题,请尝试使用固定时间步长,更改您的 precision/solver,或者更好:避免微分,使用某种类型的状态估计器来获取导数或进行分析计算。