【问题标题】:Need to reset a counter variable in Matlab需要在 Matlab 中重置一个计数器变量
【发布时间】:2015-04-02 06:03:53
【问题描述】:

好的,所以我需要使用下面的 for 循环创建一个数组

      [13 14 15]
      [10 11 12]
      [7 8 9]
      [4 5 6]
      [1 2 3]

这是我目前所拥有的。它可以工作,但功能可能会更漂亮

clc
clear all
m=1;
i=0;
for m=1:15
    i=i+1;
    if m<=3
    matrix(5,i)=m;
    end
    if m>3 && m<=6
    matrix(4,i-3)=m;
        end
        if m>6 && m<=9
    matrix(3,i-6)=m;
        end
        if m>9 && m<=12
    matrix(2,i-9)=m;
        end
        if m>12 && m<=15
    matrix(1,i-12)=m;
        end
    end

我想通过使用另一个从 1 到 3 无限计数并通过不同参数终止的 for 循环来摆脱 i-12 等?

一直在摆弄这个。 任何帮助将不胜感激!

【问题讨论】:

    标签: arrays matlab if-statement for-loop


    【解决方案1】:

    您可以(并且应该!)完全跳过循环:

    flipud(reshape(1:15, 3, 5)')
    

    基于循环的解决方案可能希望使用 嵌套 循环来保持您的 i 变量重置。之后,我们有几个选择。但如果您使用循环,请始终记住为 matrix 预分配内存:

    索引到预先计算的数字向量:

    k = 1:15;
    n = 1;
    matrix = zeros(5,3);
    for m = 5:-1:1
        for i = 1:3
            matrix(m,i) = k(n);
            n = n+1;
        end
    end
    

    或者使用一些算术技巧:

    matrix = zeros(5,3);
    for m = 1:5
        for i = 1:3
            matrix(m,i) = (5-m)*3 +i;
        end
    end
    

    【讨论】:

    • 哇。这很酷!但我认为这有点超出我的范围......我被要求在这个问题中使用循环
    • 这正是我想要的。不完全是阵列,但我想我可以用这个..谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-26
    • 1970-01-01
    • 2016-09-25
    • 1970-01-01
    • 2012-11-19
    • 1970-01-01
    相关资源
    最近更新 更多