使用步长和 window 大小重塑向量

Reshape vector with a step and window size

我有一个向量,例如

A = [1 2 3 4 5 6 7 8]

我想 "reshape" 它与 windowsize=4stepsize=2 矩阵化,这样得到的矩阵是

b = [ 1   3   5;   
      2   4   6;   
      3   5   7;   
      4   6   8 ]

你可以建立一个索引矩阵,然后索引到A...

A = [1 2 3 4 5 6 7 8];

windowsize = 4;
stepsize = 2;

% Implicit expansion to create a matrix of indices
idx = bsxfun( @plus, (1:windowsize).',  0:stepsize:(numel(A)-windowsize) );

b = A(idx);

注意;在这种情况下,idxb 是相同的,但是您需要最后的索引步骤,假设 A 在您的实际示例中不仅仅是连续的整数。