Matlab:从.txt文件中读取

时间:2016-09-06 10:11:06

标签: matlab text-files textscan

我有一个.txt文件,每行总共有两个值,由制表符分隔:

A

始终以0 0开头并以。结尾。 。 (80次)

我想用Matlab阅读所有数据。这是我的代码:

0   0
23  69
45  108
81  158
110 253
125 357
141 492
165 606
179 753
189 983
.   .
0   0
4   31
33  38
45  89
60  115
75  166
93  201
107 216
116 291
133 366
148 480
170 631
196 720
207 994
.   .
0   0
19  81
33  102
46  128
72  161
138 236
178 398
197 537
210 658
220 832
.   .
0   0
24  38
40  90
71  166
99  193

所以你可以看到我希望左边的数字保存为digNum {upOneValueWhen'。'} {numberIn'Vector'}和正确的数字gewicht {upOneValueWhen'。'} {numberIn'Vector'}。

一切正常但是当我得到digNum = 46(倒数第二个“向量”)时{upOneValueWhen'。'}上升了一个数字。 我不知道为什么。 '我'应该只在''之后上升。'但出于某种原因,它会在这一个特定的位置上升。

任何想法??? 非常感谢你提前

2 个答案:

答案 0 :(得分:0)

我会尝试逐行读取整个文件,直到达到文件末尾:

% Open files
fid = fopen('test.txt');
% Read Data
i = 1;
j = 1;

while(~feof(fid))
    line = fgetl(fid);

    if strfind(line,'.')
        i = i + 1;
        continue;
    end;

    s = textscan(line,'%s','delimiter',' ');
    digNum{i,j} = str2double(s{1}{1});
    gewicht{i,j} = str2double(s{1}{length(s{1,1})});

    j = j + 1;

end;

fclose(fid);

现在,您可以在识别出i时轻松增加.

此外,利用str2double,您可以将所有数据放入两个矩阵中。

我认为上述情况如上所述。

答案 1 :(得分:-1)

如上所述,到目前为止的数据并没有重现问题。幸运的是,您应该能够通过以下步骤自行解决问题:

  1. 在代码中放置(条件)断点。
  2. 找到事情进展顺利的最后时刻,以及事情出错的第一时刻。
  3. 转到事情进展顺利的最后一刻,逐行运行代码,仔细查看所有变量的变化
  4. 这样您就可以快速找到问题。