erasing all the rows that begin with NaN

I have a cell matric.
The first two columns of this matrix are
[1x28 char] [ NaN]
[ NaN] [ NaN]
'MART' 'TOTATRIA'
'PREGORY' 'TOSTE'
[ NaN] [ NaN]
My goal is to erase these rows which have as a first element NaN
In the above example I want to erase row2 and the last one
thanks

 Accepted Answer

just
out = A(~cellfun(@(x)all(isnan(x)),A(:,1)),:)

More Answers (2)

If A is your input cell matrix
out=cellfun(@isnan,A(:,1),'UniformOutput',false)
count=cellfun(@(x)any(x==1),out);
A(~count,:)

10 Comments

Sabbas
Sabbas on 9 Jul 2012
Edited: Sabbas on 9 Jul 2012
Hi. For some reason it does not work. The rows that begin with NaN still remain
thanks
I'm using your old dataset. What error r u getting? or is it just not working
A = {[ NaN] [ NaN]
[ NaN] [ NaN]
'England' [ NaN]
[ NaN] [ NaN]
' AUSTRIA' ' SMOKES'
'tetete' 'NIKE'
'jhjh khkhkh' 'GOODYS'
' BAND 1' 'HIT'
' BAND 2 KA 1' 'eerrrr'
' BAND 2 KA 2' 'dddddd'
' BAND 2 KA 3' [ NaN]
' BAND 2 KA 4' 'YES' };
out=cellfun(@isnan,A(:,1),'UniformOutput',false)
count=cellfun(@(x)any(x==1),out);
A(~count,:)
Using this works for me.. Removes all rows beginning with NaN's
ans =
'England' [ NaN]
' AUSTRIA' ' SMOKES'
'tetete' 'NIKE'
'jhjh khkhkh' 'GOODYS'
' BAND 1' 'HIT'
' BAND 2 KA 1' 'eerrrr'
' BAND 2 KA 2' 'dddddd'
' BAND 2 KA 3' [ NaN]
' BAND 2 KA 4' 'YES'
Sabbas
Sabbas on 9 Jul 2012
Edited: Sabbas on 9 Jul 2012
I do not get any error. It is just not working
My matrix also contain numbers. For example, [45.66]
Using the data you provided in the question
B={ 'Hello' [ NaN]
[ NaN] [ NaN]
'MART' 'TOTATRIA'
'PREGORY' 'TOSTE'
[ NaN] [ NaN]}
A=B;
out=cellfun(@isnan,A(:,1),'UniformOutput',false)
count=cellfun(@(x)any(x==1),out);
A(~count,:)
ans =
'Hello' [ NaN]
'MART' 'TOTATRIA'
'PREGORY' 'TOSTE'
Should work irrespective of having numbers or not..
A={ 'Hello' [ NaN]
[ NaN] [ NaN]
[46.65] 'MORE'
'NEW' [46.65]
'MART' 'TOTATRIA'
'PREGORY' 'TOSTE'
[ NaN] [ NaN]};
out=cellfun(@isnan,A(:,1),'UniformOutput',false)
count=cellfun(@(x)any(x==1),out);
A(~count,:)
@Binish: Is there a difference between "any(x==1)" and "any(x)"?
Thomas
Thomas on 9 Jul 2012
Edited: Thomas on 9 Jul 2012
Gives the same answer in this case with both any(x==1) and any(x) since both are working on output of isnan...
Sabbas
Sabbas on 9 Jul 2012
Edited: Sabbas on 9 Jul 2012
it works for me when I choose the first two columns. But not when I use the whole matrix
Sabbas
Sabbas on 9 Jul 2012
Edited: Sabbas on 9 Jul 2012
I used
count=cellfun(@(x)any(x==1),out);
A(count==1,:)=[]
and it seems to work
could you plese verify that the code is equivalent to the one you provided?
thanks

Sign in to comment.

Jan
Jan on 9 Jul 2012
Edited: Jan on 9 Jul 2012
A(cellfun(@(x) isequalwithequalnans(x, NaN), C), :)

Categories

Tags

Community Treasure Hunt

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

Start Hunting!