单元格数组的列包含一些0和1。
A=[0 0 1 1 1 1 0 0 0 1 0 0];
我希望结果只包含所有索引的索引,以便所有连续索引在一个单元格中聚集在一起:
result =
3 4 5 6
10
答案 0 :(得分:1)
diff
,find
&的一种方法mat2cell
-
%// Find lengths of islands of nonzeros
dfA = diff([0 A 0])
lens = find(dfA==-1) - find(dfA==1)
%// Get corresponding indices for each element
vals = A.*(1:numel(A))
%// Pack them up into cells based on the runlengths
out = mat2cell( vals(A==1) , 1 , lens )
示例运行 -
>> A
A =
1 0 0 0 1 1 1 1 0 0 0 1 1 0
>> celldisp(out)
out{1} =
1
out{2} =
5 6 7 8
out{3} =
12 13
答案 1 :(得分:0)
在你提到“cellarray”的问题中,在代码中,变量“A”是一个数组。 而且,提供的“结果”似乎与数组“A”的内容不一致:第一个“1”的索引是“2”而不是“3”。
如果要使用的变量实际上是一个数组,则可以使用内置函数“find”轻松找到“1”的索引。