2

我正在 Dymola 中编写一个mos脚本,在其中我动态计算循环内的数组元素。大量信息打印在命令窗口上。每次打印

Redeclaring variable: Real traj_phie [34, 1002];
Redeclaring variable: Real traj_phie [35, 1002];

等等。我不想每次都“重新声明”我的数组,我只想“填充”它。数组大小的预分配会解决这个问题吗?如果是这样,我如何在 mos 脚本中预分配数组?我尝试了不同的方式,比如

Real[50,1002] traj_phie;

Dymola 会为此引发错误。所以我的问题是 1)mos 脚本中的数组预分配 2)抑制命令输出。有人能帮我吗?谢谢

4

1 回答 1

3

有一个高级标志,可让您抑制命令输出:

Advanced.EchoScriptCommands = false

要初始化具有特定大小的向量、矩阵或数组,请使用 fill() 函数。Modelica 中没有像 NaN 这样的东西,所以你必须用某个值进行初始化。

然后,您可以使用切片操作仅分配感兴趣的行/行/元素。

traj_phie = fill(0.0, 50, 10);

// Assign line by-line
for i in 1:50 loop
  traj_phie[i, :] = i*ones(10);
end for;
于 2020-01-27T14:17:21.427 回答