代码之家  ›  专栏  ›  技术社区  ›  Nathan Fellman

如何在matlab中对矩阵进行采样?

  •  7
  • Nathan Fellman  · 技术社区  · 16 年前

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

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

    我想要:

    result =
    
         1     9    
         3    11    
    

    如果没有for循环,我该怎么做?

    4 回复  |  直到 10 年前
        1
  •  12
  •   Will Robertson    16 年前

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

    a(1:2:end,1:2:end)
    
        2
  •  5
  •   gnovice    16 年前

    这应该适用于您的特定示例:

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

    更一般地说:

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

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

        3
  •  2
  •   Tiny Giant    10 年前

    我今天找到这个。 A 是原始矩阵,对每个S元素进行采样。

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

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

        4
  •  1
  •   rocky    14 年前
    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)