A compact way to remove empty rows in a cell array matrix ?

17 vues (au cours des 30 derniers jours)
Sim
Sim le 11 Août 2022
Modifié(e) : Sim le 11 Août 2022
A compact way to remove empty rows in a cell array matrix, as the following one?
>> a
a =
8×2 cell array
{'22-Jul-2021 17:00:00'} {[ 49]}
{0×0 double } {0×0 double}
{0×0 double } {0×0 double}
{0×0 double } {0×0 double}
{0×0 double } {0×0 double}
{'27-Jul-2021 20:00:00'} {[ 123]}
{'28-Jul-2021 06:00:00'} {[ 21]}
{'29-Jul-2021 13:00:00'} {[ 66]}
I tried this solution, but is there any more compact way ?
i = cellfun(@isempty,a);
a( any(i,2), : ) = []
a =
4×2 cell array
{'22-Jul-2021 17:00:00'} {[ 49]}
{'27-Jul-2021 20:00:00'} {[123]}
{'28-Jul-2021 06:00:00'} {[ 21]}
{'29-Jul-2021 13:00:00'} {[ 66]}
  4 commentaires
Jan
Jan le 11 Août 2022
As long, as the cell does not contain strings (char vectors are okay), cellfun('isempty', a) is faster than using @isempty.
Sim
Sim le 11 Août 2022
thanks a lot @Jan ! :-)

Connectez-vous pour commenter.

Réponse acceptée

Matt J
Matt J le 11 Août 2022
a = {
'22-Jul-2021 17:00:00', 49
'', []
'', []
'', []
'', []
'27-Jul-2021 20:00:00', 123
'28-Jul-2021 06:00:00', 21
'29-Jul-2021 13:00:00', 66 }
a = 8×2 cell array
{'22-Jul-2021 17:00:00'} {[ 49]} {0×0 char } {0×0 double} {0×0 char } {0×0 double} {0×0 char } {0×0 double} {0×0 char } {0×0 double} {'27-Jul-2021 20:00:00'} {[ 123]} {'28-Jul-2021 06:00:00'} {[ 21]} {'29-Jul-2021 13:00:00'} {[ 66]}
a= table2cell(rmmissing(cell2table(a)))
a = 4×2 cell array
{'22-Jul-2021 17:00:00'} {[ 49]} {'27-Jul-2021 20:00:00'} {[123]} {'28-Jul-2021 06:00:00'} {[ 21]} {'29-Jul-2021 13:00:00'} {[ 66]}
  3 commentaires
Sim
Sim le 11 Août 2022
Modifié(e) : Sim le 11 Août 2022
@Matt J, cool, thanks a lot!
@Stephen23, many thasnks :-)

Connectez-vous pour commenter.

Plus de réponses (0)

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!

Translated by