【问题标题】:Post-processing the output result from Dymola when there are only 2 elements in the result当结果中只有 2 个元素时,对 Dymola 的输出结果进行后处理
【发布时间】:2020-07-30 04:03:38
【问题描述】:

我正在尝试使用 Dymola 附带的 MATLAB 脚本对 Dymola 的输出结果进行后处理。但是在某些情况下,.mat 文件中的输出数据只有 2 个元素,在这种情况下如何获取 10s 到 100s 之间的数据?

它是一个与时间无关的参数或变量,因此它以紧凑的方式存储。我了解机制,但在 MATLAB 中对数据进行后处理时并不友好,我必须找到“错误”的维度数据。我该如何解决这个问题?

【问题讨论】:

  • 如你所说,它是一个常数值。您可以检查参数是否为常量并将 2 元素数组转换为标量值。因此,您不必处理数据的实际维度

标签: modelica dymola


【解决方案1】:

我建议创建一些简单的逻辑来查看变量的大小,然后自动将其放入一些字典、列表等中。从那里你可以操纵变量。我知道您要的是 Matlab,但这里有一个我使用过的 Python 解决方案,可以帮助您入门:

    varNames_param_base=[]
    varNames_var_base=[]
    for i, val in enumerate(r.varNames()):
        if np.size(r.values(val)) == 4:
            varNames_param_base.append(val)
        else:      
            varNames_var_base.append(val)

我在file 中使用了这些行。

在示例中,r.varNames() 是从生成的 Dymola .mat 文件中读取的所有变量名称(即字符串)的列表。 r.values 获取当前在 for 循环中使用的变量名的值(即 val)。

【讨论】:

    【解决方案2】:

    您也可以考虑将结果文件转换为 SDF(一种简单的 HDF5 表示),因为该格式不使用任何巧妙的存储选项(如果我没记错的话)。

    【讨论】:

      猜你喜欢
      • 2020-06-27
      • 2017-08-16
      • 2013-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多