delete zeros in cell array

6 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)

Categories

Find more on Cell Arrays in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!