How would I split a vector in two based on the data values of 1 or 0?

4 views (last 30 days)
Create two vectors from a long vector consiting of 1s and 0s. I have some data to sort and I have the values in binary form in a vector of a 43000x1 consisting of just 1s and 0s. I need to split this vector into two vectors, one consisting of 1s, and the other consisting of the 0s. This will result in two different sized vectors.

Accepted Answer

Image Analyst
Image Analyst on 23 Jan 2023
Edited: Image Analyst on 23 Jan 2023
vec = randi([0, 1], 43000, 1)
vec = 43000×1
0 0 0 0 0 0 1 1 0 1
mask = vec == 1;
vec0 = vec(~mask);
vec1 = vec(mask);
whos vec0;
Name Size Bytes Class Attributes vec0 21552x1 172416 double
whos vec1
Name Size Bytes Class Attributes vec1 21448x1 171584 double
% Or another way
vec0 = zeros((length(vec) - nnz(vec)), 1);
vec1 = ones(nnz(vec), 1);
whos vec0
Name Size Bytes Class Attributes vec0 21552x1 172416 double
whos vec1
Name Size Bytes Class Attributes vec1 21448x1 171584 double
  2 Comments
Kendell
Kendell on 23 Jan 2023
Thank you, that worked! I have another question to kind of add on to this one if you don't mind. Say that I have a 43000 x 50 matrix, could I organize it based on whether the first column recieved a 1 or a 0? Therefore I could get 2 Matricies. For your example, it would result in a 21448 x 50 Matrix based on 1s and a 21552 x 50 Matrix based on 0s.
Image Analyst
Image Analyst on 23 Jan 2023
Not sure what you mean. A column is more than a single number.
Anyway, you can do masking on the first column and apply that to all columns:
m = randi([0, 1], 43000, 50);
% Make mask based on first column ONLY.
rowsWith1 = m(:, 1) == 1;
m0 = m(~rowsWith1, :);
m1 = m(rowsWith1, :);
whos m0;
Name Size Bytes Class Attributes m0 21326x50 8530400 double
whos m1
Name Size Bytes Class Attributes m1 21674x50 8669600 double
Note however that m0 and m1 will have a mixture of 0s and 1s in columns 2-50. Only the first column will be all 0 or all 1.

Sign in to comment.

More Answers (0)

Categories

Find more on MATLAB in Help Center and File Exchange

Products


Release

R2022b

Community Treasure Hunt

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

Start Hunting!