Post-当结果中只有 2 个元素时处理来自 Dymola 的输出结果

Post-processing the output result from Dymola when there are only 2 elements in the result

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

它是一个不依赖于时间的参数或变量,所以它以紧凑的方式存储。我理解这个机制,但是post-在MATLAB 中处理数据时,它不是用户友好的,我必须找到“错误”的维度数据。我该如何解决这个问题?

我建议创建一些简单的逻辑来查看变量的大小,然后自动将其放入某些字典、列表等中。您可以从那里操作变量。我知道您要的是 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)。

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