【问题标题】:Excute a for loop after the completion of a previous loop在前一个循环完成后执行一个 for 循环
【发布时间】:2015-03-04 11:32:00
【问题描述】:

我已经编写了以下 for 循环;

%Name Variables
%Time Data Structure
Time_DataC1 = [];
for aa = 1:38
    for bb = 1:38
    fieldname = ['Time' num2str(aa)];
    Time_DataC1.(fieldname) = dataCOMB{1,1}{1,bb}(1:1024,1);
    end
end

它创建了一个时间数据结构。基本上,这段代码从一个数组中的一个数组中获取数据,并将第一列命名为 Time1、Time2 到 Time38 等。它对 38 个数据集执行此操作。但是,一旦完成,是否可以将代码更改为

 Time_DataC1.(fieldname) = dataCOMB{1,cc}{1,bb}(1:1024,1);

其中 cc 现在从 1 变为 2。然后值 bb 从 1 开始并再次继续到 38。这将允许我记录从 Time39 到 Time76 的下一次数据集。完成此操作后,是否可以将 cc 更改为 3 并重复该过程,直到 cc 最终以 40 的值结束?

我曾尝试使用 ifelseif 语句,但我不断收到错误。

【问题讨论】:

  • 成功了! :) 谢谢 :) 令人难以置信的是,最简单的方法是如何奏效的!

标签: matlab if-statement for-loop conditional


【解决方案1】:

你可以使用:

for cc=1:2
    for aa=1:38
        for bb = 1:38
            fieldname = ['Time' num2str(aa + (cc-1)*38)]; 

这样,您的字段名称使用外部循环 (cc) 来计算您已经计数到 38 的次数。

【讨论】:

  • 我注意到一个错误。它将文件 Time1 正确命名为 Time 78,但它收集了错误的数据,我不明白为什么。正如你从上面看到的,cc 应该保持在 1,bb 应该从 1 开始并以 1 的增量移动,直到达到 38 的值。这将给我 Time1-38。然后 cc 应更改为 2 并保持在此值,直到 bb 再次从 1 增加到 38。但是,我遇到了第一个数据取自 U_Velocity.(fieldname) = dataCOMB{1,1}{1,38}(1:1024,2); 的问题。其中 bb=38 而不是 1。关于如何解决此问题的任何想法?
  • 对不起。我不能完全理解你的问题。你什么时候到达dataCOMB{1,1}{1,38}(1:1024,2);?在您的问题中,您遍历 dataCOMB{1,cc}{1,bb}(1:1024,1); - 现在让我问 - 你需要 aa 做什么?除了名字?还是应该只是一个循环而不是两个循环?
  • 我想通了。它应该只用于一个循环而不是两个,所以我只是调整了代码,它现在可以工作了
猜你喜欢
  • 2019-03-06
  • 1970-01-01
  • 1970-01-01
  • 2021-02-15
  • 1970-01-01
  • 2011-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多