【问题标题】:Simulink: compute signal derivative inside MATLAB function block without extra blocks?Simulink:在没有额外块的情况下计算MATLAB功能块内的信号导数?
【发布时间】:2015-09-15 15:33:48
【问题描述】:

我正在将信号 q 输入到 MATLAB 功能块 - 例如正弦曲线(它也可能是其他东西)。我的 MATLAB Function 模块还需要信号的时间导数。在 Simulink 中,我可以这样做:

但是我想放弃 Derivative 块(为了节省空间,我的实际模型比上面的要大得多)并以某种方式直接在 MATLAB 函数中获得导数。为此,我可能需要知道q 的先前值......如果不添加内存块我无法知道。

问题:如何在不使用任何额外块的情况下在 MATLAB 函数中获取qdot(并且显然删除了上面的 Derivative 块)?

感谢您的帮助!

【问题讨论】:

  • 您的意思是要“手动”根据 q 的延迟值在 Matlab 块内计算数值导数吗?坏主意。
  • 不,我也想避免这种情况。我只想知道是否有一个神奇的选项可以将信号的导数传递给 MATLAB Function 块,而不必将 Derivative 块放入图中。
  • 您可以使用多路复用器并将导数和信号发生器放在子系统中以节省空间。
  • 输入q是什么?你能计算出它的解析导数吗?没有“魔法”。如果您需要导数,则需要以一种或另一种方式计算导数。
  • 据我所知,没有这样的事情。通过使用(去)复用器、(总线)选择器/创建器和子系统来使用适当的信号路由来处理空间问题。

标签: matlab simulink derivative


【解决方案1】:

我不确定你是否可以在功能块内解决它,因为你需要知道 q 的先前值,但也许你可以通过使用延迟的反馈来解决这个问题,在该反馈中你将返回的旧值q,如下图所示。

我不知道这是否能解决您的问题,但值得一试。 如果您以这种方式使用它,您可能需要对整个模型进行一些测试(关于采样时间和延迟的同步以及类似的事情)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多