Removing empty cells from cell array
7 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Joel Schelander
le 26 Mar 2021
Commenté : Joel Schelander
le 26 Mar 2021
G is a cell array:
G={16x16 cell 16x16 cell 16x16 cell 16x16 cell 16x16 cell 16x16 cell}
Each cell look like this: G{1}=[1 [] 3 ; 4 [] 7]; (but 16x16)
I want to remove these empty cells []. I have tried
index = cellfun(@isempty, G) == 0;
Gnew = G(index)
Without success. How can I solve this?
2 commentaires
Stephen23
le 26 Mar 2021
"Each cell look like this: G{1}=[1 [] 3 ; 4 [] 7]; "
I doubt that, as numeric arrays must be rectangular and cannot contain "holes":
[1,[],3;4,[],7]
Please upload some sample data in a mat file by clicking on the paperclip button.
Réponse acceptée
Stephen23
le 26 Mar 2021
Modifié(e) : Stephen23
le 26 Mar 2021
Most likely converting the nested cell array to numeric arrays is going to make processing your data easier:
S = load('G.mat');
GUD = S.GUD
GUD{1}
Convert:
for k = 1:numel(GUD)
idx = ~cellfun(@isempty,GUD{k});
tmp = zeros(size(GUD{k})); % or perhaps NAN.
tmp(idx) = [GUD{k}{idx}];
GUD{k} = tmp;
end
Checking:
GUD
GUD{1}
If you really want to keep the (very inefficient and difficult to work with) nested cell arrays containing scalar numerics, then something like this:
for k = 1:numel(GUD)
idx = ~cellfun(@isempty,GUD{k});
GUD{k}(idx) = {0};
end
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Characters and Strings dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!