使用MATLAB处理具有不同行长度的非常长的log txt文件

时间:2015-10-07 06:50:07

标签: 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=')

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

2 个答案:

答案 0 :(得分:4)

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

'[%d %d %d %d] jiffies=%d'

要跳过前面的所有数字,只需在%d之间添加一个星标。

C = textscan(fid,'[%*d %*d %*d %*d] jiffies=%d');

返回

C{1}

ans =

         100
        3455
      111200

答案 1 :(得分:0)

如果要一次导入所有数据,可以在导入工具中打开此文件:

uiimport(filename);

这将正确删除括号和' jiffies ='文本,并可以返回所有数字的数字数组。您还可以从导入工具生成代码(单击“导入选择”下拉列表/生成脚本或函数)。这可能比直接使用文本扫描更好地处理文件中的任何错误。