Split the long vector into shorter ones

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!

 Respuesta aceptada

Ameer Hamza
Ameer Hamza el 20 de Mayo de 2020
Editada: Ameer Hamza el 20 de Mayo de 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 comentarios

Daria Ivanchenko
Daria Ivanchenko el 20 de Mayo de 2020
Thanks a lot! It works. And what should I do if I want to split other columns in the matrix based on the same thing? I mean I have also other columns in the matrix, so I want to split it into the smaller ones based on the 1 or 0 number in my vector A. So the vector A is one of the columns inside a bigger matrix. Sorry if I explained it a bit confusing :)
Ameer Hamza
Ameer Hamza el 20 de Mayo de 2020
Can you share the format of your matrix A? What is its shape? How do you want to distribute each column? Can you give an example using a small matrix?
Daria Ivanchenko
Daria Ivanchenko el 20 de Mayo de 2020
Yes, sure! So the matrix has the size of 8 columns and 9000 rows. The 8th column is the vector I was asking about, so it contains these zeros and ones. If I have 1 in this vector and then zeros and then 1 again, I want the whole matrix to be splitted from 1 to next 1.
Following will work if A is the matrix with last column 0 and 1.
groups = cumsum(A(:,end));
B = splitapply(@(x) {x}, A, groups);
Daria Ivanchenko
Daria Ivanchenko el 21 de Mayo de 2020
Yes, it works! Thank you so much!!!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Creating and Concatenating Matrices en Centro de ayuda y File Exchange.

Preguntada:

el 20 de Mayo de 2020

Comentada:

el 21 de Mayo de 2020

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by