how to remove empty cells from a cell array

78 views (last 30 days)
Manar Anwar
Manar Anwar on 29 Nov 2022
Edited: Manar Anwar on 29 Nov 2022
I have a cell array of size 11x3815 which contains a lot of empty cells that I would like to get rid of, the cell array looks like this
We would like to have only the first column of the cell array, and only keep the rows that has cells with contents in them, I tried one method but it gave me the following shape
which is the first column and under it we have the cells with content, but we need to keep each of them in its original row and not move them , so what is an easy method to do this? I attach the cell aray that I am working on.
THank you in advance
  2 Comments
Image Analyst
Image Analyst on 29 Nov 2022
What if there are two or more columns that have non-empty cells? Would you want to keep all columns that have something in them? Or are you guaranteed that only 0 or 1 column will have a non-empty cell in it?
Manar Anwar
Manar Anwar on 29 Nov 2022
Edited: Manar Anwar on 29 Nov 2022
Yes, I want keep all columns that have something in them, I know a cell array can't have a variable length for each row, so each row will have the size of the row that has more cells with contents but that is fine even if we still had some epmty cells there to do this, it will not be a huge problem. I just want to reduce the cell array to a shape where we can clearly identify the cells in each row.

Sign in to comment.

Answers (1)

Arif Hoq
Arif Hoq on 29 Nov 2022
a=load("cellArray.mat");
A=a.I;
checkemptycell = any(~cellfun('isempty',A), 1);
output = A(:,checkemptycell)
output = 11×8 cell array
{[103]} { 0×8 double} { 0×8 double} { 0×8 double} { 0×8 double} { 0×8 double} { 0×0 double} { 0×0 double} {[104]} { 0×8 double} { 0×8 double} { 0×8 double} { 0×8 double} { 0×8 double} { 0×0 double} { 0×0 double} {[109]} { 0×8 double} { 0×8 double} { 0×8 double} { 0×8 double} { 0×8 double} { 0×0 double} { 0×0 double} {[132]} { 0×8 double} { 0×8 double} { 0×8 double} { 0×8 double} { 0×8 double} { 0×0 double} { 0×0 double} {[133]} { 0×8 double} { 0×8 double} { 0×8 double} { 0×8 double} { 0×8 double} { 0×0 double} { 0×0 double} {[166]} { 0×8 double} { 0×8 double} { 0×8 double} { 0×8 double} { 0×8 double} { 0×0 double} { 0×0 double} {[167]} {355×8 double} { 0×8 double} { 0×8 double} { 0×8 double} { 0×8 double} { 0×0 double} { 0×0 double} {[168]} { 0×8 double} { 0×8 double} { 0×8 double} { 0×8 double} { 0×8 double} {493×8 double} {493×8 double} {[341]} { 0×8 double} { 0×8 double} { 0×8 double} { 0×8 double} { 0×8 double} { 0×0 double} { 0×0 double} {[342]} { 0×8 double} { 0×8 double} { 0×8 double} {455×8 double} {455×8 double} { 0×0 double} { 0×0 double} {[343]} { 0×8 double} {490×8 double} {490×8 double} { 0×8 double} { 0×8 double} { 0×0 double} { 0×0 double}

Products


Release

R2021b

Community Treasure Hunt

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

Start Hunting!