2017-06-26 3 views
1

Mes données a la structure suivante:Comment trouver un tableau vide dans un tableau de cellules dans matlab?

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

Comment puis-je trouver le tableau vide dans ce réseau de cellules sans faire une double boucle?

Cela ne fonctionne pas. Puisque tout n'est pas vide dans ce tableau de cellules.

~cellfun(@isempty,Cell_Array(:)) 

Comme vous pouvez le voir ici:

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

Il ne fonctionne que si:

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

Comment puis-je résoudre ce avec élégance cellfun?

Répondre

2

Cela fonctionne sans compter sur le tableau ayant une structure spécifique. Il donne un index logique avec true pour les cellules qui contiennent {[]} et false pour les autres cellules.

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

, d'une façon que vous pouvez faire en supposant que toutes vos données sont comme celui de votre exemple:

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