Find the indexes of all the zeros or nonzeros in a cell array that contains empty cells
10 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Dennis Huver
le 15 Sep 2017
Commenté : Dennis Huver
le 15 Sep 2017
Is there a way to find the indexes of all nonzero elements in a cell that contains empty cells too? I know of the way to first replace all of empty cells with 0 and they use the find and cellfun function. But is there a simpler way? Lets say A={2 5 0 10 0 [] 22 0 13} index=find(~cellfun(@isempty,A)) % index for non-empty cells Is there a way to find indexes for those who contain positive numbers only? Thanks btw using MatLab 2015a
1 commentaire
Réponse acceptée
Stephen23
le 15 Sep 2017
Modifié(e) : Stephen23
le 15 Sep 2017
>> A = {2,5,0,10,0,[],22,0,13};
>> cellfun(@(a)~isempty(a)&&a>0,A)
ans =
1 1 0 1 0 0 1 0 1
But note that doing numeric operations on the contents of a cell array is quite inefficient. You could be much better off putting numeric data into a numeric array, and then all numeric operations will be much simpler and much more efficient:
>> A = {2,5,0,10,0,[],22,0,13};
>> A(cellfun('isempty',A)) = {NaN};
>> V = [A{:}]
V =
2 5 0 10 0 NaN 22 0 13
>> V>0
ans =
1 1 0 1 0 0 1 0 1
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Matrix Indexing dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!