【问题标题】:Sampling time as an input-simulink采样时间作为输入-simulink
【发布时间】:2015-05-20 14:24:45
【问题描述】:

我正在尝试创建一个函数库,允许我对过滤器和其他函数进行参数化。在 simulink 标准块中,我只能预先设置采样时间,而不是输入。关于如何创建这个有什么想法吗?我的第一种方法是使用条件和时钟来允许此参数存在,但时钟也不能参数化。

提前致谢。

【问题讨论】:

  • 参数化模块的典型方法是将它们的参数定义为 MATLAB 变量(在 Simulink 上下文中具体指输入模块对话框的数据),然后在开始仿真之前设置这些变量的值.但不清楚这是否是您所要求的,或者您是否说要在模拟运行时更改每个块的采样率(使用输入信号)?或者您可能希望有一个恒定的采样率,但允许用户将其指定为输入信号而不是在对话框中?请澄清您的问题。
  • 抱歉,误传,是的,我正在尝试使用输入信号在模拟运行时更改每个块的采样率。 IE。如果我有一个离散滤波器块,我希望能够用给定的输入信号改变这个块的采样。

标签: matlab simulink


【解决方案1】:

这样做的唯一方法是将每个块编写为 S-Function。

如果您使用的是 m 代码,那么在 setup 方法中,您需要将块采样时间定义为

block.SampleTimes = [-2 0];

然后在output 方法中,您需要通过将新值分配给block.NextTimeHit 来设置下一个采样时间(基于输入信号的值)。 可以在此处找到执行此操作的示例:A Square Wave with Jitter

使用mdlGetTimeOfNextVarHit 方法可以在 c-mex S-Function 中完成类似的操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-07
    • 2014-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多