如果我正确地解释了您想要的内容,对于这个 7 x 4 x 24 矩阵中的每个唯一 3D 位置,您需要确保我们从共享相同 3D 空间位置的 10 个堆栈中的一个中随机采样。
我建议您做的是生成 1 到 10 的随机整数,大小为 7 x 4 x 24 长,然后sub2ind
与ndgrid
. 你当然可以使用randi
你在评论中提到的。
我们将使用ndgrid
生成 3D 坐标网格,然后使用我们生成的随机整数来访问第四维。鉴于您的 4D 矩阵存储在 中A
,请执行以下操作:
rnd = randi(size(A,4), size(A,1), size(A,2), size(A,3));
[R,C,D] = ndgrid(1:size(A,1), 1:size(A,2), 1:size(A,3));
ind = sub2ind(size(A), R, C, D, rnd);
B = A(ind);
请记住,上述代码适用于任何4D 矩阵。第一行代码生成一个 7 x 4 x 24 的随机整数矩阵[1,10]
。接下来,我们生成一个 3D 空间坐标网格,然后用于sub2ind
生成列主索引,我们可以从矩阵A
中采样,这样矩阵的每个唯一 3D 空间位置A
仅从一个块和一个块中采样。然后,我们使用这些列主要索引进行采样A
以生成我们的输出矩阵B
。