在 MATLAB 中,对于二维数组,我如何获得一个索引,该索引将首先迭代另一个维度

In MATLAB, for a 2D array how do I get an index that will iterate the other dimension first

我有一个算法可以使用单个索引 i=1:6.

填充 2x3 子图数组

根据文档,

subplot(m,n,p) divides the current figure into an m-by-n grid and creates an axes for a subplot in the position specified by p. MATLAB® numbers its subplots by row, such that the first subplot is the first column of the first row, the second subplot is the second column of the first row, and so on.

因此,当使用 i=1:6 遍历 2x3 子图数组时,将导致以下行优先顺序:

+---+---+---+
| 1 | 2 | 3 |
| 4 | 5 | 6 |
+---+---+---+

如果我想按列优先顺序填充子图,我必须将索引 1 2 3 4 5 6 转换为 1 4 2 5 3 6。

我该怎么做?

您可以创建一个 3 x 2 的二维索引数组,将其转置为 2 x 3,然后相对于初始矩阵,列优先变为行优先。

indices = reshape(1:6, [], 2).';

然后您可以通过遍历这些索引来创建您的子图

for k = 1:numel(indices)
    subplot(2, 3, indices(k))
end