Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Matlab-如何从向量中提取特定数据_Regex_Matlab - Fatal编程技术网

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

Regex Matlab-如何从向量中提取特定数据,regex,matlab,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ö$™

我有一些来自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
非常困难

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

更新:

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


regexprep(str),(?数据是作为单元格数组输入的还是您创建的?您可以尝试使用
regexprep
首先清除最后一个数字和
GPGGA
之间的垃圾:
regexprep(str,'\d\s(.*)(?=$GPGGA)')
谢谢,这是一个非常好的提示。虽然这会删除所有垃圾,但它也会删除时间戳本身的最后一个数字(即上面示例中的数字
2
)。因此,我只是删除了
\d
,它可以完美地解决第一个问题。@Hamid oops,我复制了错误的一个:
regexprep(str,'(?@Suever:我使用.txt文件中的
textscan
读取数据,因此它存储在单元格数组中。类似于
textscan(fileID,'%s','Delimiter','\n'))
数据是作为单元格数组输入的还是您创建的?您可以尝试使用
regexprep
首先清除最后一个数字和
$GPGGA
之间的垃圾:
regexprep(str,'\d\s(.*)(?=$GPGGA)',)
谢谢,这是一个非常好的提示。虽然这会删除所有垃圾,但它也会删除时间戳本身的最后一个数字(即上面示例中的数字
2
)。因此,我只是删除了
\d
,它可以完美地解决第一个问题。@Hamid oops,我复制了错误的一个:
regexprep(str,'(?@Suever:我从.txt文件中使用
textscan
读取数据,因此它存储在单元格数组中。类似于
textscan(fileID,'%s','Delimiter','\n')
'1458937887.712022 $GPGGA,200229.00,3555.3269,N,15552.9641,D*2R'
regexprep(str, '(?<=\d\s)(.*)(?=\$GPGGA)', '')