在matlab中将整数字符转换为数字数组

时间:2017-09-04 22:16:09

标签: matlab char

我有char格式a = [1.234 ; 2.345; 3.456]数组,我需要在MATLAB中将其转换为数值数组。我试过str2num(a)但它似乎只对整数有效,因为它返回一个空向量。以下是数据的实际情况:

enter image description here

对于如何解决这个问题的任何建议表示赞赏!

3 个答案:

答案 0 :(得分:2)

如果您的字符数组是以下格式之一:

a = '[1.234; 2.345; 3.456]';      % 1-by-N with brackets, spaces, or semicolons
a = ['1.234'; '2.345'; '3.456'];  % M-by-N

然后str2num可以按照您的意愿运作:

vec = str2num(a)

vec =

   1.234000000000000
   2.345000000000000
   3.456000000000000

如果它不起作用,则可能意味着您的字符数组val包含无效格式的行或无法正确转换的字符。由于数组有3100行,您可能不希望手动搜索它。突出显示无效行可能位置的一种简单方法是识别除数字,句点或空格之外的字符的位置。以下是如何获得可能需要进一步检查的行列表:

suspiciousRows = find(~all(ismember(val, '0123456789. '), 2));

答案 1 :(得分:0)

函数str2double适合您的情况。有关详细用法,请参阅this link

答案 2 :(得分:0)

str2num可以正常工作但str2num uses eval,所以更好的选择是str2double。但它并不直接适用于像你这样的字符数组。您可以使用cellstr将该数组转换为单元格,然后应用str2double

req = str2double(cellstr(val))

如果您使用MATLAB R2016b或更高版本,另一种方法是将该char数组转换为string array,然后应用str2double

req = str2double(string(val))