如何在Matlab中将单元格数组转换为数值数组?

时间:2017-01-08 07:28:03

标签: arrays excel matlab cell nan

我已经从Matlab中的Excel文件中读取了一些数据。已生成单元格数组如下:

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

我想将单元格数组转换为数字矩阵(用于其他所需的计算)并转换“NaN'我的数字矩阵中的元素为零。我该怎么办?

谢谢。

2 个答案:

答案 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