问题描述
我尝试在 Dymola 中使用线性化函数,但是当结果维度很大时,Dymola 似乎不会显示结果。
我的问题是:
我如何打印结果或在哪里可以找到它?
解决方法
您可以做的是将结果分配给一个变量。这可以使用 Outputs
组完成,如下面的屏幕截图所示。如果你例如在 ss
的字段中输入“sys”,您将获得一个记录 sys
,您可以在其中输入 sys.A
、sys.B
等访问矩阵/向量,我已经对大小为 200x200 的系统进行了测试。在命令行中输入此内容将显示内容。当然这个记录不仅是为了输出,也是为了后期处理。
这实际上唯一要做的就是将调用从 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
,其中包含您系统的精美视觉展示。