【问题标题】:Writing specific variable to .txt or .mat with Dymola使用 Dymola 将特定变量写入 .txt 或 .mat
【发布时间】:2019-03-07 18:38:19
【问题描述】:

我需要一种将模拟中的特定变量写入 .txt 或 .mat 的方法。

用途:

Streams.print(Modelica.Math.Vector.toString(resultVector),"filename"); 

与在模拟选项卡上导出变量相比,会导致错误的数据,因为没有一致性。 .txt 文件中的值完全不同,没有可见的模式。

【问题讨论】:

  • 您是否需要在模拟过程中编写此文件,或者对结果文件进行后处理是否可以接受?如果你在模拟过程中这样做,你可能需要使用when sample(...) 来强制以正确的顺序输出。
  • Yes 是可以接受的,但我不想绑定到 matlab。你有解决办法吗?

标签: string stream modelica dymola


【解决方案1】:

Modelica.Utilities.Streams.writeRealMatrix 会做你需要的吗?

对我来说

Modelica.Utilities.Streams.writeRealMatrix(
  fileName="C:/temp/test.mat", 
  matrixName="testMatrix", 
  matrix=[1,2;4,5], 
  append=false, 
  format="7")

产生预期的 .mat 文件。

为了能够在.mat 文件中写入变量,您必须将变量转换为(二维)矩阵——如果它还不是矩阵的话。这可以通过使用方括号转换标量或向量来完成。这将为标量提供matrix=[1],或为向量提供matrix=[{1,2,3,4}]。使用matrix=1matrix={1,2,3,4} 会引发错误。

【讨论】:

  • 这导致计算速度非常慢!明天我会再试一次。
  • 您也可以尝试DymolaCommands.MatrixIO.writeMatrix 或使用Dymola 标准安装中包含的DataFiles 库。
  • 我在哪里可以在线找到这个库的文档?
  • 我觉得无处可去。如果您在 Dymola 中打开课程,会有一些文档。
【解决方案2】:

由于可以接受后处理,因此有一些可用选项:

Dymola 包含工具alist

alist -e var1 [-e var2 ...] inputFile outputFile

export data for var... as comma-separated values, suitable
for importing into Microsoft Excel.

Options: -a  write in ASCII format (default)
         -b  write in Matlab binary format

https://www.j-raedler.de/projects/DyMat/ 可用于读取结果文件并生成您喜欢的任何格式的文件(使用 Python)。

OpenModelica 有一个类似于alist 的选项,如果您想要更少的数据点https://openmodelica.org/doc/OpenModelicaUsersGuide/v1.12.0/scripting_api.html#filtersimulationresults,也可以重新采样信号。

【讨论】:

  • alist.exe -e inertia1.w -e inertia2.w PID_Controller.mat PID_Controller.csv 从 .mat 结果文件中提取两个变量并将其存储为 .csv
猜你喜欢
  • 2013-10-03
  • 2017-11-29
  • 1970-01-01
  • 1970-01-01
  • 2019-07-13
  • 2020-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多