В вашем подвале значения NaN определены как строковые, а не как «специальные» значения NaN
В этом случае вы можете использовать функции isempty
и isfloat
, чтобы определить, какие элементыпустых ячеек либо типа float:
% Remove rows with empty cells
idx=any(cell2mat(cellfun(@isempty,raw,'UniformOutput',false)),2)
raw(idx,:)=[]
% Remove rows with 'NaN'
idx=all(cell2mat(cellfun(@isfloat,raw,'UniformOutput',false)),2)
raw(~idx,:)=[]
На первом шаге вы ищите пустые ячейки, используя функцию isempty
, поскольку входные данные представляют собой ячейку, которую вы должны использовать cellfun
применить functino ко всем элементам массива ячеек.
isempty
возвращает целую ячейку 0
и 1
, где 1
идентифицирует пустую ячейку, поэтому после преобразования ее вВ массиве (с помощью functino cell2mat
) вы можете идентифицировать индексы roww с пустой ячейкой, используя функцию any
.
. Во втором шаге, с аналогичным подходом, вы можете идентифицировать строки, содержащиеплавающие значения с функцией `isfloat.
Тот же подход можно использовать в случае, если NaN
в вашем подвале определено как" значения ", а не как строки:
idx=any(cell2mat(cellfun(@isempty,raw,'UniformOutput',false)),2)
raw(idx,:)=[]
idx=any(cell2mat(cellfun(@isnan,raw,'UniformOutput',false)),2)
raw(idx,:)=[]