Cla*_*net 2 matlab text formatted
我有不同值的字符串单元格数组:
v = {'12.4B', '145.3M', '34.3M', '1.2B'};
Run Code Online (Sandbox Code Playgroud)
我想将它们转换为数字.使用sscanf函数我只能提取数值,但我想要的是根据字母将结果乘以十亿或百万.
您可以使用正则表达式replacement()替换B和M使用e9和e6(科学记数法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)