我有一个55X1的电池阵列。每个单元格包含一个1X178的数字字符串数组。我想将所有单元格都转换为双精度数组,但是要使其形成55X178双精度数组。
例如,使用55X1单元格数组dataCellOut = {each cell has a 1X178 string}
。我可以使用:na=str2num(dataCellOut{1})
,这将输出1X178双数组。我尝试使用:na=cellfun(@str2num, dataCellOut, 'UniformOutput', false)
,但这不起作用(错误:“输入必须是字符向量或字符串标量”)。我已经为此工作了一段时间,但没有成功。
我希望这是有道理的,如果还有其他我可以提供的信息,请随时告诉我。预先谢谢你!
答案 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{:});