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

时间:2017-01-06 15:11:49

标签: matlab text formatted

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

v = {'12.4B', '145.3M', '34.3M', '1.2B'};

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

2 个答案:

答案 0 :(得分:5)

您可以使用正则表达式替换(android.intent.action.MAIN)分别将BM替换为e9e6(科学记数法),然后转换结果字符串为regexp的数字。

str2double

您显然可以将其展开以包含任何其他必要的转化。

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

out = str2double(regexprep(v, {'B', 'M'}, {'e9', 'e6'}, 'ignorecase'))

答案 1 :(得分:2)

% Data
v = {'12.4B', '145.3M', '34.3M', '1.2B'};

% Replace characters with numeric equivalents
v = strrep(v, 'k', 'e03'); % thousand
v = strrep(v, 'M', 'e06'); % Million
v = strrep(v, 'B', 'e09'); % Billion 
v = strrep(v, 'T', 'e12'); % Trillion 
...

% Convert to numeric values
w = str2double(v)