Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/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:从.txt文件读取_Matlab_Text Files_Textscan - Fatal编程技术网

Matlab:从.txt文件读取

Matlab:从.txt文件读取,matlab,text-files,textscan,Matlab,Text Files,Textscan,我有一个.txt文件,每行始终有两个值,由制表符分隔: 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 1

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

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
等等

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

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

% Variab
line{1} = 0;
% Open files
fid = fopen(('D:\Dokumente\Studium\8. Semester\BA\Vali mit einzelenne punkten\alle.txt'), 'rt');
% Read Data
for i = 1:80
    j = 1;
    line = fgets(fid);
    line = textscan(line,'%f %f');
    while line{1} ~= '.'
        digNum{i}(j) = line{1};
        gewicht{i}(j) = line{2};
        line = fgets(fid);
        line = textscan(line,'%f %f');
        j = j + 1;
    end
end
如你所见,我希望左边的数字保存为digNum{upOneValueWhen'.}{numberIn'Vector'},右边的数字gewicht{upOneValueWhen'.}{numberIn'Vector'}

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

有什么想法吗???
提前非常感谢

如前所述,到目前为止,数据并未再现问题。幸运的是,您应该能够通过以下步骤自己解决此问题:

  • 在代码中放置(有条件的)断点
  • 找出事情进展顺利的最后一刻,以及事情出错的第一刻
  • 到事情进展顺利的最后一刻,逐行运行代码,仔细观察所有变量是如何变化的

  • 这样,您将很快发现问题。

    我将尝试在一个while循环中逐行读取整个文件,直到到达文件末尾:

    % 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可以将所有数据放入两个矩阵中


    我认为上面的工作原理与前面提到的一样。

    您的示例数据没有复制您的问题。您需要我复制粘贴所有数据吗?需要的是一个复制问题的示例。这看起来很奇怪
    line=textscan(line,'%f%f');而行{1}~='.
    。不能使用textscan将
    读取为浮点值。尝试
    textscan('..','%f%f')。MATLAB 2015b仔细想想,这不应该是问题的根源。这很奇怪。我看不出你的代码还有多少地方是错误的。也许你在写代码的时候还有别的想法。我的想法是检查代码,确保代码符合您的要求。