Read a string with numbers and scientific notations

4 Ansichten (letzte 30 Tage)
BRC
BRC am 4 Jul. 2017
Kommentiert: Walter Roberson am 4 Jul. 2017
Dear All,
I am trying to read a text file looks like this:
# Counters
sec=60, Monitor=8.66289e+06, bstop=818664, I0=829726, I1=0, ch5=0, ch6=0, ch7=0.
I would like to read the Monitor value (8.66289e+06). I was using
k=sprintf('txt_files/MnO2_20170512_05120943_%04d.txt',i);
filetext=fileread(k);
numbers = str2double(regexp(filetext, '(?<=Monitor=[^0-9]*)[0-9]*\.?[0-9]+', 'match'));
In this way I can get the number "8.66289". But today I would like to include the scientific notation as well. So my output will be "8.66289e+06". I am not really sure how to proceed with this even though I searched in the forum.
I tried
numbers3 = regexp(filetext, '(?<== )((\d|(+)|(\.)|(e))+','match');
and
numbers3=sscanf(sprintf('%s ',numbers3{:}),'%g')
But looks like something was not right in my code.
Thank you for help!

Akzeptierte Antwort

Walter Roberson
Walter Roberson am 4 Jul. 2017
S = 'sec=60, Monitor=8.66289e+06, bstop=818664, I0=829726, I1=0, ch5=0, ch6=0, ch7=0.';
result = regexp(S, '(?<name>\w+)=(?<value>[^,]+)', 'names');
>> result(2)
ans =
struct with fields:
name: 'Monitor'
value: '8.66289e+06'
  3 Kommentare
BRC
BRC am 4 Jul. 2017
I tried
numbers= regexp(filetext, '(?<name>\w+)=(?<value>[^,]+)', 'names');
a=numbers(2);
c = struct2cell(a);
m(i)=c(2)
but the error message was
The following error occurred converting from cell
to double:
Error using double
Conversion to double from cell is not possible.
Walter Roberson
Walter Roberson am 4 Jul. 2017
all_values_as_numeric = str2double( {result.value} );
Note: if you can count on the order being the same each time, then
S = 'sec=60, Monitor=8.66289e+06, bstop=818664, I0=829726, I1=0, ch5=0, ch6=0, ch7=0.';
result = regexp(S, '(?<==)([^,]+)', 'match');
all_values_as_numeric = str2double(result);

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Characters and Strings finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by