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

时间:2009-11-24 06:20:15

标签: matlab matrix downsampling

我在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 个答案:

答案 0 :(得分:12)

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

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

答案 1 :(得分:5)

这适用于您的具体示例:

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

更一般地说:

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

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

答案 2 :(得分:2)

我今天发现了这个。 A是原始矩阵,每个s元素都会被采样。

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

垂直对矩阵进行下采样,转置,然后对正交方向进行采样,然后进行转置。

答案 3 :(得分:1)

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)