微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Dymola 中显示线性化结果?

如何解决如何在 Dymola 中显示线性化结果?

我尝试在 Dymola 中使用线性化函数,但是当结果维度很大时,Dymola 似乎不会显示结果。
我的问题是: 我如何打印结果或在哪里可以找到它?

enter image description here

解决方法

您可以做的是将结果分配给一个变量。这可以使用 Outputs 组完成,如下面的屏幕截图所示。如果你例如在 ss 的字段中输入“sys”,您将获得一个记录 sys,您可以在其中输入 sys.Asys.B 等访问矩阵/向量,我已经对大小为 200x200 的系统进行了测试。在命令行中输入此内容将显示内容。当然这个记录不仅是为了输出,也是为了后期处理。

enter image description here

这实际上唯一要做的就是将调用从 Modelica_LinearSystems2.ModelAnalysis.Linearize("ModelName") 修改为 sys=Modelica_LinearSystems2.ModelAnalysis.Linearize("ModelName"),因此它也可以在“命令”窗口中完成。

,

从命令行调用函数并捕获输出。然后你可以随心所欲地使用它。

您在线性分析工具栏中找到的所有内容都是Modelica_LinearSystems2库的一部分。这个菜单中的Linearize项调用函数

Modelica_LinearSystems2.ModelAnalysis.Linearize("<your-model>")

也打印到命令行。该函数返回操作员记录Modelica_LinearSystems2.StateSpace,其中包含您感兴趣的所有信息。Dymola 的默认行为是调用此操作员记录的String 方法并将其打印到命令行。如果您查看 Modelica_LinearSystems2.StateSpace.'String' 的源代码,您可以在算法部分的开头看到这一点:

  // If system is too large,do not print the matrices
  if size(ss.A,1) > 50 or size(ss.B,2) > 50 or size(ss.C,1) > 50 then
     ...

在命令行上,您可以像这样在变量中捕获操作员记录:

stateSpace = Modelica_LinearSystems2.ModelAnalysis.Linearize("<your-model>");

然后通过

访问命令行上的值
stateSpace.A
stateSpace.B
stateSpace.C
stateSpace.D

对于一个漂亮的 html 报告,您还可以将操作员记录传递给其中一个分析函数:

Modelica_LinearSystems2.StateSpace.Analysis.analysis2.printSystem(stateSpace)

这会在您的工作目录中创建文件 systemAnalysis.html,其中包含您系统的精美视觉展示。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。