如何打开多个文件,并将每个文档中的一行数据合并为一个数字? MATLAB

时间:2013-06-11 16:32:31

标签: matlab

我有几个名为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)

但我不知道如何在多文件级别上跳转到自动计算,任何帮助都会很棒。

1 个答案:

答案 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