【问题标题】:How to handle large matrix in Dymola?如何在 Dymola 中处理大型矩阵?
【发布时间】:2016-05-31 22:14:17
【问题描述】:

我想知道如何在 Dymola 中处理大型矩阵。我有一个 Modelica 代码,需要从一个大的 txt 文件中读取值,并将其存储到矩阵中。以下是显示 1000x1000 矩阵的示例代码。我希望 Modelica 从存储 w2 值的 txt 文件中读取值(TXT 文件(~13 MB):THE LINK)。 txt 文件已经具有 Modelica 语言的矩阵格式。但是,元素太多,我不能手动将值复制到 Dymola。如果我这样做,Dymola 将停止响应。

model Unnamed
  Real[1000, 1000] w2;
end Unnamed; 

非常感谢!

【问题讨论】:

标签: modelica dymola openmodelica


【解决方案1】:

您还可以查看支持多种文件格式的ExternData library

【讨论】:

    【解决方案2】:

    查看ReadRealMatrixFromFile 示例以获得一些灵感。您需要将文件采用受支持的格式,而您自己的文本格式则不支持。在这种情况下,您可以编写自己的解析器或将文件转换为 MSL 知道如何读取的 MAT 文件。

    【讨论】:

    • 不幸的是,上面提到的 ReadRealMatrixFromFile 示例并没有解决或解决 OP 带来的问题。相反,它遇到了同样的问题……实际的问题是 Dymola 将为矩阵的每个元素生成一行 C 代码。因此,一个 1000x1000 的矩阵会生成 1000000 行 C 代码。这是通过将 dsmodel.c 文件分成多个 dsmodelext*.c 文件来管理的。根据 C 编译器,这可能会导致编译时间过长(即编译时间 > 运行时间的 1000 倍)。我目前不知道有什么解决方法。
    • 使用注解__Dymola_HideArray=true。另请参阅stackoverflow.com/a/57461028/8725275
    猜你喜欢
    • 2012-01-30
    • 1970-01-01
    • 2011-03-14
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多