我有以下文件:
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));
答案 0 :(得分:1)
在这种情况下,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};