我有以下文件:
0 1 4 8
2 3 0 1 2 3
2 1 3 1 1 2
该文件将始终有三行,我希望每行都在单独的向量
中我有这样的代码,但是正如人们可以看到的那样,它不会将文本存储在不同的向量中。
fid = fopen('my_file.txt');
while ~feof(fid)
line=fgetl(fid);
C = str2num(line)
end
编辑:我通过使用Cellarrays获得了答案。如果有人可以做得更好,请在下面回答。
fid = fopen('my_file.txt');
CCSMat = {};
count = 1;
while ~feof(fid)
line=fgetl(fid);
C = str2num(line);
CCSMat(count) = {C};
count = count+1;
end
v1 = cell2mat(CCSMat(1));
v2 = cell2mat(CCSMat(2));
v2 = cell2mat(CCSMat(3));
在这种情况下,textScan函数可能会有所帮助,同时逐行阅读文件:
fid = fopen('data.txt','r');
res = cell(3,1);
res_off = 1;
while (~feof(fid))
line = fgets(fid);
vector = textscan(line,'%f','CollectOutput',true,'Delimiter',' ');
res{res_off} = [vector{:}];
res_off = res_off + 1;
end
fclose(fid);
v1 = res{1};
v2 = res{2};
v3 = res{3};
尽管稍慢一点,但您也可以在同一方法中使用strsplit与str2double一起使用:
fid = fopen('data.txt','r');
res = cell(3,1);
res_off = 1;
while (~feof(fid))
line = fgets(fid);
res{res_off} = str2double(strsplit(strtrim(line),' '));
res_off = res_off + 1;
end
fclose(fid);
v1 = res{1};
v2 = res{2};
v3 = res{3};