Измените вектор с шагом и размером окна - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть вектор, например

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

Я хочу "преобразовать" его в матрицу с windowsize=4 и stepsize=2, чтобы полученная матрица была

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

1 Ответ

0 голосов
/ 27 февраля 2019

Вы можете настроить матрицу индексации, а затем просто индексировать в 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);

Примечание;в этом случае idx и b одинаковы, но вам нужен последний шаг индексации, предполагая, что A - это не просто последовательные целые числа в вашем реальном примере.

...