我们都知道如何使用像[A:1:n:end]之类的索引选择每隔一个n元素。假设我有一个1000x1阵列,我将它(概念上)划分为5个元素的块,我想选择每个其他块,即选择A [1],A [2],A [3],A [4 ],A [5]和A [11],A [12],A [13],A [14],A [15],......,你明白了。
当然我可以预先生成索引数组并使用它,但我想知道是否有更方便的方法。
答案 0 :(得分:0)
所以实际上你正试图创建一个方波索引函数,如
之类的东西n = 1:numel(A); %// assuming A is a vector (i.e. 1D)
w = 2^-3;
idx = sin(2*pi*w*n) > 0;
然后调整w
以更改块宽。
可选地
w = 3
idx = floor(mod(0:n-1),2*w)/w);
答案 1 :(得分:0)
您可以将数组重新整形为矩阵:
A = rand(1000,1);
n = 5;
B = reshape(A,n,[]);
现在B
的每一列都是一个组:
B(:,1) == A(1:5)
B(:,2) == A(6:10)
...
从那里你可以选择B的每个其他列,就像你对矢量一样:
B = B(:,1:2:end);