我尝试在 Dymola 中使用线性化函数,但是当结果的维度很大时,Dymola 似乎不会显示结果。
我的问题是:我如何打印结果或在哪里找到它?
您可以做的是将结果分配给变量。这可以使用Outputs组来完成,如下面的屏幕截图所示。比如,如果你在字段中输入“SYS” ss,你会得到一个纪录sys,在其中您可以通过键入访问矩阵/矢量sys.A,sys.B等等,我已经为尺寸200×200的系统测试。在命令行中输入此内容将显示内容。当然这个记录不仅用于输出,还用于后期处理。
这实际上做的唯一一件事是修改从Modelica_LinearSystems2.ModelAnalysis.Linearize("ModelName")to的调用sys=Modelica_LinearSystems2.ModelAnalysis.Linearize("ModelName"),因此它也可以在“命令”窗口中完成。
从命令行调用该函数并捕获输出。然后你可以用它做任何你想做的事。
您在线性分析工具栏中找到的所有内容都是Modelica_LinearSystems2库的一部分。此菜单中的Linearize项调用函数
Modelica_LinearSystems2.ModelAnalysis.Linearize("<your-model>")
Run Code Online (Sandbox Code Playgroud)
这也打印到命令行。该函数返回操作员记录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
...
Run Code Online (Sandbox Code Playgroud)
在命令行上,您可以在一个变量中捕获操作员记录,如下所示:
stateSpace = Modelica_LinearSystems2.ModelAnalysis.Linearize("<your-model>");
Run Code Online (Sandbox Code Playgroud)
然后通过访问命令行上的值
stateSpace.A
stateSpace.B
stateSpace.C
stateSpace.D
Run Code Online (Sandbox Code Playgroud)
对于漂亮的 html 报告,您还可以将操作员记录传递给分析功能之一:
Modelica_LinearSystems2.StateSpace.Analysis.analysis2.printSystem(stateSpace)
Run Code Online (Sandbox Code Playgroud)
这会systemAnalysis.html在您的工作目录中创建该文件,其中包含您系统的精美视觉展示。
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |