【问题标题】:How do I sample a matrix in MATLAB?如何在 MATLAB 中对矩阵进行采样?
【发布时间】:2009-11-24 06:20:14
【问题描述】:

我在 MATLAB 中有一个矩阵,我想从中对每个其他条目进行采样:

a =

     1     5     9    13
     2     6    10    14
     3     7    11    15
     4     8    12    16

我想要:

result =

     1     9    
     3    11    

如何在没有 for 循环的情况下做到这一点?

【问题讨论】:

    标签: matlab matrix downsampling


    【解决方案1】:

    我不知道自动执行它的多维方式,但是如果您愿意为每个维度指定它,Matlab 的索引就足够了:

    a(1:2:end,1:2:end)
    

    【讨论】:

    • +1:不知何故,我忘记在我的答案中包含end 语法。接得好。 ;)
    【解决方案2】:

    这应该适用于您的具体示例:

    result = a([1 3],[1 3]);
    

    更一般地说:

    result = a(1:2:size(a,1),1:2:size(a,2));
    

    有关 MATLAB 中的索引的更多详细信息,您可以查看文档here

    【讨论】:

      【解决方案3】:

      我今天发现了这个。 A 是原始矩阵,对每个 s 元素进行采样。

      Adown=downsample(downsample(A,s)',s)'
      

      它垂直向下采样矩阵,转置,然后采样正交方向,然后转回。

      【讨论】:

        【解决方案4】:
        samples_x = floor(linspace(1, size(a,1), new_Nx));
        samples_y = floor(linspace(1, size(a,2), new_Ny));
        new_a = a(samples_x,samples_y)
        

        【讨论】:

        • +1 欢迎来到 Stack Overflow!如果您用几句话解释代码的作用,您的答案可能会更有用。随意使用您问题下方的编辑链接...
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-19
        • 2020-03-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多