【问题标题】:Store data during for and while loops在 for 和 while 循环期间存储数据
【发布时间】: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 = 2x 值;没有为n = 1 保存任何内容。我也试过:state{n}(iter,:)while 循环内,它也只存储上次迭代的x 数据。似乎变量状态正在被覆盖。有人可以指出我正确的方向吗?

【问题讨论】:

  • 您的while 循环条件似乎是造成这种情况的原因。请创建minimal reproducible example;没有它,我们只能猜测。
  • 嗨 Sardar,我怀疑这是 while 循环,但我不明白为什么。我修改了问题。
  • 如何初始化state?它是一个单元阵列吗?我想一定是这样,否则该分配将是非法的。 minimal reproducible example 是我们可以复制粘贴并自己运行的代码。这确保了所有变量都已定义并且所有语句都有意义,这对于我们真正了解您在做什么是必要的。如果我们没有完整的代码,很难猜出为什么赋值没有按照您的预期进行。请阅读上面链接的页面,它将帮助您获得有用的答案。
  • 嗨 Cris,使用 [] 初始化状态;由于存在太多难以简化的依赖关系,因此制作一个最小的示例将非常困难。我编辑了代码以尽可能简化。

标签: matlab for-loop while-loop save


【解决方案1】:

知道了!感谢您的投入。变量未正确分配。

【讨论】:

    猜你喜欢
    • 2013-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-03
    • 2017-06-20
    • 2014-02-01
    • 1970-01-01
    • 2019-12-17
    相关资源
    最近更新 更多