Finding NaNs in cell array.

I create a cell array by importing some data (text and empty cells) from excel. It looks like this.. "Data_text =
Columns 1 through 7
'Speed' 'Load' [NaN] 'Sample' 'Calgen_Model' 'DOE_BSNOx' 'DOE_Pmax'
I want to find columns which contains NaN (from empty cells in excel) and delete those columns. I tried following but it does not seems to work.
Column_Names = cell2table(Data_text);
a = cellfun(@isnan,Data_text);
Thanks,

1 comentario

Pruthvi G
Pruthvi G el 12 de Mzo. de 2020
Data(cellfun(@(cell) any(isnan(cell(:))),Data))={''};

Iniciar sesión para comentar.

Respuestas (3)

Fangjun Jiang
Fangjun Jiang el 20 de Mayo de 2016

1 voto

Data_text={'Speed' 'Load' [NaN] 'Sample'};
index=cellfun(@isnan,Data_text,'uni',false);
index=cellfun(@any,index);
Data_text(index)=[];

2 comentarios

Rajesh Patel
Rajesh Patel el 20 de Mayo de 2016
Thanks seems to be working. But I have couple of questions if you do not mind.
  1. # What does the line "index=cellfun(@any,index);" do?
  2. # Now if in the original array of "Data_text" had multiple rows and if I wanted to find NaN only in 1st row and delete columns corresponding to it, what modification to code need to be done?
Again, Thanks for quick answer.
Fangjun Jiang
Fangjun Jiang el 20 de Mayo de 2016
Data_text={'a','b', nan ,'c';1,2,3,4};
index=cellfun(@isnan,Data_text(1,:),'uni',false);
index=cellfun(@any,index);
Data_text(:,index)=[];
The first index is still a cell array. Use cellfun(@any,...) to get the logical index. Type "help any" to find the info for the any() function.

Iniciar sesión para comentar.

Azzi Abdelmalek
Azzi Abdelmalek el 20 de Mayo de 2016

0 votos

Data_text={'Speed' 'Load' nan 'Sample'}
Data_text(:,cellfun(@(x) any(isnan(x)),Data_text(1,:)))=[]
Pruthvi G
Pruthvi G el 12 de Mzo. de 2020

0 votos

Data(cellfun(@(cell) any(isnan(cell(:))),Data))={''};

Categorías

Etiquetas

Preguntada:

el 20 de Mayo de 2016

Respondida:

el 12 de Mzo. de 2020

Community Treasure Hunt

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

Start Hunting!

Translated by