Matlab:从.txt文件读取
我有一个.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
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仔细想想,这不应该是问题的根源。这很奇怪。我看不出你的代码还有多少地方是错误的。也许你在写代码的时候还有别的想法。我的想法是检查代码,确保代码符合您的要求。