读取具有不同行长度的文本文件

时间:2014-11-21 22:41:36

标签: matlab text-files

我有一个数据文件(.txt),如下所示;

A 2.2 5
B 3.2 0.5
C 0 2
A 3 2 B
A 2 6 C
B 2.3 4.5 C

前三个表示节点(name,feature1,feature2),而后三个表示每个节点(节点A,节点B,节点C)之间的关系。如您所见,节点和关系采用不同的格式(节点=字符串数字数字,而relations =字符串,数字数字字符串)。最后,我将根据他们的初始特征和时间关系来绘制它们。我尝试了几件事,但节点有3个参数和边有4个参数的东西使得它很难解决。

所以,基本上,我想逐行阅读文本文件,我希望能够定义所有节点,并将节点的所有参数都作为字符串数字数字,并定义所有关系以及绘图他们最终。

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

查看内置函数fgetl

fid = fopen(filename);

lineoftext = fgetl(fid);
while ischar(lineoftext)
    C = strsplit(strtrim(lineoftext)); % this will be a cell array
    if length(C) == 3
        % then it's a node, put code here
    else
        % then it's relational, put code here
    end
    lineoftext = fgetl(fid);
end

fclose(fid);

这将从文件中读取一行,将其拆分为单元格数组中的文本块,然后计算块的数量,以查看它是节点还是关系字符串。您必须将自己的代码放在if语句中。然后它读入另一行并重新执行。当它到达文件末尾时,lineoftext = -1和while循环结束。