Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 从大型文本文件中提取列_Matlab_Text - Fatal编程技术网

Matlab 从大型文本文件中提取列

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

我是处理大数据的新手,希望下面有一个简单的解决方案。任何帮助都将不胜感激

我一直在用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         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克的内存。否则我会把文件分开。再次感谢!