how to remove NaN

7 views (last 30 days)
andrew on 12 Jun 2013
I have a m x n cell array. I want to search the 6th column for Nan cells and delete the entire row with the NaN cell.
tried: M( all( isnan( M ), 2 ), : ) = []; but get the following error: Undefined function 'isnan' for input arguments of type 'cell'.
  1 Comment
Kye Taylor
Kye Taylor on 12 Jun 2013
Edited: Kye Taylor on 12 Jun 2013
Although this command is causing the error
M( all( isnan( M ), 2 ), : ) = [];
it appears that you're trying to delete rows where all entries are NaNs. But you say you want to delete rows that contain a NaN in the sixth column. Which is it?

Sign in to comment.

Answers (2)

Kye Taylor
Kye Taylor on 12 Jun 2013
You're very close try
% idx(i) is true if contents in row i, column 6 of M equals NaN
idx = cellfun(@isnan,M(:,6))
% delete row with nan in it
M(idx,:) = [];

Andrei Bobrov
Andrei Bobrov on 12 Jun 2013
M = {3 [4 5] nan;[2 4] 'dfgh' [7 8 3]};
ii = ~cellfun(@(x)all(isnan(x(:))),z(:,3));
out = M(ii,:);


Find more on Numeric Types in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by