-1

1 ~ 5 の数字を持つ add_.txt という名前のファイルがいくつかあり、各ファイルから最初の行の情報 (すべて 1 の 1 行 5 列の行列) を取得してそれらを追加し、この情報を取得して新しいテキストを作成します。結果をファイルします。明らかに、答えは単純に [5 5 5 5 5] になりますが、そこに到達するためのプログラム方法を知りたいです。

同じドキュメントから 2 つのデータ文字列を「追加」し、このコードで回答を含むテキスト ファイルを作成する方法を独学できました。

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)

しかし、マルチファイルレベルで自動計算にジャンプする方法がわかりません。どんな助けも素晴らしいでしょう。

4

1 に答える 1

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
于 2013-06-11T16:42:43.810 に答える