【发布时间】:2021-07-01 16:20:50
【问题描述】:
我需要一些帮助来使用以下代码在 MATLAB 中存储值:
for n = 1:some number
iter = 0;
while % condition
iter = iter + 1 ;
for k = 1:9
% call the integrator 9 times
[t,s] = ode113(@(t,y) eqns, [0 t{k}], X{k}, options);
% X{k} contains 9 initial conditions where each has 6 values
x{k} = s(:,1:6)
% x{k} = stores each arc from integration
x = 1x9 cell array where each cell is #rowsx6
end
end
state(n,:) = x;
end
我遇到的问题是state 没有x 的所有n 值。例如,如果 n = 2,状态大小为 2x9,但仅存储 n = 2 的 x 值;没有为n = 1 保存任何内容。我也试过:state{n}(iter,:) 在while 循环内,它也只存储上次迭代的x 数据。似乎变量状态正在被覆盖。有人可以指出我正确的方向吗?
【问题讨论】:
-
您的
while循环条件似乎是造成这种情况的原因。请创建minimal reproducible example;没有它,我们只能猜测。 -
嗨 Sardar,我怀疑这是 while 循环,但我不明白为什么。我修改了问题。
-
如何初始化
state?它是一个单元阵列吗?我想一定是这样,否则该分配将是非法的。 minimal reproducible example 是我们可以复制粘贴并自己运行的代码。这确保了所有变量都已定义并且所有语句都有意义,这对于我们真正了解您在做什么是必要的。如果我们没有完整的代码,很难猜出为什么赋值没有按照您的预期进行。请阅读上面链接的页面,它将帮助您获得有用的答案。 -
嗨 Cris,使用 [] 初始化状态;由于存在太多难以简化的依赖关系,因此制作一个最小的示例将非常困难。我编辑了代码以尽可能简化。
标签: matlab for-loop while-loop save