在 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 并在末尾连接一个新元素。它通常较慢。)
我在 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 并在末尾连接一个新元素。它通常较慢。)