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

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 个评论

That is probably about the best you can do.
In case anyone wants to experiment,
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 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]}
As long, as the cell does not contain strings (char vectors are okay), cellfun('isempty', a) is faster than using @isempty.

请先登录,再进行评论。

 采纳的回答

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]}

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Characters and Strings 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by