我刚刚发现了一个错误的错误,因为我在使用Rapid Accelerator时过分关注Simulink关注所有依赖项 .
基本上我有数百次迭代在相同的模型上运行但具有不同的输入数据(来自MATLAB工作空间而不是“From Workspace”) .
Simulink似乎忽略了对输入数据的依赖性,并且不会相应地重建目标以获得新的输入数据 .
现在我可以强制每次迭代重建,但这不是优化模型的重点......
我如何告诉Simulink只编译一个包含输入链接器的文件(每次迭代构建)而不是构建整个模型?
即使这不起作用:我如何首先强制重建?
也不
Simulink.BlockDiagram.buildRapidAcceleratorTarget('my_model');
更多设置"Rebuild all (including libraries)"在模拟目标设置中似乎 force 重建....
1 回答
这不是一个错误,这是一个有据可查的事实 .
当包含"From Workspace"块的模型编译为Rapid Accelerator目标时,独立可执行文件将包含工作空间中的所有相关变量,其大小和值等于编译时的大小和值 .
这是一个足够好的理由,可以在默认情况下避免使用像“From Workspace”这样的块,除了快速正常的模式模拟 .
如果你考虑它就很明显 - 考虑如果你的模型在工作区中使用变量会发生什么
在第一次运行期间,但在下一次运行时你设置
这种灵活性在MATLAB / Simulink环境中是微不足道的,但是用C或C这样的语言实现它要困难得多 . 虽然可以在Rapid Acceleration目标中实现这种灵活性,但我不建议这样做 .
更好的方法是对模型使用inport,甚至更好的模型参数 . 例如,in this blog post以及其他各种地方都详细说明了这些内容 .