用MATLAB处理不同行长的超长logtxt文件
我正在尝试将数据从txt文件导入matlab,该文件的长度约为1e6行 案文如下:用MATLAB处理不同行长的超长logtxt文件,matlab,logging,Matlab,Logging,我正在尝试将数据从txt文件导入matlab,该文件的长度约为1e6行 案文如下: [04 05 11 12] jiffies=100 [04 06 15 09] jiffies=3455 . . . [00 02 07 07] jiffies=111200 我已经设法在不使用循环的情况下提取了前两个数字(我需要) 现在,如果我尝试使用相同的方法,我只想读取“jiffies=#”后面的数字 textscan(fid,'%s','delimiter', 'jiffies=') 但它不起作用,有
[04 05 11 12] jiffies=100
[04 06 15 09] jiffies=3455
.
.
.
[00 02 07 07] jiffies=111200
我已经设法在不使用循环的情况下提取了前两个数字(我需要)
现在,如果我尝试使用相同的方法,我只想读取“jiffies=#”后面的数字
textscan(fid,'%s','delimiter', 'jiffies=')
但它不起作用,有没有不使用循环的方法 您可以使用星号跳过值
*
。
文件中所有数据的完整格式字符串为
'[%d %d %d %d] jiffies=%d'
要跳过前面的所有数字,只需在%
和d
之间加一个星号即可
C = textscan(fid,'[%*d %*d %*d %*d] jiffies=%d');
返回
C{1}
ans =
100
3455
111200
您可以使用星号
*
跳过值。
文件中所有数据的完整格式字符串为
'[%d %d %d %d] jiffies=%d'
要跳过前面的所有数字,只需在%
和d
之间加一个星号即可
C = textscan(fid,'[%*d %*d %*d %*d] jiffies=%d');
返回
C{1}
ans =
100
3455
111200
如果要一次导入所有数据,可以在导入工具中打开此文件:
uiimport(filename);
这将正确删除括号和“jiffies=”文本,并可以返回所有数字的数字数组。您还可以从导入工具生成代码(单击导入选择下拉列表/生成脚本或函数)。这可能证明,与直接使用textscan相比,可以更好地处理文件中的任何错误。如果您想同时导入所有数据,可以在导入工具中打开此文件:
uiimport(filename);
这将正确删除括号和“jiffies=”文本,并可以返回所有数字的数字数组。您还可以从导入工具生成代码(单击导入选择下拉列表/生成脚本或函数)。这可能比直接使用textscan更好地处理文件中的任何错误