我在MATLAB中有一个矩阵,我想从中获取每个其他条目的样本:
a =
1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16
我想要:
result =
1 9
3 11
如果没有for循环,我怎么能这样做?
答案 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)