如何在matlab中读取字符串中的格式化数据?

Cla*_*net 2 matlab text formatted

我有不同值的字符串单元格数组:

v = {'12.4B', '145.3M', '34.3M', '1.2B'};
Run Code Online (Sandbox Code Playgroud)

我想将它们转换为数字.使用sscanf函数我只能提取数值,但我想要的是根据字母将结果乘以十亿或百万.

Sue*_*ver 5

您可以使用正则表达式replacement()替换BM使用e9e6(科学记数法regexp),然后将结果字符串转换为数字str2double.

out = str2double(regexprep(v, {'B', 'M'}, {'e9', 'e6'}, 'ignorecase'))
Run Code Online (Sandbox Code Playgroud)

显然,您可以将其展开以包含任何其他必要的转换.

并作为一个示例显示正在发生的事情:

% Convert to scientific notation
B = regexprep(v, {'B', 'M'}, {'e9', 'e6'}, 'ignorecase')
%    '12.4e9'    '145.3e6'    '34.3e6'    '1.2e9'

% Convert to numbers
str2double(B)
%   12400000000 145300000   34300000    1200000000
Run Code Online (Sandbox Code Playgroud)