MATLAB:如何查找长度大于阈值的单元格索引?

时间:2013-10-10 12:15:38

标签: arrays matlab cell

假设我有一个如下定义的单元格数组:

A = {[1:6],[1:4], [1:6],[1:4],[1:4],[1:6] };  

我想找到长度大于阈值的细胞指数, 我认为这可能有用:

I = cellfun(@(x) find(length(A)>threshold), A, 'UniformOutput', false);

但它没有(它返回一个包含所有1的1x6单元格)

如果有人可以提供帮助,我们将不胜感激!

先谢谢,

<磷>氮

1 个答案:

答案 0 :(得分:2)

你快到了:

I = find(cellfun(@(x)(length(x)>threshold), A))

您希望find超出cellfun。如果cellfun的元素大于Athreshold将返回逻辑数组。您不需要'UniformOutput', false位,因为您为每个单元格返回一个布尔值,因此输出是均匀的。

最后你有length(A),但这是A中的单元格数量,因为你实际想要在代码中由x给出的每个单元格中的向量长度

e.g。

A = {[1:6], [1:4], [1:6], [1:4], [1:4], [1:6]};  
thresold = 5;
I = find(cellfun(@(x)(length(x)>threshold), A))

I =

   1   3   6