我使用相当大的3D矩阵(32x87x378),我希望能够提取矩阵的每个第N个元素,同时保持它们的顺序相同。与上一个问题类似,我问过:Matlab: Extracting Nth element of a matrix, while maintaining the original order of matrix
我给出的方法非常实用(而且简单),并且在大多数情况下效果很好。对于随机(1x20)矩阵,我想要每5个值,从4和5开始(这样我留下了1x8矩阵(ab)的元素4,5,9,10,14,15,19,20 )。它完成如下:
r = rand(1,20);
n = 5;
ab = r(sort([4:n:numel(r) 5:n:numel(r)]))
我的问题是,这个方法如何用于3D矩阵r的第三维(或者它可以吗?),例如:
r = rand(2,5,20);
应该相当简单,例如:
n = 5;
ab = r(sort([4:n:numel(r) 5:n:numel(r)],3));
然而,这将给我一个1x80矩阵,因为它不保留原始尺寸。有没有办法使用sort函数来纠正这个问题?我也对其他建议持开放态度,但我只是想确定我没有遗漏任何东西。
提前致谢。
答案 0 :(得分:1)
看看这是不是你想要的 -
ab = r(:,:,sort([4:n:size(r,3) 5:n:size(r,3)]))