2

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

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 单元格)

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

提前致谢,

ñ

4

1 回答 1

2

您快到了:

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

你想findcellfun. 如果元素大于或不大于cellfun,将返回一个逻辑数组。您不需要该位,因为您为每个单元格返回一个布尔值,因此输出是统一的。Athreshold'UniformOutput', false

最后你有length(A),但这是A你真正想要的每个单元格中向量的长度的单元格数量,这是x你的代码中给出的

例如

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
于 2013-10-10T12:17:39.850 回答