MATLAB Answers

Translated by

このページのコンテンツは英語から自動翻訳されています。自動翻訳をオフにする場合は「<a class="turn_off_mt" href="#">ここ</a>」をクリックしてください。

Iman Baz
0

How to read specific data from a text file

Iman Baz
さんによって質問されました 2019 年 5 月 23 日 12:52
最新アクティビティ Adam Danz
さんによって コメントされました 2019 年 5 月 23 日 14:52
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 件のコメント

サインイン to comment.

2 件の回答

回答者: Adam Danz
2019 年 5 月 23 日 13:08
編集済み: Adam Danz
2019 年 5 月 23 日 13:09
 採用された回答

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 件のコメント

Iman Baz
2019 年 5 月 23 日 14:50
Dear Adam,
Thank you for your prompt reply. that's worked.
Adam Danz
2019 年 5 月 23 日 14:52
Glad I could help! I always go directly to that regex101 website any time I need to work out an expression.

サインイン to comment.


回答者: madhan ravi
2019 年 5 月 23 日 13:15

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

  0 件のコメント

サインイン to comment.



Translated by