Making consecutive 1s and 0s as a seperate element

2 vues (au cours des 30 derniers jours)
Jetty Rakesh Aditya
Jetty Rakesh Aditya le 17 Oct 2020
Modifié(e) : Ameer Hamza le 17 Oct 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 commentaires
Sudhakar Shinde
Sudhakar Shinde le 17 Oct 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 le 17 Oct 2020
I understand what you are stating but my aim is to make consecutive 1s and 0s as seperate elements in an array

Connectez-vous pour commenter.

Réponse acceptée

Ameer Hamza
Ameer Hamza le 17 Oct 2020
Modifié(e) : Ameer Hamza le 17 Oct 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 commentaires
Ameer Hamza
Ameer Hamza le 17 Oct 2020
Try the updated code.
Jetty Rakesh Aditya
Jetty Rakesh Aditya le 17 Oct 2020
@Ameer Hamza thanks a lot!

Connectez-vous pour commenter.

Plus de réponses (2)

KSSV
KSSV le 17 Oct 2020

Adam Danz
Adam Danz le 17 Oct 2020
Modifié(e) : Adam Danz le 17 Oct 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

Catégories

En savoir plus sur Live Scripts and Functions dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by