我有几个文本文件:(participant1,participant2,participant3,.... participant5)
我使用循环制作了这些文件。我的循环是这样的:
%subinfo_vect是一个提示,允许用户输入它们的编号,因此每次都有新文件。 %将结果x y z h追加到文件
中for i = 1
empty_mat = zeros(0);
filename=['participant', subinfo_vect, '.txt'];
dlmwrite(filename, [x,y,z,h], '-append');
end
此代码创建与我们的提示(subinfo_vect)对应的文件。现在我想知道如何遍历这些文件(总共6个),以便我们可以捕获结果并找到它们的平均值。为了澄清结果,每个文件(txt)看起来像这样(下面),我需要找到第2列和第3列的平均值:
n =
1.0000 1.0000 1.2986 1.3973
1.0000 0 0.4159 0.5138
1.0000 1.0000 0.3955 0.4924
1.0000 0 0.3574 0.4539
1.0000 1.0000 0.3489 0.4458
1.0000 1.0000 0.4403 0.5372
如何循环显示如上所示的6个文件,以便我可以按顺序获得所有6个文件的平均值?有什么想法吗?
到目前为止我所拥有的是加载所有文件的手动输入。我通过添加:
手动阅读这些文件 dlmread('participant1.txt')
< - 这是手动的,我希望计算机在没有给出命令的情况下自动完成,所以我可以输入一个循环文件夹,它会读取所有文件一?使用for循环?
能帮助我吗
答案 0 :(得分:1)
假设您已将.txt文件保存在名为myFolder
的文件夹中,则:
fileList=dir([myFolder '/*.txt']);
fileList={fileList.name}; %just extracting names for convenience.
for i=1:length(fileList)
contents=dlmread([myFolder '/' fileList{i}]); %do something
end
答案 1 :(得分:0)
将变量looping_dir
设置为包含保存文件的目录名的字符串,然后循环遍历它。你可以尝试这样的事情:
files = dir([looping_dir '*.txt']); % get files ending .txt in given directory
for f = 1:numel(files)
data = dlmread([looping_dir files(f).name]);
% do calculations...
end