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,

답변 (3개)

Fangjun Jiang
Fangjun Jiang 2016년 5월 20일

1 개 추천

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

댓글 수: 2

Rajesh Patel
Rajesh Patel 2016년 5월 20일
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.
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.

댓글을 달려면 로그인하십시오.

Azzi Abdelmalek
Azzi Abdelmalek 2016년 5월 20일

0 개 추천

Data_text={'Speed' 'Load' nan 'Sample'}
Data_text(:,cellfun(@(x) any(isnan(x)),Data_text(1,:)))=[]
Pruthvi G
Pruthvi G 2020년 3월 12일

0 개 추천

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

카테고리

도움말 센터File Exchange에서 Matrix Indexing에 대해 자세히 알아보기

질문:

2016년 5월 20일

답변:

2020년 3월 12일

Community Treasure Hunt

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

Start Hunting!

Translated by