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 表示),因为该格式不使用任何巧妙的存储选项(如果我没记错的话)。
我正在尝试使用 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 表示),因为该格式不使用任何巧妙的存储选项(如果我没记错的话)。