Find a column number from a cell array

1 view (last 30 days)
I have a cell array from which I just know that some of its columns are "empty" and I would like to find those. For example I have an array:
C={1,'',6,11,''; 2,'',7,12,'';3,'',8,13,'';4,'',9,14,'';5,'',10,15,''}
And I would like my answers to be:
col_num1=2
col_num2=5
(meaning that 2nd and 5th columns are empty, the names for answer are not oblicatory but I would need them later on in my calculation)
  2 Comments
Guillaume
Guillaume on 9 Feb 2016
You do not want to create one variable per empty column. That is going to make subsequent code much harder to write.
You want it all in one variable so you can easily loop over the values.
As a rule, if you start numbering variables, you're doing it wrong. Whatever is in these numbered variables should be collected together in a matrix or cell aray.
Snowfall
Snowfall on 17 Feb 2016
Edited: Snowfall on 17 Feb 2016
Thank you for your answer. It helped me to think my application again so I did it in a different way.

Sign in to comment.

Accepted Answer

Guillaume
Guillaume on 9 Feb 2016
You need to apply the isempty function to each element of C to get a logical matrix. You can use an explicit loop or cellfun. It just then a matter of applying all to that logical matrix to find columns with all empty. Thus:
C = {1,'',6,11,''; 2,'',7,12,'';3,'',8,13,'';4,'',9,14,'';5,'',10,15,''};
emptycolumns = all(cellfun(@isempty, C))
%if you want the column number (often unnecessary, you can use the logical array directly)
emptycolumnsidx = find(emptycolumns)

More Answers (0)

Community Treasure Hunt

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

Start Hunting!