Matlab 从大型文本文件中提取列
我是处理大数据的新手,希望下面有一个简单的解决方案。任何帮助都将不胜感激 我一直在用EmEditor修改一个~2GB的文本文件,它是315000x1706。每列的标题随机包含1或2。以下是我的一张小照片:Matlab 从大型文本文件中提取列,matlab,text,Matlab,Text,我是处理大数据的新手,希望下面有一个简单的解决方案。任何帮助都将不胜感激 我一直在用EmEditor修改一个~2GB的文本文件,它是315000x1706。每列的标题随机包含1或2。以下是我的一张小照片: 1 2 2 1 1 1 2 1 1 1 1 1 1 2 2 2 AA TT TA CT TT GA TA CT AA CT TT GA CT TT TA TA AA TT TA CT TT GA TA CT
1 2 2 1 1 1 2 1 1 1 1 1 1 2 2 2
AA TT TA CT TT GA TA CT AA CT TT GA CT TT TA TA
AA TT TA CT TT GA TA CT AA CT TT GA CT TT TA TA
AA TT TA CT TT GA TA CT AA CT TT GA CT TT TA TA
(File) (File 1) (File 2)
我需要把它分成两个文件,一个只有“1”列,另一个只有“2”列
有什么建议吗?文件太大,无法在excel中打开。这些数据最终将出现在Matlab中。这可以用Matlab实现吗
谢谢这里有一种方法可以用来读取和写入数据:
% Read data
f0 = 'data0.txt';
fid = fopen(f0,'r');
head = textscan(fid,'%u');
data = textscan(fid,'%2s');
fclose(fid);
% Process data
idx = (head{1}==1);
data = reshape(data{1},numel(idx),[]);
% Write file corresponding to 1s in header
f1 = 'data1.txt';
fid = fopen(f1,'w+');
fprintf(fid,[repmat('%s ',1,nnz(idx)-1) '%s\n'],data{idx,:});
fclose(fid);
% Write file corresponding to 2s in header
f2 = 'data2.txt';
fid = fopen(f2,'w+');
fprintf(fid,[repmat('%s ',1,nnz(~idx)-1) '%s\n'],data{~idx,:});
fclose(fid);
上面提到的唯一潜在问题是,如果文件足够大,您可能会出现内存问题。对于较小的文本文件,您是否能够实现所需的功能?对于文本文件,您基本上必须逐行读取并处理它。即使是较小的文件,我也不知道从何处开始。我假设沿着
AA TT TA CT TT GA TA CT
的行有多行?如果您对问题进行编辑,以提供文件中内容的更完整的小示例,这将非常有用。编辑后的问题将显示我需要执行的操作。在一个简单的例子中,我只是复制并粘贴每一列的标题,但我有1706列,无法手动执行此操作。谢谢。你的记忆力好吗?还是想提高记忆力?谢谢!这个周末我要试一试。我正在使用的机器有32克的内存。否则我会把文件分开。再次感谢!