我有几个名为add_.txt的文件,数字从1-5开始,我想从每个文件中获取第一行信息(1到5矩阵,所有文件),将它们加在一起,获取此信息并创建带有结果的新文本文件。显然答案只是[5 5 5 5 5],但我想知道如何计划到达那里。
我已经能够自学如何从同一文档中“添加”两个数据字符串,并使用此代码创建一个带有答案的文本文件
fid=fopen('add.txt');
A = fgetl(fid);
AA = str2num(A)
B = fgets(fid);
BB = str2num(B)
C = AA + BB;
fclose(fid);
dlmwrite('results.txt', C)
但我不知道如何在多文件级别上跳转到自动计算,任何帮助都会很棒。
答案 0 :(得分:1)
这样的事情可以解决问题:
% List of file names
% (can be auto-generated like so: filename = ['add_' num2str(ii) '.txt']
% with ii your iteration variable)
filenames = {'add_1.txt', 'add_2.txt', 'add_3.txt', 'add_4.txt', 'add_5.txt'};
% If you know the size of the first line:
A = zeros(1,5);
% Loop through all filenames
for filename = filenames
fid = fopen(filename{1});
A = A + str2num( fgetl(fid) );%#ok
fclose(fid);
end
% Write results to file
dlmwrite('results.txt', A);
如果不事先知道A
中有多少元素,则必须稍微修改一下这个元素:
A = 0;
for filename = filenames
fid = fopen(filenames{1});
A = A + str2num( fgetl(fid) );%#ok
fclose(fid);
end