我已经从Matlab中的Excel文件中读取了一些数据。已生成单元格数组如下:
x={'11', 'NaN', 'NaN', '13', 24}
我想将单元格数组转换为数字矩阵(用于其他所需的计算)并转换“NaN'我的数字矩阵中的元素为零。我该怎么办?
谢谢。
答案 0 :(得分:2)
您可以使用str2double
将字符串转换为数字值:
x={'11', 'NaN', 'NaN', '13', '24'};
nx = str2double(x);
获得数值后,可以用{0}替换nan
s:
nx(isnan(nx))=0
答案 1 :(得分:0)
在您在问题中给出的示例中,有一个混合内容(字符串和数字),因此需要两个步骤:
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