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

时间:2015-09-15 00:05:57

标签: matlab debugging signals simulink

我知道这听起来很奇怪,这是写一个问题的不好方法,但让我告诉你这个奇怪的行为。

enter image description here

你可以看到这个信号r5非常干净。正是我对模拟的期望。

现在看看这个: enter image description here

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

----编辑。

使用simulink 2014和朋友的2013年,在两台不同的计算机上尝试过...如果有人可以在2015年进行测试,那就太棒了。

(将滤波器连接到任何其他r,r1-r4包含''修复''噪声(在所有r1-r8上),我尝试将其放在其他信号上,但噪音不会消失)。

预期结果完全是平滑的,这个文件显示在其他模拟中非常强大(所以我猜这些块内的数学是好的)并且这种情况只发生在两个''链接号'中的一个'' (左上角的一个输入)设置为4,即使出现一个小的噪音,其中一个“链接号”设置为3。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

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

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

要解决这个问题,请尝试使用固定时间步骤,更改精度/求解器或更好:避免区分,使用某种类型的状态估计器来获取导数或分析计算。