# How to obtain length of number of columns which has data

18 views (last 30 days)

Show older comments

Hi,

I need to loop though the columns in " mTot " and select the columns which has data (for example column 1 and 2).

If I do

length(mTot)

ans

51681

But, I need to obtain the answer as 2 (becuase only column 1 and 2 has data). Can somebody suggest me a method?

Thanks in advance.

##### 4 Comments

dpb
on 25 Mar 2015

### Accepted Answer

Image Analyst
on 25 Mar 2015

Sum the columns and look for zero

columnSums = sum(mTot, 1);

% Find column numbers that are not all zeros

colIndexesWithData = find(columnsSums ~= 0);

This can even handle columns with zeros in between other columns, in case that ever happens.

If you want to find the very last column that has data in it, get the last element.

lastColWithData = colIndexesWithData (end);

##### 2 Comments

Image Analyst
on 25 Mar 2015

### More Answers (1)

dpb
on 25 Mar 2015

IA has the right idea but coming in from the cold doesn't know the full picture... :)

As I pointed out in the discussion accompanying the code that I wrote from whence the above comes, the NaN initialization option gives you the columns that are missing data or it's simply remove the zero columns from the array (albeit you do need to keep track of which is which since the columns represent month of year and if there's a case where there's a missing other than trailing your index otherwise will be off).

Probably the most generic thing is to simply loop over the full array and check that any(:,colIdx) is True, if so, then write that column, if False skip it. This keeps the indices and the month in synch.

##### 2 Comments

dpb
on 26 Mar 2015

### See Also

### Categories

### Community Treasure Hunt

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

Start Hunting!