【问题标题】:Can I describe a Simulink block structure with code?我可以用代码描述 Simulink 模块结构吗?
【发布时间】:2014-11-10 16:15:15
【问题描述】:

例如: 我需要一个由N UnitDelay 块组成的块。并且它们应该串联连接。而N应该是block参数。

我想知道是否可以使用代码创建一个块,如下所示:

begin block

UnitDelay unit_delay1
UnitDelay unit_delay2

unit_delay1.input <= block_input
unit_delay2.input <= unit_delay1.output
block_output <= unit_delay2.output

end block

问题是关于用代码描述块结构。这不仅仅是示例中的单位延迟块。

【问题讨论】:

  • “For Iterator”块会有帮助吗? mathworks.com/help/simulink/slref/foriteratorsubsystem.html
  • 如果是这种情况,那么您可以使用 Simulink 命令行功能。您可以使用命令行轻松添加块。我没有广泛使用 Simuilink 的此功能,但您可以查看以下内容:mathworks.com/help/simulink/functionlist.html
  • 我刚想到这个。如果您正在寻找可变时间延迟块,那么这可能会有所帮助:mathworks.com/help/simulink/slref/variabletimedelay.html 您可以将其设置为获得外部延迟时间。假设你想要 N 个单位的延迟,那么你可以计算会有多少时间延迟并将该值发送到块。
  • Tapped Delay Block 几乎可以满足您的要求。它输出所有延迟信号,因此您只需要选择顶部信号。如果这不能满足您的要求,那么您将需要花时间为子系统创建一个封装,其中该封装在初始化时使用 MATLAB-Simulink API 函数(例如add_block)来添加和配置您想要的模块在子系统中。
  • @Holoceo 好的,我不清楚这个问题。 Phil Goddard 建议的 API 是可行的方法。相关功能在mathworks.co.uk/help/simulink/modeling-basics.html的文档中列出。

标签: matlab block simulink


【解决方案1】:

所以答案是:您可以使用初始化commands 创建一个屏蔽块。

非常感谢@Omid@Phil Goddard

【讨论】:

    【解决方案2】:

    在此处查看“MatSim”:https://github.com/gave92/Matsim

    它是一个包装器,它允许使用比使用诸如add_block 等普通 API 命令更好的语法。

    block = Subsystem()
    block_input = block.in(1, {})
    unit_delay1 = Delay(block_input)
    unit_delay2 = Delay(unit_delay2)
    block_output = block.out(1, unit_delay2)
    simlayout(sys.handle)
    

    此外,这还完成了结果模型的所有重要块放置和布局。

    【讨论】:

    • 这是个老问题,哎呀
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-26
    • 2021-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多