从MATLAB数组

时间:2016-03-09 05:45:05

标签: arrays matlab

我们都知道如何使用像[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],......,你明白了。

当然我可以预先生成索引数组并使用它,但我想知道是否有更方便的方法。

2 个答案:

答案 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);