Simulink:如何将具有零持续时间值的基于事件的信号转换为基于时间的信号,而不会丢失信息

时间:2014-01-14 16:03:39

标签: matlab simulink

我有一个matlab功能块(不相关),其输入是他以前的输出(循环)。例如,如果在采样周期中输出为X,则他在下一个采样周期中的输入将为X,依此类推。

Simulink model simplificated

此图显示了我的模拟的简化。我为第一个循环初始化了我的函数输入。

问题是matlab函数在第一个采样周期(零持续时间)中从de初始化块接收到基于事件的信号,我必须将其转换为基于时间的信号(因此我可以应用避免有利的信号的单位延迟)循环,并允许生成下一个输入,如前所述)。因此,当我这样做时,我丢失了基于事件的信号中包含的信息(由于零持续时间值)并且循环不起作用。 如果有一种方法可以在基于时间的域(图像的绿色部分)中初始化循环,那么,在第一个采样时间内,它不是零持续时间信号,它可以避免这个问题。

有没有办法这样做?或者,针对这个问题采用不同的方法?

1 个答案:

答案 0 :(得分:2)

想到两种方法

  1. 初始条件可以在单位延迟块中设置,因此从简化示例中不清楚为什么需要特定的初始化块。

  2. 你可以在MATLAB功能块中使用一个持久变量来保持从块的一次执行到下一次执行的状态(注意,因为它是事件驱动的,所以每次执行时都不会调用块,只在每个事件触发器上。)