How to read specific data from a text file

1 Ansicht (letzte 30 Tage)
Iman Baz
Iman Baz am 23 Mai 2019
Kommentiert: Adam Danz am 23 Mai 2019
Hello,
I want to read the latitude and longitude values (Station and Epicenter) from the following text file.
...
...
Station 37.94 N 47.54 E Altitude 1699m Azimuth L 0 T 90 Vs30 406
Epicenter 37.99 N 48.15 E FD 28 Km Mb0 Ms0 Mw6 Mn0 ML6.2
...
...
I used the following code for reading geographic coordinate of station
fid=fopen(FileName,'r') ;
text1 = textscan(fid,'%s','Delimiter','','endofline','');
text1 = text1{1}{1};
SLa=regexp(text1,'Station[\s]+(\d*\.?\d+)','tokens') ;
SLa=str2double([SLa{:}])
SLo=regexp(text1,'Station[\s] N +(\d*\.?\d+)','tokens') ;
SLo=str2double([SLo{:}])
and I got the following results
SLa =
37.9400
SLo =
NaN
I think I missed something in line 6, could you please help me to fix it?
Thanks

Akzeptierte Antwort

Adam Danz
Adam Danz am 23 Mai 2019
Bearbeitet: Adam Danz am 23 Mai 2019
You should be able to pull both numbers out at the same time with this:
LaLoTokens = regexp(text1,'Station +(\d*\.?\d+) +N +(\d*\.?\d+)', 'tokens');
LaLo = str2double([LaLoTokens{:}{:}]);
% or (depending on how 'text1' is stored)
LaLo = str2double([LaLoTokens{:}]);
Here's a great site to put together regular expressions: https://regex101.com/
  2 Kommentare
Iman Baz
Iman Baz am 23 Mai 2019
Dear Adam,
Thank you for your prompt reply. that's worked.
Adam Danz
Adam Danz am 23 Mai 2019
Glad I could help! I always go directly to that regex101 website any time I need to work out an expression.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

madhan ravi
madhan ravi am 23 Mai 2019
Simpler:
S=fileread(filename);
sscanf(S,'Station %f N %f')

Kategorien

Mehr zu Data Import and Export finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by