【问题标题】:Maintaining original order and dimensions of a 3D matrix while using sort在使用排序时保持 3D 矩阵的原始顺序和维度
【发布时间】:2014-05-09 17:31:51
【问题描述】:

我正在使用一个相当大的 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 矩阵,因为它不保留原始尺寸。有没有办法使用排序功能来纠正这个问题?我也愿意接受其他建议,但我只是想确保我没有遗漏任何东西。

提前致谢。

【问题讨论】:

    标签: matlab sorting matrix


    【解决方案1】:

    看看这是不是你想要的-

    ab = r(:,:,sort([4:n:size(r,3) 5:n:size(r,3)]))
    

    【讨论】:

    • 谢谢,就是这样!我尝试了类似的方法,但结果大不相同。
    猜你喜欢
    • 2015-08-05
    • 1970-01-01
    • 2020-09-23
    • 2016-11-19
    • 1970-01-01
    • 2012-03-16
    • 2021-07-09
    • 1970-01-01
    • 2021-04-15
    相关资源
    最近更新 更多