matlab连续的单元格

时间:2015-04-27 18:11:06

标签: matlab

单元格数组的列包含一些0和1。

A=[0 0 1 1 1 1 0 0 0 1 0 0];

我希望结果只包含所有索引的索引,以便所有连续索引在一个单元格中聚集在一起:

result = 
3    4    5    6
10

2 个答案:

答案 0 :(得分:1)

difffind&的一种方法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”的索引。