Arrays 在MATLAB中,对于2D数组,如何获得首先迭代其他维度的索引

Arrays 在MATLAB中,对于2D数组,如何获得首先迭代其他维度的索引,arrays,matlab,row-major-order,column-major-order,Arrays,Matlab,Row Major Order,Column Major Order,我有一个算法,它使用单个索引I=1:6填充2x3子地块数组 根据文件, 子图(m,n,p)将当前图形划分为m×n网格,然后 在p指定的位置为子地块创建轴。MATLAB® 按行对其子批次进行编号,以便第一个子批次是第一个子批次 列,第二个子批次是 第一排,依此类推 因此,当使用i=1:6对2x3子批次数组进行迭代时,将导致以下行主顺序: +---+---+---+ | 1 | 2 | 3 | | 4 | 5 | 6 | +---+---+---+ 如果我想按列的主要顺序填充子批次,我必须将索引1

我有一个算法,它使用单个索引
I=1:6
填充2x3子地块数组

根据文件,

子图(m,n,p)
将当前图形划分为m×n网格,然后 在p指定的位置为子地块创建轴。MATLAB® 按行对其子批次进行编号,以便第一个子批次是第一个子批次 列,第二个子批次是 第一排,依此类推

因此,当使用
i=1:6
对2x3子批次数组进行迭代时,将导致以下行主顺序:

+---+---+---+
| 1 | 2 | 3 |
| 4 | 5 | 6 |
+---+---+---+
如果我想按列的主要顺序填充子批次,我必须将索引123456转换为142536


如何实现这一点?

您只需创建一个2D索引数组,即
3 x 2
,将其转换为
2 x 3
,然后相对于初始矩阵,列主索引变为行主索引

indices = reshape(1:6, [], 2).';
然后,您可以通过循环这些索引来创建子地块

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

您可以创建一个位置数组,例如Pos=[1 4 2 5 3 6],当您使用子地块(例如子地块(2,3,Pos(i))等)时,可以对其进行迭代…@Sardar_Usama为什么会更快?