Borrar filtros
Borrar filtros

Making consecutive 1s and 0s as a seperate element

1 visualización (últimos 30 días)
Jetty Rakesh Aditya
Jetty Rakesh Aditya el 17 de Oct. de 2020
Editada: Ameer Hamza el 17 de Oct. de 2020
If I have a cell say a= [1 0 0 0 1 1 1 1 0 1] I want b= [ 1,0 0 0, 1 1 1 1,0,1]
  2 comentarios
Sudhakar Shinde
Sudhakar Shinde el 17 de Oct. de 2020
When you create vector in matlab, two elements of vector are separated by comma (,) or space. Meaning of both are same.
Jetty Rakesh Aditya
Jetty Rakesh Aditya el 17 de Oct. de 2020
I understand what you are stating but my aim is to make consecutive 1s and 0s as seperate elements in an array

Iniciar sesión para comentar.

Respuesta aceptada

Ameer Hamza
Ameer Hamza el 17 de Oct. de 2020
Editada: Ameer Hamza el 17 de Oct. de 2020
You can create a cell array
a = [1 1 0 0 0 1 1 1 1 0 1 1];
idx = [1 find(diff(a)~=0)+1 numel(a)+1];
C = cell(numel(idx)-1, 1);
for i = 1:numel(C)
C{i} = a(idx(i):idx(i+1)-1);
end
Result
>> C{1}
ans =
1 1
>> C{2}
ans =
0 0 0
>> C{3}
ans =
1 1 1 1
>> C{4}
ans =
0
>> C{5}
ans =
1 1
  3 comentarios
Ameer Hamza
Ameer Hamza el 17 de Oct. de 2020
Try the updated code.
Jetty Rakesh Aditya
Jetty Rakesh Aditya el 17 de Oct. de 2020
@Ameer Hamza thanks a lot!

Iniciar sesión para comentar.

Más respuestas (2)

KSSV
KSSV el 17 de Oct. de 2020

Adam Danz
Adam Danz el 17 de Oct. de 2020
Editada: Adam Danz el 17 de Oct. de 2020
a = [1 0 0 0 1 1 1 1 0 1];
consecGroups = findgroups(cumsum([true, diff(a)~=0]));
b = arrayfun(@(g){a(consecGroups==g)},1:max(consecGroups));
% Show results
celldisp(b)
b{1} = 1 b{2} = 0 0 0 b{3} = 1 1 1 1 b{4} = 0 b{5} = 1

Categorías

Más información sobre Live Scripts and Functions en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by