2017-01-08 6 views
0

Я прочитал некоторые данные из файла Excel в Matlab. Массив ячеек был сформирован следующим образом:Как преобразовать массив ячеек в числовой массив в Matlab?

x={'11', 'NaN', 'NaN', '13', 24} 

Я хочу, чтобы преобразовать массив ячеек в числовой матрицы (для других необходимых расчетов) и преобразовать элементы «NaN» в нуль в моей числовой матрице. Как мне это сделать?

спасибо.

ответ

2

Вы можете использовать str2double для преобразования строк в числовые значения:

x={'11', 'NaN', 'NaN', '13', '24'}; 
nx = str2double(x); 

После того, как есть числовые значения, вы можете заменить nan с с нулями:

nx(isnan(nx))=0 
+0

@Yaser, это не будет работать, если на входе, как и в вопросе - последнее значение (24) является числом, а не строкой. См. [Мой ответ] (https://stackoverflow.com/a/41530933/2627163), чтобы справиться с этим. – EBH

0

В примере вы дали в возникает вопрос о смешанном содержании (строках и числах), поэтому требуется 2 этапа:

x = {'11', 'NaN', 'NaN', '13', 24}; % last value is a number 
isch = cellfun(@isstr,x); % find all strings 
numx(isch) = str2double(x(isch)); % convert the strings to numbers, and place the correcly 
numx(~isch) = cell2mat(x(~isch)); % extract the numbers and place the correcly 

Тогда вы можете заменить все NaN с с нулями:

numx(isnan(numx)) = 0; 

результат:

numx = 

    11  0  0 13 24