将字符串数组的单元格数组转换为双精度数组

时间:2018-09-28 18:35:41

标签: matlab

我有一个55X1的电池阵列。每个单元格包含一个1X178的数字字符串数组。我想将所有单元格都转换为双精度数组,但是要使其形成55X178双精度数组。

例如,使用55X1单元格数组dataCellOut = {each cell has a 1X178 string}。我可以使用:na=str2num(dataCellOut{1}),这将输出1X178双数组。我尝试使用:na=cellfun(@str2num, dataCellOut, 'UniformOutput', false),但这不起作用(错误:“输入必须是字符向量或字符串标量”)。我已经为此工作了一段时间,但没有成功。

我希望这是有道理的,如果还有其他我可以提供的信息,请随时告诉我。预先谢谢你!

1 个答案:

答案 0 :(得分:0)

根据the documentation to str2num

  

str2num函数不会转换单元格数组或非标量字符串数组,并且对+-运算符之间的间距很敏感。此外,str2num使用eval函数,当输入包含函数名称时,可能会导致意外的副作用。为避免这些问题,请使用str2double

str2double,但是,它随您便:

  

X = str2double(str)str中的文本转换为双精度值。 [...] str可以是字符向量,字符向量的单元格数组或字符串数​​组。 [...]如果str是一个字符串数组,则X是一个与str大小相同的数字数组。

因此,这应该可行:

na = cellfun(@str2double, dataCellOut, 'UniformOutput', false);
na = cat(1,na{:});