Making consecutive 1s and 0s as a seperate element

1 次查看(过去 30 天)
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 个评论
Sudhakar Shinde
Sudhakar Shinde 2020-10-17
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 2020-10-17
I understand what you are stating but my aim is to make consecutive 1s and 0s as seperate elements in an array

请先登录,再进行评论。

采纳的回答

Ameer Hamza
Ameer Hamza 2020-10-17
编辑:Ameer Hamza 2020-10-17
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

更多回答(2 个)

KSSV
KSSV 2020-10-17

Adam Danz
Adam Danz 2020-10-17
编辑:Adam Danz 2020-10-17
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

类别

Help CenterFile Exchange 中查找有关 Live Scripts and Functions 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by