1

行列 M_T を取得する操作を行っています。このマトリックスは、テキスト ファイルに保存されます。そして、このテキスト ファイルは、プライマリ データ ファイルとして再び利用されます。これを100回繰り返さなければなりません。また、最終的には、生成された 100 個のテキスト ファイルのすべてのデータを、final_result.txt という名前の 1 つのテキスト ファイルに保存したいと考えています。ループ内で異なるテキスト ファイルを異なる名前で保存する方法がわかりません。以下のコードを書いてみました。しかし、それはエラーを示しています。

for k=1:100

fid = fopen('data1.txt'); 
A =  textscan(fid, '%f %f %f ') ;
%read the file
a = A{1};
b = A{2};
c = A{3};
p=[a b c];
p_t=p.';
M=rotationMatrix*p_t;
M_T=M.';


fid = fopen('data1.txt', 'wt');
fprintf(fid,' %f\t %f\t %f\n',M_T);
fclose(fid);

textfilename = ['result' num2str(k) '.txt'];
fid1 = fopen('result'k '.txt', 'wt');
fprintf(fid1,' %f\t %f\t %f\n',M_T);
fclose(fid1);

end
4

1 に答える 1

1

これを試して

textfilename = ['result' num2str(k) '.txt'];
fid1 = fopen(textfilename, Write);
...

resultk.txtこれにより、k = 1,...,100の別のファイルが生成されます。また、入力ファイルを 2 回開いていますが、閉じているのは 1 回だけです。ファイルを読み取り用に開いたら、書き込み用に再度開く前にファイルを閉じる方がよいと思います。これで問題が解決しない場合は、表示される具体的なエラー メッセージを投稿してみてください。

すべてのファイルをマスター ファイルに出力するには、ループが始まる前にこれを行います

fidresult = fopen('final_result.txt', Write);

その後、各反復で

fprintf(fidresult,' %f\t %f\t %f\n',M_T);

ループが終了した後

fclose(fidresult)

これにより、ループ反復ごとに個別のファイルが作成されるだけでなく、反復ごとにマトリックスがマスター結果ファイルに出力されます。

于 2013-02-28T10:47:31.077 に答える