2

値が異なる文字列のセル配列があります。

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

それらを数値に変換したいと思います。sscanf関数を使用すると、数値しか抽出できませんが、文字に応じて、結果に 10 億または 100 万を掛けることが必要です。

4

2 に答える 2

5

正規表現置換 ( ) を使用して と を および それぞれ (科学表記法)にB置き換えMe9結果の文字列を で数値に変換できます。e6regexpstr2double

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

これを拡張して、他の必要な変換を含めることができます。

そして、何が起こっているかを示す例として:

% 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
于 2017-01-06T15:16:18.303 に答える
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)
于 2017-01-06T15:16:32.310 に答える