我在 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 中有一个矩阵,我想从中对所有其他条目进行采样:
a =
1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16
而且我要:
result =
1 9
3 11
如果没有 for 循环,我怎么能做到这一点?
我不知道自动执行它的多维方式,但是如果您愿意为每个维度指定它,Matlab 的索引就足够了:
a(1:2:end,1:2:end)
这应该适用于您的具体示例:
result = a([1 3],[1 3]);
更一般地说:
result = a(1:2:size(a,1),1:2:size(a,2));
有关 MATLAB 中的索引的更多详细信息,您可以在此处查看文档。
我今天发现了这个。A
是原始矩阵,对每个 s 元素进行采样。
Adown=downsample(downsample(A,s)',s)'
它垂直向下采样矩阵,转置,然后采样正交方向,然后转回。
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)