背景:
我继承了离散事件仿真MATLAB模型,并希望自动化并加快其执行速度。除了要调用sim(modelName)并让MATLAB运行解释代码外,我想要一个类似于调用system('modelName.exe ...')的解决方案。我这样做的动机来自于初步测试,该测试表明速度提高了近1000%。我设法将Real-Time Workshop与Rapid Simulation目标一起使用,以产生具有静态内存分配的exe。问题在于模型中存在嵌入式MATLAB Function模块,其参数在每次运行中的大小和形状都会变化。将会有成百上千的运行。
根据MathWorks文档:
嵌入式MATLAB功能块不支持动态内存分配:
“不能在嵌入式MATLAB Function模块中为可变大小的数据使用动态内存分配。使用有界而不是无界的可变大小数据。”
题:
此限制可能有什么解决方法?
想法:
- 使用足够大的静态变量大小,并另外传递int变量/可调参数以显式地窗口化要范围内的数据部分。
- S功能?
- 我今天要实现的是:每次调用模拟以动态方式生成静态代码时,以编程方式重新编译模拟。
- 将所有内容移植到一种真正/现代的编程语言,例如python或c ++。
关键词: MATLAB动态内存分配嵌入式离散事件仿真实时研讨会Simulink SimEvents可调参数
回答:
几年后的后续工作...我们进行了当天进行了一年左右的动态静态重新编译,然后另一位统计数据开发人员将其重新编写为c ++。每次运行都使用最大可能的内存根本不是浪费计算资源。
更多&回答...