arrays - 需要在Matlab中重置计数器变量

标签 arrays matlab if-statement for-loop

好的,所以我需要使用以下 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 等?

摆弄这个有一段时间了。 任何帮助将不胜感激!

最佳答案

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

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

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

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

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

关于arrays - 需要在Matlab中重置计数器变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28292201/

相关文章:

c++ - 嵌套 ifs 与串行逻辑 block

javascript - 尝试在 Canvas 中延迟循环播放图像

php - Jquery 按选项标签分割

javascript - 如何使用多选小部件过滤 KendoUI 网格?

excel - 每次循环后将信息写入 Excel

c++ - 如何在 C++ 中使用 MATLAB 函数 randn?

mysql - 按子键分组,但如果不是 1 则显示 0 的新读取

java - 从数组中删除重复的字符串?

graphics - 在 Matlab 中内置颜色图

r - 如何在R中基于多个序数变量创建二元变量?