MATLAB Answers

How do I find the number of occurrences of NaN and the corresponding subscripts in an array

2 views (last 30 days)
Ms. Mat
Ms. Mat on 9 Jan 2013
A = NaN 100 101 102 103 104
201 2 7 3 2 2
202 NaN 8 4 5 6
203 NaN NaN 2 3 5
205 3 4 2 6 4
I have a matrix with the first row and first column being headers. I would like to know the no. occurences and subscripts on NaN.
To find no. of occurences, I did
number_of_nan = sum(sum(isnan(A(2:end,2:end))))
Also,
logical_array = isnan(A(2:end,2:end));
numel(logical_array(logical_array == 1));
Is there a simpler/better way. Also how do I find the subscripts of the NaN elements in the array ?
  2 Comments
Ms. Mat
Ms. Mat on 9 Jan 2013
I would like to know the row and column position. For the given example matrix A,
202, 100
203, 100
203, 101
or
3, 2
4, 2
4, 3
Thank You

Sign in to comment.

Accepted Answer

José-Luis
José-Luis on 9 Jan 2013
Edited: José-Luis on 9 Jan 2013
Another option:
logical_array = A(2:end,2:end) ~= A(2:end,2:end)
num_NaN = sum(logical_array(:));
idx = find(logical_array); %I am not sure this is what you want, please see my comment to your question
EDIT so that was not what your wanted after all. For that:
To get row and column position, according to the header:
logical_array = A(2:end,2:end) ~= A(2:end,2:end)
idx = find(logical_array);
[dim(1) dim(2)] = size(A);
[ii,jj] = ind2sub(dim-1,idx);
your_position = [A(ii+1,1) A(1,jj+1)'];

More Answers (0)

Community Treasure Hunt

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

Start Hunting!

Translated by