我正在使用 Open Modelica。
我有大量 .csv 格式或 .mat 格式的 float (约 4,000,000 个数字)(它们对我来说同样方便)。
我使用 ExternData 包 (.csv) 或使用 Modelica.Utilities.Streams.readRealMatrix (.mat) 将数据加载到 OpenModelica 中。它存储为 Real 类型的常量数组。
我生成了一个 C 函数,可以对此数据集执行一些操作(一些奇怪的插值)。它与保存数据的外部对象相关联,该数据是通过其构造函数和 Modelica 接口(interface)提供给它的。
我的问题是,当面对大尺寸的常量数组时,OpenModelica 转换器似乎会陷入停顿,并消耗大量内存。例如,以下模型翻译速度很慢。如果数组的大小增加,翻译时间和内存消耗似乎呈指数级增加。
model test
constant Real[10000,5] test_array;
end test;
是否有其他方法可以将数据从 .csv 或 .mat 文件移动到外部对象?我认为我的外部 C 代码可以自行导入 .csv 或 .mat 文件,但这远远超出了我几乎不存在的 C 编程能力。还有别的办法吗?
最佳答案
推荐的方法是将如此大的数组数据不在模型内,而是作为外部数据文件。 CombiTimeTable支持在仿真运行时读取文本文件和 MATLAB MAT 文件。您还将受益于更短的翻译时间。
关于Modelica - 如何最好地将大型数组从 .CSV 文件或 .MAT 文件移动到外部 C 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62105701/