2017-06-26 37 views
1

私のデータは、以下の構造を有する:matlabのセル配列で空の配列を見つけるには?

Cell_Array = {{[1]},{[]},{[8]}}; 

私は、二重ループを作ることなく、このセル配列に空の配列を見つけることができますどのように?

これは機能しません。このセル配列ではすべてが空ではないからです。

~cellfun(@isempty,Cell_Array(:)) 

あなたがここに見ることができるように:

isempty(Cell_Array{1,2}) 
ans = 0 

を場合にのみ動作します。

isempty(Cell_Array{1,2}{1,1}) 
ans = 1 

がどのように私はcellfunでエレガントにこの問題を解決することができますか?

答えて

2

。他のセルには{[]}falseを含むセルの論理インデックスはtrueです。

result = cellfun(@(x)isequal(x,{[]}), Cell_Array); 
1

だけでなく、すべてのあなたのデータはあなたの例では1のようであると仮定して行うことができます一つの方法は次のとおりです。これは、特定の構造を有する配列に依存せずに動作します

C = [Cell_Array{:}]; 
~cellfun(@isempty,C(:)) 

ans = 

1 
0 
1 
2
>> Cell_Array = {{[1]},{[]},{[8]}}; 
>> cellfun(@(x)isempty(x{:}),Cell_Array) 
ans = 
    0  1  0 
関連する問題