我有一个数据文件;
***************************
***************************
*************************** (header part)
* 2004 11 8 0 0 0.00000000
P 1 1000.4545 211.1214 54.5545
P 3 5400.5454 1005.4545 -452.4899
P 4 ........ ......... .......
P 5 ........ ......... ........
.
.
* 2004 11 8 0 15 0.00000000
P 1 1085.4545 200.1214 54.5545
P 3 5405.5454 1105.4545 -452.4899
P 4 ........ ......... .......
P 5 ........ ......... .......
文本文件中有几个“P 1”,“P 3”等。我需要定义所有“P [0-9]”的数字行,如;
P_1=[1000.4545 211.1214 54.5545;1085.4545 200.1214 54.5545];
p_3=[5400.5454 1005.4545 -452.4899;5405.5454 1105.4545 -452.4899];
哪些代码给了我这种灵活性?
答案 0 :(得分:1)
将正则表达式与regexp
一起使用。
如果您的数据在data.txt文件中
txt = fileread('data.txt')
parts = regexp(txt,'P\s*1\s*(\S*)\s*(\S*)\s*(\S*)','tokens')
P_1 = [reshape(str2double([parts{:}]),3,[])]'
如果你想在所有9个P的循环中执行此操作,我建议使用单元格而不是P_1
P_2
等。您可以为{{构建表达式循环内部非常简单:
regexp