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

4 visualizaciones (últimos 30 días)
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.

Respuesta aceptada

Image Analyst
Image Analyst el 23 de En. de 2023
Editada: Image Analyst el 23 de En. de 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 comentarios
Kendell
Kendell el 23 de En. de 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 el 23 de En. de 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.

Iniciar sesión para comentar.

Más respuestas (0)

Etiquetas

Productos


Versión

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by