与Python不同,MATLAB列表生成表达式受到限制。在MATLAB中,我只能执行a:b:c。是否可以在不使用for循环的情况下在MATLAB中生成列表[1 2 3 2 3 4 3 4 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, [])
将此矩阵重塑为行向量,以列优先顺序(向下,然后跨)读取元素。