Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
matlab中整数字符到数字数组的转换_Matlab_Char - Fatal编程技术网

matlab中整数字符到数字数组的转换

matlab中整数字符到数字数组的转换,matlab,char,Matlab,Char,我有一个char数组,其格式为a=[1.234;2.345;3.456],我需要在MATLAB中将其转换为数字数组。我试过str2num(a),但它似乎只对整数有效,因为它返回的是一个空向量。以下是数据的实际外观: 任何关于如何解决这个问题的建议都将不胜感激 功能str2double适用于您的情况。有关详细用法,请参阅。如果您的字符数组是以下格式之一: a = '[1.234; 2.345; 3.456]'; % 1-by-N with brackets, spaces, or se

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


任何关于如何解决这个问题的建议都将不胜感激

功能
str2double
适用于您的情况。有关详细用法,请参阅。

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

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
然后,您可以按照自己的意愿工作:

vec = str2num(a)

vec =

   1.234000000000000
   2.345000000000000
   3.456000000000000
如果它不起作用,那么这可能意味着您的字符数组
val
中有格式无效的行或无法正确转换的字符。由于数组有3100行,您可能不想手动搜索。突出显示无效行所在位置的一种简单方法是标识除数字、句点或空白以外的字符所在的位置。以下是如何获得可能需要进一步检查的行列表:

suspiciousRows = find(~all(ismember(val, '0123456789. '), 2));
将按原样工作,但按原样工作,因此更好的选择是。但它不直接适用于像您这样的字符数组。您可以使用将该数组转换为单元格,然后应用
str2double

req = str2double(cellstr(val))

如果您有MatlabR2016B或更高版本,另一种方法是将该字符数组转换为字符串,然后应用
str2double

req = str2double(string(val))

我有一个3100x18
char
,它返回一个1x1
NaN
,带有
str2double
你不应该添加一个屏幕截图作为变量的示例,而应该在这里复制它的一个简短版本。奇怪的是,
str2num(a)
应该可以工作。您能否提供一个如何创建这样一个数组的示例?您还可以尝试
cellstr(a)
,将其转换为单元格数组-也许它可以工作。