2013-10-10 26 views
2

假設我有一個單元陣列定義如下:MATLAB:如何找到長度大於閾值的單元的索引?

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

如果任何人都可以提供幫助,將不勝感激!

由於事先

ň

回答

2

就快:

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

你想find成爲cellfun之外。如果A的元素大於或等於threshold,則cellfun將返回邏輯數組。您不需要'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 
+0

感謝您的解釋! – Neil

相關問題