Azzera filtri
Azzera filtri

Making consecutive 1s and 0s as a seperate element

1 visualizzazione (ultimi 30 giorni)
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 Commenti
Sudhakar Shinde
Sudhakar Shinde il 17 Ott 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 il 17 Ott 2020
I understand what you are stating but my aim is to make consecutive 1s and 0s as seperate elements in an array

Accedi per commentare.

Risposta accettata

Ameer Hamza
Ameer Hamza il 17 Ott 2020
Modificato: Ameer Hamza il 17 Ott 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

Più risposte (2)

KSSV
KSSV il 17 Ott 2020

Adam Danz
Adam Danz il 17 Ott 2020
Modificato: Adam Danz il 17 Ott 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

Categorie

Scopri di più su Live Scripts and Functions in Help Center e File Exchange

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by