delete zeros in cell array

10 views (last 30 days)
Elysi Cochin
Elysi Cochin on 13 Apr 2021
Commented: Elysi Cochin on 14 Apr 2021
i have a cell_array with values
cellarr = {'b','a','a','a','b';0,'c',0,'b',[];0,'a',0,'d',0;'a','a','b',[],[]};
i wanted to delete the zeros in the cell_array so as to get the new cell array as below
shift the remaining columns to left after deleting the zero
new_cellarr = {'b','a','a','a','b';'c','b',[],[],[];'a','d',[],[],[];'a','a','b',[],[]};
  1 Comment
madhan ravi
madhan ravi on 13 Apr 2021
I think what you are describing is not what show in the expected result.

Sign in to comment.

Accepted Answer

Matt J
Matt J on 13 Apr 2021
Using the attached file sortlidx.m,
cellarr = {'b','a','a','a','b';0,'c',0,'b',[];0,'a',0,'d',0;'a','a','b',[],[]}
cellarr = 4×5 cell array
{'b'} {'a'} {'a'} {'a' } {'b' } {[0]} {'c'} {[0]} {'b' } {0×0 double} {[0]} {'a'} {[0]} {'d' } {[ 0]} {'a'} {'a'} {'b'} {0×0 double} {0×0 double}
map=cellfun(@isnumeric,cellarr);
cellarr(map)={[]};
[~,isort]=sortlidx( ~map ,2,'descend');
cellarr = cellarr(isort)
cellarr = 4×5 cell array
{'b'} {'a'} {'a' } {'a' } {'b' } {'c'} {'b'} {0×0 double} {0×0 double} {0×0 double} {'a'} {'d'} {0×0 double} {0×0 double} {0×0 double} {'a'} {'a'} {'b' } {0×0 double} {0×0 double}

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!