Making consecutive 1s and 0s as a seperate element

1 Ansicht (letzte 30 Tage)
Jetty Rakesh Aditya
Jetty Rakesh Aditya am 17 Okt. 2020
Bearbeitet: Ameer Hamza am 17 Okt. 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 Kommentare
Sudhakar Shinde
Sudhakar Shinde am 17 Okt. 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 am 17 Okt. 2020
I understand what you are stating but my aim is to make consecutive 1s and 0s as seperate elements in an array

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Ameer Hamza
Ameer Hamza am 17 Okt. 2020
Bearbeitet: Ameer Hamza am 17 Okt. 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 Kommentare
Ameer Hamza
Ameer Hamza am 17 Okt. 2020
Try the updated code.
Jetty Rakesh Aditya
Jetty Rakesh Aditya am 17 Okt. 2020
@Ameer Hamza thanks a lot!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

KSSV
KSSV am 17 Okt. 2020

Adam Danz
Adam Danz am 17 Okt. 2020
Bearbeitet: Adam Danz am 17 Okt. 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

Kategorien

Mehr zu Mathematics finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by