Using strfind or regexp in cell
2 次查看(过去 30 天)
显示 更早的评论
Hi!
I have the following example data:
'METAR ESSA 202008010020Z 28003KT CAVOK 10/09 Q1017 NOSIG'
'METAR ESSA 202008010050Z 27004KT CAVOK 10/09 Q1017 NOSIG'
'METAR ESSA 202008010120Z 27004KT CAVOK 09/09 Q1017 NOSIG'
'METAR ESSA 202008010150Z 28004KT CAVOK 10/09 Q1017 NOSIG'
'METAR ESSA 202008010220Z 29003KT CAVOK 09/09 Q1017 NOSIG'
'METAR ESSA 202008010250Z 29003KT CAVOK 09/09 Q1017 NOSIG'
'METAR ESSA 202008010320Z 28003KT CAVOK 09/09 Q1017 NOSIG'
'METAR ESSA 202008010350Z 03002KT CAVOK 12/12 Q1017 NOSIG'
'METAR ESSA 202008010420Z 29002KT CAVOK 11/11 Q1017 NOSIG'
'METAR ESSA 202008010450Z 34004KT CAVOK 13/12 Q1017 NOSIG'
'METAR ESSA 202008010520Z 30004KT CAVOK 15/13 Q1017 NOSIG'
'METAR ESSA 202008010550Z 32004KT CAVOK 16/13 Q1017 NOSIG'
'METAR ESSA 202008010620Z 34003KT CAVOK 17/14 Q1017 NOSIG'
'METAR ESSA 202008010650Z VRB03KT CAVOK 18/14 Q1017 NOSIG'
'METAR ESSA 202008010720Z VRB03KT CAVOK 19/13 Q1017 NOSIG'
'METAR ESSA 202008010750Z 05004KT 030V100 CAVOK 20/10 Q1017 NOSIG'
'METAR ESSA 202008010820Z 02004KT 350V060 CAVOK 20/09 Q1017 NOSIG'
'METAR ESSA 202008010850Z 03004KT 360V070 CAVOK 21/10 Q1018 NOSIG'
'METAR ESSA 202008010920Z 03004KT 360V090 CAVOK 21/08 Q1017 NOSIG'
'METAR ESSA 202008010950Z 03005KT 360V080 CAVOK 22/08 Q1017 NOSIG'
'METAR ESSA 202008011020Z 05005KT 010V090 CAVOK 22/08 Q1017 NOSIG'
I would like to use strfind or regexp to extract the group '10/09' from each string. This is the temperature and dewpoint of a certain airport at a certain time. I would also like to store the third group '202008010020Z' which is the date and time together with the temperature and dewpoint separated in a matrix. Could you please help me with this? I'm a bit stuck at the moment.
Best regards
Linus
0 个评论
采纳的回答
Rik
2021-6-11
Your intuition that you can use a regular expression is correct:
data={...
'METAR ESSA 202008010020Z 28003KT CAVOK 10/09 Q1017 NOSIG'
'METAR ESSA 202008010050Z 27004KT CAVOK 10/09 Q1017 NOSIG'
'METAR ESSA 202008010120Z 27004KT CAVOK 09/09 Q1017 NOSIG'
'METAR ESSA 202008010150Z 28004KT CAVOK 10/09 Q1017 NOSIG'
'METAR ESSA 202008010220Z 29003KT CAVOK 09/09 Q1017 NOSIG'
'METAR ESSA 202008010250Z 29003KT CAVOK 09/09 Q1017 NOSIG'
'METAR ESSA 202008010320Z 28003KT CAVOK 09/09 Q1017 NOSIG'
'METAR ESSA 202008010350Z 03002KT CAVOK 12/12 Q1017 NOSIG'
'METAR ESSA 202008010420Z 29002KT CAVOK 11/11 Q1017 NOSIG'
'METAR ESSA 202008010450Z 34004KT CAVOK 13/12 Q1017 NOSIG'
'METAR ESSA 202008010520Z 30004KT CAVOK 15/13 Q1017 NOSIG'
'METAR ESSA 202008010550Z 32004KT CAVOK 16/13 Q1017 NOSIG'
'METAR ESSA 202008010620Z 34003KT CAVOK 17/14 Q1017 NOSIG'
'METAR ESSA 202008010650Z VRB03KT CAVOK 18/14 Q1017 NOSIG'
'METAR ESSA 202008010720Z VRB03KT CAVOK 19/13 Q1017 NOSIG'
'METAR ESSA 202008010750Z 05004KT 030V100 CAVOK 20/10 Q1017 NOSIG'
'METAR ESSA 202008010820Z 02004KT 350V060 CAVOK 20/09 Q1017 NOSIG'
'METAR ESSA 202008010850Z 03004KT 360V070 CAVOK 21/10 Q1018 NOSIG'
'METAR ESSA 202008010920Z 03004KT 360V090 CAVOK 21/08 Q1017 NOSIG'
'METAR ESSA 202008010950Z 03005KT 360V080 CAVOK 22/08 Q1017 NOSIG'
'METAR ESSA 202008011020Z 05005KT 010V090 CAVOK 22/08 Q1017 NOSIG'};
A=regexp(data,'\d{12}[A-Z]','match');A=[A{:}]
B=regexp(data,'\d{2}/\d{2}','match');B=[B{:}]
3 个评论
Rik
2021-6-11
You should try to parse the text to the data type you need. Then you can easily put them together. A loop will probably be best. You should not need to write to a file as an intermediate step.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Characters and Strings 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!