我之前已经问过这个问题,但问题是错误的。所以我要重新制定它。
我有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的第二个元素,依此类推。我试图使用双循环和连接命令,但我没有得到任何地方。我只是卡住了。我很感激任何帮助!谢谢
答案 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阵列。
如果您在提取适当的均值/差异/直方图时遇到问题,请发表评论。