2

テキストファイルに数行を書き込んでいますが、その中には行列があります。通常のテキストメッセージにはfprintfを使用し、ファイルへのマトリックスの書き込みにはdlmwriteを使用することにしました。ただし、このアクションはwhileループで実行されます。概要は次のとおりです。

 k=0;

 while (k<10):

     fprintf(file,'%s', 'Hello');

     dlmwrite(file,M ,'-append', 'newline', 'pc');

     fprintf(file, '%s' , 'Goodbye');

     k= K+1;

ただし、ファイルを開くと、すべてのマトリックスが、こんにちはとさようならの間にあるのではなく、テキストファイルの最後に追加されます。この問題を修正する方法はありますか?

4

2 に答える 2

4

これを使って:

k=0;

file = fopen('exp.txt','a');
 while (k<10)

     fprintf(file,'%s', 'Hello');

     dlmwrite('exp.txt',A ,'-append', 'roffset', 1, 'delimiter', ' ')

     fprintf(file, '%s\n' , 'Goodbye');

     k= k+1;
 end
于 2013-02-14T17:57:05.010 に答える
3

-appendヘルプによると、結果をファイルの最後に追加するというオプションと関係があるかもしれません。

fprintf2つの関数、およびを使用して同じファイルにアクセスしていますdlmwrite

これはおそらく効率的ではありませんが、からの書き込みのたびにファイルを閉じると機能しますfprintf

clear all
close all

file_name = 'aa.txt';
file = fopen(file_name, 'w');
fclose(file);
file = fopen(file_name, 'a');
M = randn(5);

for kk = 1:10
    file = fopen(file_name, 'a');
    fprintf(file, 'Hi\n');
    fclose(file);
    dlmwrite(file_name, M ,'-append', 'newline', 'pc');
    file = fopen(file_name, 'a');
    fprintf(file, 'Bye\n');
end

そうでない場合は、作成した他の関数を使用して行列を印刷してみてください。この関数は、と同じファイルハンドラーを使用しますfprintf

于 2013-02-14T17:57:28.673 に答える