我有一个.txt文件格式为:
123123 4
123234 4
515511 4
157888 4
854634 4
345661 4
我希望能够将每个列导入另一个变量。我试过了:
data = textscan(fid, '%f %*[^\n]','HeaderLines',0);
test = textscan(fid, '%*f %f %*[^\n]','HeaderLines',0);
成功导入第一列数字,但test
会返回[]
。
造成这种情况的原因是什么?
答案 0 :(得分:3)
目前您正在扫描整个文件两次 - 这不是一个好主意。
那么importing一个变量中的所有内容如何然后将其拆分?
DATA = importdata('myFile.txt',' ',0)
data = DATA(:,1);
test = DATA(:,2);
clear DATA
请注意,如果您有标题,则代码会略有不同:
headerlines = 5
DATA = importdata('myData.txt',' ',headerlines)
data = DATA.data(:,1);
test = DATA.data(:,2);
如果空白分隔符' '
无效,请尝试制表符'/t'
。
您的方法无效的原因是文件ID fid
。想象一下fid
是一包美味的奶酪。通过文本扫描读取的文件的每一行就像你吃了一片奶酪一样。所以在你的命令之后:
data = textscan(fid, '%f %*[^\n]','HeaderLines',0);
没有奶酪了。你的第二个textscan
电话没有任何奶酪。为了使它工作,你需要打开另一个类似的奶酪包:
fid = fopen('myData.txt');
data = textscan(fid, '%f %*f %*[^\n]','HeaderLines',0);
fclose(fid)
fid = fopen('myData.txt');
test = textscan(fid, '%*f %f %*[^\n]','HeaderLines',0);
fclose(fid)
但我告诉你,你会变胖。但如果你真的想吃奶酪,请按照以下步骤进行:
fid = fopen('myData.txt');
DATA = textscan(fid, '%f %f %*[^\n]','HeaderLines',0);
fclose(fid)
data = DATA(1);
test = DATA(2);