MATLAB: How to get ( number and values) of (non-empty elements) in each column of the matrix?

[2x2 double]matrixnon-empty_elements...

Hi all, I have the following matrix;
P =
Columns 1 through 2
[2x0 double] [2x0 double]
[2x0 double] [2x0 double]
[2x0 double] [2x0 double]
[2x0 double] [2x0 double]
[2x0 double] [2x0 double]
[2x0 double] [2x0 double]
[2x2 double] [2x2 double]
[2x2 double] [2x2 double]
[2x0 double] [2x0 double]
[2x0 double] [2x0 double]
Columns 3 through 4
[2x0 double] [2x0 double]
[2x0 double] [2x0 double]
[2x0 double] [2x0 double]
[2x0 double] [2x0 double]
[2x0 double] [2x0 double]
[2x0 double] [2x2 double]
[2x2 double] [2x2 double]
[2x2 double] [2x2 double]
[2x0 double] [2x0 double]
[2x0 double] [2x0 double]
I want to get the number of the non-empty elements in each column and then their values.
For example; in Column 1, there are two non-empty elements [2×2 double]. To get their values; I should write like that; P{row_no,1} ;
>> P{7,1}
ans =
0.5878 0.71222
0 0
>> P{8,1}
ans =
0.78307 1.117
0 0
So, My question is; how to get the number of the non-empty elements in each column and also how to get the values of these non-empty elements?

Best Answer

nonempty_col1_mask = ~cellfun(@isempty, P(:,1));
nonempty_col2_mask = ~cellfun(@isempty, P(:,2));
num_nonempty_col1 = nnz(nonempty_col1_mask);
num_nonempty_col2 = nnz(nonempty_col2_mask);
nonempty_col1 = P(nonempty_col1_mask, 1);
nonempty_col2 = P(nonempty_col2_mask, 2);