【问题标题】:How to run two for loop together?如何同时运行两个for循环?
【发布时间】:2013-12-27 11:09:29
【问题描述】:

在我的代码中,我想改变两个参数,即“i”和“t”。 "i" 和 "t" 的值会有所不同,如果 t=1:10 并且 i=(t+1):11 那么,

首先我需要得到 i = 2 3 4 5 .... 11 和 t=1 的值

那么我需要得到 i = 3 4 5 .... 11 和 t=2 的值

然后我需要获取 i= 4 5 .... 11 和 t=3 的值

。 . .

我需要得到 i= 8 9 .... 11 和 t=10 的值

我的代码如下:

        W=12;

        for t=1:10
          for i=t+1:11        
            s{i} =(fullfact(ones(1,i)*(W + 1)) - 1);
            B{i}= unique((sort(s{i}(sum(s{i},2) == i,:),2)),'rows');
            B{i}(B{i} == 0) = inf;
            A{i}= sort(B{i}, 2);
            A{i}(A{i}==inf) = 0;    
            idx = (A{i}(:,i-t)==1 );
            A {i,t+1}= A{i}(idx,:);
        end
     end

所以,A 的值应该是 9 列和 10 行。但我不会这样。 需要 MatLab 专家的帮助!

【问题讨论】:

  • 你的 i=1:5 不超过 10。
  • 抱歉,应该是 i=1:10。更新请检查。
  • 什么是 W?什么尺寸?
  • W=12,你现在可以检查@NKN
  • 这部分会产生错误:idx = (A{i}(:,i-t)==1 );当 i==t.

标签: matlab for-loop nested-loops


【解决方案1】:

你快到了

oneLessThanTStart = t-1;
for t=1:oneLessThanTStart
  for i=0:10

  end
end

应该提到我从未见过matlab。

【讨论】:

  • matlab 中的索引从 1 而不是 0 开始!!所以也许 i=1:11。
  • 我不清楚 t=1 是什么:oneLessThanTStart t 应该在 0 到 (i-1) 之间变化。
  • @marianoc84 我尝试在外部循环中使用 t 但代码仍然无法正常工作。我不确定我需要另外更改哪些内容。如果你能告诉我,那将是很大的帮助。
  • 既然你交换索引,我认为你应该对代码进行一些更改,你这样做了吗?发布一个我们可以自己运行的代码。
  • 我已经更新了代码。您可以自己运行它,但无法获得所需的价值。 @marianoc84
【解决方案2】:

t 循环应该是外部的:

for t=1:9
   for i=1:(t-1)
        // it could be necessary swap some t with i and vice versa
   end
 end

告诉我。这是关于 nested loop 而不是 Matlab。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-28
    • 2011-03-29
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多