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!

 採用された回答

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.
Ameer Hamza
Ameer Hamza 2020 年 5 月 20 日
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 ExchangeCreating and Concatenating Matrices についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by