在 Dymola 中使用 "readTrajectory" 函数编写向量

writing a vector using "readTrajectory" function in Dymola

我在 Dymola mos 脚本中以如下简单的方式编写了一个矢量:

x_axis = cell.spatialSummary.x_cell;
output: x_axis={1,2,3,4,5} // row vector

我想在一个函数中做同样的事情。'x_cell' 有 5 个值,我想将它们存储在一个行向量中。我使用 DymolaCommands.Trajectories.readTrajectory 函数在 for 循环中一个一个地读取 x_cell 值(我使用 for 循环是因为,当我尝试读取整个 x_cell)

Real x_axis[:],axis_value[:,:];
Integer len=5;

for i in 1:len loop
    axis_value:=readTrajectory(result,{"cell.spatialSummary.x_cell["+String(i)+"]"},1); //This intermediate variable returns [1,1] matrix
    x_axis[i]:=scalar(axis_value);
end for;

我收到一个错误:

Assignment failed x_axis[i] = scalar(axis_value);

这是怎么回事?我想要做的就是读取 x_cell 的所有值并将其写入向量。我怎样才能在 dymola 功能中做到这一点? 谢谢!

解决方案:用某个值初始化向量。在这种情况下,

x_axis :=fill(0, len);

这为我解决了上述问题。

预填充与其他解决方案一样有效,通常是最好的解决方案。但是,在某些情况下,您可能必须按如下方式附加到矢量:

 x_axis=fill(0.0, 0);
 for i in 1:len loop
    axis_value:=readTrajectory(result,{"cell.spatialSummary.x_cell["+String(i)+"]"},1); //This intermediate variable returns [1,1] matrix
    x_axis:=cat(1, x_axis, {scalar(axis_value)});
 end for;

(这需要 x_axis 并在末尾连接一个新元素。它通常较慢。)