2017-02-22 169 views
0

我有一个文本文件(5列“\ t”的分离)这是被其他软件写入。我需要从文件中读取数据并进行一些计算。是否有读取添加到文件中的新行,并对其进行处理,然后再重复每一行新行。只要它能完成工作,我不介意有点拖延。阅读变化的txt文件的matlab

我的想法是开始读取一行文件中的行,直到文件的末尾,那么它会从它最后停止,直到文件的新的终端...等读取。 这可以在Matlab中完成吗?我可以指定文件阅读的起始行吗?我是否也可以更新文件结束点?

为了阻止循环在EOF点突破,我想我应该把我的循环,通过时间或其他任何东西来控制,而应该在每次迭代结束时检查EOF。

我大部分时间用Matlab的工作,但如果有更好的选择用于此目的(即我可以合理地学习)请随时来指导我。

EDIT1:我已经尝试使用dlmread如你所说,当我看到当我改变R1在读取文件甚至正确的循环之外,并与其他软件更新文本文件。但是,当我把它放在一个循环中时,我得到这个错误: 使用dlmread时出错(第143行) 空格式字符串在文件末尾不受支持。

这里是我的代码多次阅读:

clear all 
x=0; 
R1=0; C1=0; 
while(x<10) 

    M = dlmread('tst_4.txt','\t',R1,C1); 
    R1=length(M); 
    x=x+1; 
end 

感谢

+0

你可以尝试使用'dlmread'并指定范围读取基于文件的最后一次读取数据。 – Nemesis

回答

0

您可以使用dlmread(filename,delimiter,R1,C1)。其中R1和C1分别是行和列的偏移量。通过将行偏移设置为您读取的最后一行,您可以阅读文件内容,但不包括您已经阅读的内容。

+0

非常感谢你,我试了一下没有一个循环(改变R1甚至是时间),它工作,当我把它放到循环中并运行记录数据的程序时,它给出了这个错误:Error using dlmread(line 143) 文件末尾不支持空格式字符串。我仍然可以读取文件(当被其他软件编辑时,在单一的manaual迭代中,R设置为不同的值。你知道为什么会发生这种情况吗?我将通过放置代码来编辑文章。谢谢 – Isra

+0

林不知道。稍后我会自己尝试一下,并告诉你是否可以解决问题。同时,我注意到了你的代码中可能存在的一个bug,你使用length(M)来获取矩阵中的行数。然而,长度函数返回最长边的长度,由于行数随着时间的增加而增加,所以在开始时可能会有比列更多的列,这意味着在接下来的循环中,R1会对应的列数。尝试使用大小(M,1),以确保你总是得到行数 – ganninu93

+0

我试过你的建议,我没有错误,我运行它50秒,我能够阅读大约4000行,这很好,我的值得关注的是,我看不到工作表上的大小更新,这是否意味着直到阅读完成才能完成处理? – Isra