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!

 채택된 답변

Ameer Hamza
Ameer Hamza 2020년 5월 20일
편집: Ameer Hamza 2020년 5월 20일

1 개 추천

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

Daria Ivanchenko
Daria Ivanchenko 2020년 5월 20일
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 2020년 5월 20일
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 2020년 5월 20일
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 2020년 5월 21일
Yes, it works! Thank you so much!!!

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

질문:

2020년 5월 20일

댓글:

2020년 5월 21일

Community Treasure Hunt

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

Start Hunting!

Translated by