MATLAB Answers

0

How to read specific data from a text file

Asked by Iman Baz on 23 May 2019
Latest activity Commented on by Adam Danz
on 23 May 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

  0 Comments

Sign in to comment.

2 Answers

Answer by Adam Danz
on 23 May 2019
Edited by Adam Danz
on 23 May 2019
 Accepted Answer

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 Comments

Dear Adam,
Thank you for your prompt reply. that's worked.
Glad I could help! I always go directly to that regex101 website any time I need to work out an expression.

Sign in to comment.


Answer by madhan ravi
on 23 May 2019

Simpler:
S=fileread(filename);
sscanf(S,'Station %f N %f')

  0 Comments

Sign in to comment.