没有for循环,是否可以在matlab中生成列表[1 2 3 2 3 4 3 4 5 ...]?

廖俊杰*_*廖俊杰 1 matlab

与Python不同,MATLAB列表生成表达式受到限制。在MATLAB中,我只能执行a:b:c。是否可以在不使用for循环的情况下在MATLAB中生成列表[1 2 3 2 3 4 3 4 5 ...]?

Lui*_*ndo 5

N = 3;
M = 4;
result = reshape((1:N).'+(0:M-1), 1, []);
Run Code Online (Sandbox Code Playgroud)

result =
     1     2     3     2     3     4     3     4     5     4     5     6
Run Code Online (Sandbox Code Playgroud)

怎么运行的

(1:N).'+(0:M-1)使用隐式展开来创建M× N矩阵

 1     2     3   ...  M
 2     3     4   ...  M+1
 3     4     5   ...  M+2
   ...
 N     N+1   N+2 ...  N+M-1
Run Code Online (Sandbox Code Playgroud)

然后,reshape(..., 1, [])将此矩阵重塑为行向量,以列优先顺序(向下,然后跨)读取元素。