我刚刚发现了一个错误的错误,因为我在使用Rapid Accelerator时非常信任Simulink以关注所有依赖项。
基本上我有数百次迭代在同一个模型上运行但输入数据不同(来自MATLAB工作区的“From Workspace”)。
Simulink似乎忽略了对输入数据的依赖,并且不会为新输入数据重建目标。
现在我可以强制每次迭代重建,但这不是优化模型的重点......
我如何告诉Simulink只编译包含输入+链接器(每次迭代构建)的单个文件,而不是构建整个模型?
即使这不起作用:如何在第一时间强制重建?
无论
Simulink.BlockDiagram.buildRapidAcceleratorTarget('my_model');
更多设置“在模拟目标设置中重建所有(包括库)”似乎强制重建....
答案 0 :(得分:0)
这不是一个错误,它是一个有据可查的事实。
当一个模型包含"来自工作区" block被编译为Rapid Accelerator目标,独立可执行文件将包含工作空间中的所有相关变量,其大小和值等于它们在编译时的。
这是一个足够好的理由来避免像#34; From Workspace"默认情况下,快速正常模式模拟除外。
如果您考虑它,这是显而易见的 - 考虑如果您的模型在工作空间中使用变量会发生什么
myVar = [1 2 3];
在第一次运行期间,但在下次运行时设置
myVar = [1 2 3 4 5 6 7 8 9 10];
这种灵活性在MATLAB / Simulink环境中是微不足道的,但是用C或C ++这样的语言实现它要困难得多。虽然可以在快速加速目标中实现这种灵活性,但我不推荐它。
更好的方法是对模型使用inport,甚至更好的模型参数。例如,in this blog post以及其他各种地方都详细说明了这些内容。