将多个文本文件导入Matlab

时间:2016-07-19 22:57:19

标签: matlab

我之前已经问过这个问题,但问题是错误的。所以我要重新制定它。
我有8个tsv文件,名称如2004.07.01.0000.tsv,2004.07.01.0300.tsv,其中每个文件有72行和144列(所以我在每个矩阵或文件中有10368个元素)。我试图自动导入所有这些文件到matlab并生成向量(所以我假设我将有72x144 = 10368向量),我将用于分析。例如,vect1将具有来自file1的第一个元素,来自file2的第一个元素,......,来自file8的第一个元素。 Vect2将有来自file1的第二个元素,来自file2的第二个元素,......,来自file8的第二个元素,依此类推。我试图使用双循环和连接命令,但我没有得到任何地方。我只是卡住了。我很感激任何帮助!谢谢

1 个答案:

答案 0 :(得分:0)

我假设您将所有8个TSV文件放在一个目录中(没有任何其他TSV文件),使用下面的tsvDirectory指定。

clearvars

%% Parameters
% Where your TSV files live, relative to your current path.
tsvDirectory = './tsv';

%% Run
% `dir` returns a list of files with metadata.
dirOutput = dir([tsvDirectory filesep() '*.tsv']);

% This will hold the data from all files. It's a 72 by 144 by `N` array, where
% `N` is the number of TSV files.
% N.B. If your TSV files don't have exactly this size, you may run into some
% (easily-fixable) errors.
allArrays = zeros(72, 144, numel(dirOutput));

for i = 1 : numel(dirOutput)
  filename = [tsvDirectory filesep() dirOutput(i).name];
  oneArray = dlmread(filename, '\t');
  allArrays(:, :, i) = oneArray;
end

这会循环遍历每个文件,并通过dlmread进入。它构建了一个72乘144乘8(或者你有多少个TSV文件)3D阵列。

因此allArrays(1,1,8)会在第八个文件中显示左上角的条目。

allArrays(72, 144, 1)为您提供第一个文件中右下角的条目。

allArrays(1,1,:)为您提供所有八个文件中的左上角条目。

allArrays(:,:,5)在第五个文件中为您提供72 x 144阵列。

如果您在提取适当的均值/差异/直方图时遇到问题,请发表评论。