У меня есть массив ячеек с различными типами данных, из листа Excel, который мне нужно прочитать, но который находится вне моего контроля.

[~, ~, raw] = xlsread(xlsFile)

raw теперь является вектором ячеек r-by-c, для простоты предположим, что он имеет только одну строку. Он будет заполнен числами (точнее, точными числами Excel) или другими значениями, такими как [NaN] или ''. Таким образом, cell2mat () не будет работать.

Каков наилучший способ извлечь только числовые значения? Есть ли способ получить индекс, где ячейка содержит число?

Благодарю.

1 ответ1

0

Предполагая только одну строку, следующее работает, чтобы устранить нечисловые значения

rawData = {5,1.77,NaN,''};
rawDataIsNum = cell2mat(cellfun(@isnumeric,rawData,'UniformOutput',false)); %Returns matrix of true/false if real number or NaN
data = rawData(rawDataIsNum); %Returns cell of numbers

Чтобы удалить NaN, вы можете использовать нечто подобное с @isnan

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .