Matlab - 如何从向量中提取特定数据

时间:2016-03-28 17:52:03

标签: regex matlab

我有一些GPS接收器的数据,但有些数据被额外的字符损坏了。我想提取时间戳(第一个字段)以及$GPGGA$GPVTG的数据。

更清楚的是,这是我在单元格数组中的数据样本:

'1458937887.70818 $GPGGA,200228.90,3555.3269,N,15552.9641,A*25'
'1458937887.709668 $GPVTG,56.740,T,56.740,M,0.069,N,0.127,K,D*2D'
'1458937887.712022 ªDe¾,…´apö$™°%=HfSrîU¾Õ½ôAqö‚>1ÀàHqgu$GPGGA,200229.00,3555.3269,N,15552.9641,C*2B'
'1458937887.714071 $GPVTG,286.847,T,286.847,M,0.028,N,0.051,K,D*28'

正如您所看到的,这里的问题出现在第三行,其中时间戳和数据之间出现了一些奇怪的字符。

另一个问题是有时候这第三行被分成两行,如下所示:

'1458937887.712022 ªDe¾,…´apö$™°'
'%=HfSrîU¾Õ½ôAqö‚>1ÀàHqgu$GPGGA,200229.00,3555.3269,N,15552.9641,D*24'

正在非常努力地使用regexp

总之,我想将第三行(在两种情况下)格式化为:

'1458937887.712022 $GPGGA,200229.00,3555.3269,N,15552.9641,D*2R'

更新

感谢@excaza,这解决了第一个问题(删除垃圾):

regexprep(str, '(?<=\d\s)(.*)(?=\$GPGGA)', '')

关于第二个问题,@ Suever的问题通过查看数据的格式给了我一个想法。从.txt文件读取数据时是否可以解决它?将分隔符定义为*后跟两个字符和\n之类的东西,因为所有数据包都以此模式结束?

0 个答案:

没有答案