7

我在 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

4 回答 4

12

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

a(1:2:end,1:2:end)
于 2009-11-24T07:03:19.147 回答
5

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

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

更一般地说:

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

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

于 2009-11-24T06:21:55.487 回答
2

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

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

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

于 2016-03-16T22:34:55.697 回答
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)
于 2011-10-28T17:41:47.170 回答