Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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
用MATLAB处理不同行长的超长logtxt文件_Matlab_Logging - Fatal编程技术网

用MATLAB处理不同行长的超长logtxt文件

用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=') 但它不起作用,有

我正在尝试将数据从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=')

但它不起作用,有没有不使用循环的方法

您可以使用星号跳过值
*
。 文件中所有数据的完整格式字符串为

'[%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更好地处理文件中的任何错误