cellfun(@isnan) and erasing NaN

7 visualizaciones (últimos 30 días)
Victor
Victor el 19 de Feb. de 2013
Dear all,
I have a matrix like this in excel file:
A=[a, 1, NaN, 1, 1, 1, 1;...
b, 2, NaN, NaN, NaN, NaN, NaN;...
c, 3, NaN, 3, 3, 3, 3];
and I want to erase the rows in which has NaN starting from fourth column. In another words I would like to have
B=[a, 1, NaN, 1, 1, 1, 1;...
c, 3, NaN, 3, 3, 3, 3];
I used this:
[ndata, text, a] = xlsread('test.xls');
xlswrite('newfile.xls', a(~any(cellfun(@isnan,a), 2), :));
But it works just in cases of having numbers in the excel file. But with the above example ,in which I have a, b,and c, I receive this error:
Error using cellfun Non-scalar in Uniform output, at index 1, output 1. Set 'UniformOutput' to false.
Or if you have other idea to do this operation please let me know.

Respuesta aceptada

Sean de Wolski
Sean de Wolski el 19 de Feb. de 2013
Close!
A={'a', 1, NaN, 1, 1, 1, 1;...
'b', 2, NaN, NaN, NaN, NaN, NaN;...
'c', 3, NaN, 3, 3, 3, 3};
B = A(~any(cellfun(@isnan,A(:,4:end)),2),:)
  3 comentarios
Sean de Wolski
Sean de Wolski el 20 de Feb. de 2013
Break it into pieces.
What does whos() return after running the first line?
Then run the line I have. Does it work?
If not, why not? If so, then worry about xlswrite()
Victor
Victor el 20 de Feb. de 2013
Thanks, now it works.

Iniciar sesión para comentar.

Más respuestas (1)

Azzi Abdelmalek
Azzi Abdelmalek el 19 de Feb. de 2013
Editada: Azzi Abdelmalek el 19 de Feb. de 2013
Use
cellfun(@isnan,a,'UniformOutput',false)
Which means
xlswrite('newfile.xls', a(~any(cellfun(@isnan,a,'UniformOutput',false), 2), :));
  7 comentarios
Azzi Abdelmalek
Azzi Abdelmalek el 20 de Feb. de 2013
You have not to use cell2mat before xlswrite
Victor
Victor el 20 de Feb. de 2013
Thanks Azzi, but to be honest, I do not think with this method, I can read the file, do the manipulation and then write it back.

Iniciar sesión para comentar.

Categorías

Más información sobre Data Type Conversion en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by