Split the long vector into shorter ones
6 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Daria Ivanchenko
am 20 Mai 2020
Kommentiert: Daria Ivanchenko
am 21 Mai 2020
Hi!
I have a long vector that I want to split into the shorter ones. The vector contains only ones and zeros. I would like to split the vector from 1 to the next 1 (and not including this 1). For example, I have a 17x1 vector A = [1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0] . I want to split it into smaller ones. So in the end I would like to have: В = [1 0 0 0], С = [1 0 0 0 0], D = [1 0 0 0 0 0], E = [1 0]. How can I do it?
Thanks a lot fot any help!
0 Kommentare
Akzeptierte Antwort
Ameer Hamza
am 20 Mai 2020
Bearbeitet: Ameer Hamza
am 20 Mai 2020
Try this
A = [1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0];
groups = cumsum(A);
B = splitapply(@(x) {x}, A, groups);
It creates a cell array with split arrays. This link show why you should avoid naming variables B, C, D, .. : https://www.mathworks.com/matlabcentral/answers/304528-tutorial-why-variables-should-not-be-named-dynamically-eval
5 Kommentare
Ameer Hamza
am 20 Mai 2020
Following will work if A is the matrix with last column 0 and 1.
groups = cumsum(A(:,end));
B = splitapply(@(x) {x}, A, groups);
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!