【问题标题】:Matlab Simulink file run time in hours: Relation between step size and simulation/stop timeMatlab Simulink 文件运行时间(以小时为单位):步长与仿真/停止时间之间的关系
【发布时间】:2020-06-19 14:43:26
【问题描述】:

我打算运行一个 Matlab Simulink 模型(包含 400 个 ODE,即 400 个 ODE 模型),步长为 200e-06,仿真/停止时间为 52 小时。据我了解,Simulink 停止时间单位为秒。这是否意味着我需要运行 (52*3600) 187200 秒的模拟?此外,我意识到以 187200 秒的仿真时间运行 Simulink 模型将花费非常长的时间(可能几个月,这不是一个可行的选择),无论高计算机配置或矢量化/并行化模型结构如何。

有人可以告诉我步长和模拟/停止时间之间的关系吗?

感谢您的宝贵时间。

问候

【问题讨论】:

    标签: matlab model runtime simulink


    【解决方案1】:

    步长和模拟持续时间是独立的参数。
    对于固定步长模拟,您有以下关系:

    NumberSteps = Duration / StepSize
    

    模型的设计者应该决定什么是时间单位并进行相应的设计。
    它可以是任何时间,秒、小时、周……,您只需确保模型中的计算与您选择的单位一致。
    例如,您可以以 m/s、km/h、miles/h... 为单位建模速度,并使用 1 (s) 步或 1/3600 (h) 步进行相同的 1 s 计算。
    问题是要知道您使用的模型是在哪个时间单位设计的?
    如果模型使用 1 秒逻辑,那么:

    NumberSteps = 52 * 3600 / (200e-6) = 936e6
    

    这是一个不寻常的大量步骤,并解释了运行时间过长。
    我会质疑是否需要在如此长的时间内使用如此小的步长。

    还可以使用 1 小时逻辑对同一系统进行建模。
    在这种情况下:

    NumberSteps = 52 / (200e-6) = 260e3
    Stepsize = 200e-6 h = 0.72 s
    

    这成为模拟的常见步骤数,应该在几秒钟或几分钟内运行,具体取决于模型的复杂性

    【讨论】:

    • 感谢您的回复。我知道步长很小,导致它是大量的步骤和高仿真运行时间。绝对不需要这么小的步长,但我必须以 0.0002 的步长检查模型响应。另外,我仍然不清楚 Simulink 中提到的“停止时间” 52 小时,步长为 0.0002 。你能详细说明一下吗?请注意,我的模型参数单位是小时。
    • 我改写了我的答案,因为我对你提到的秒数感到困惑。实际上,您应该决定什么是持续时间单位,因此如果您的模型旨在处理小时数,您可以决定该单位是小时数。在这种情况下,你会快 3600。
    • 查看我的编辑:您使用的模型是在几小时还是几秒内构思出来的?是 0.0002 小时还是秒?
    • 嗨@waldi!谢谢你的详细回答。我的步长单位是 0.0002 小时,我使用的模型是以小时为单位的。如您所述,步长和仿真持续时间是独立的参数,因此要运行52小时的模型,是否需要将仿真停止时间提到为52(以确保步长和模型参数之间的单位一致性)?跨度>
    • 是的,确切地说,duration = 52:它会快得多!
    猜你喜欢
    • 1970-01-01
    • 2013-09-10
    • 1970-01-01
    • 1970-01-01
    • 2014-09-11
    • 1970-01-01
    • 2015-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多