2016-07-03 33 views
0

問題查找和含有多於一個條目

我有一個單元陣列1x15350,我想查找包含一個以上的值的每一個細胞,因此是更大然後1x1的提取物的細胞。

例如:

A={{1}, {2 3}, {4}} 

A = 

{1x1 cell} {1x2 cell} {1x1 cell} 

問題

我如何提取只有那些更大然後1x1 cell細胞?

回答

3

解決方案

用下面的辦法:

out = A(cellfun(@numel,A)>1); 

結果

我跑到下面的腳本:

A={{1}, {2 3}, {4}}; 
B={{1}, {2 3}, {4},{9,2,1},{8}}; 
outA = A(cellfun(@numel,A)>1); 
outB = B(cellfun(@numel,B)>1); 

,並得到日ESE結果:

outA = 

{1x2 cell} 


outB = 

{1x2 cell} {1x3 cell} 

outA{1} = 

[2] [3] 
+1

cellfun具有模仿@numel但速度更快的選擇。它被稱爲「prodofsize」。對於具有10000個元素的單元數組c:'>> tic,對於i = 1:1000,y = cellfun(@ numel,c);結束,toc 已用時間爲10.050336秒。 >> tic,for i = 1:1000,y = cellfun('prodofsize',c);結束,toc 已用時間爲0.073865秒。 >>所有(cellfun( 'prodofsize',C)== cellfun(@numel,C)) ANS = 1' – SCFrench

0

試試這個:

A(cellfun(@numel,A)==1) = [] 
+2

它總是最好的說明添加到您所張貼作爲一個答案的代碼,這樣可以幫助訪問者理解爲什麼這是一個很好的答案。 – abarisone