How do I split an array into small array of fixed size with increments by 1?
8 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Alekhya Hati
il 28 Ott 2022
Commentato: Bruno Luong
il 28 Ott 2022
For example, I have an array, say
aa = [2 5 6 10 2 4 2 1 -1 -12 0 3 7];
What I want to do is create arrays of length 4, such as
[2 5 6 10], [5 6 10 2], [6 10 2 4], [10 2 4 2], [2 4 2 1], [4 2 1 -1], ....
and group them into a matrix. I understand this can be done in a for loop, but is there a way to vectorize this process?
0 Commenti
Risposta accettata
Bruno Luong
il 28 Ott 2022
A=randi(10,1,10)
k=4;
B = hankel(A(1:end-k+1),A(end-k+1:end))
3 Commenti
Bruno Luong
il 28 Ott 2022
I never use this command buffer, so I learn something.
It requires the signal processing toolbox though.
Più risposte (1)
DGM
il 28 Ott 2022
Modificato: DGM
il 28 Ott 2022
I'm sure there are other ways, but here's one way.
% the input
A = [2 5 6 10 2 4 2 1 -1 -12 0 3 7];
% the parameter
blocklen = 4;
% generate a 2D array of indices
nrows = numel(A)-blocklen+1;
idx = (1:blocklen) + (0:nrows-1).';
% build the output by direct addressing
B = A(idx)
0 Commenti
Vedere anche
Categorie
Scopri di più su Matrix Indexing in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!