0

私はそれが役に立つと思います.少なくとも私はそう思います.

stdout を使用する一連の行があるか、これらの行が関数に含まれているとします。次に、出力ストリームをファイルに変更する必要があります。ただし、diary() などではできません。

例:

ShowResults(...)   % this is a function containing a lot of fprintf('asdasdasd', ...)
                   % which by default shows messages on monitor 

次に、次のようなものが必要です。

ShowResults(...)   % this will now output to monitor
setOutputHandler(my_file_pointer); % setup redirection
ShowResults(...)   % this will now output to the file
setOutputHandler(stdout);

またはさらに良いもの:

setOutputHandler(stdout, my_file_pointer);
ShowResults(...)   % this will now output to the file and monitor at the same time
setOutputHandler(stdout);
4

1 に答える 1

1

特にfprintf関数で使用する場合、最も簡単なのは、への各呼び出しで最初の引数として使用する追加の入力を定義することですfprintf

デフォルトでは、追加の入力は 0 に設定されます。これはfprintf、画面に出力することを意味します。fopenまたは、によって作成されたファイル識別子をtoに渡すこともできます。showResultsこれにより、ファイルfprintfに書き込まれます。

それが不可能な場合は、いつでも を使用できcapturedOutput = evalc('showResults(...)')ます。これにより、すべての出力が配列にキャプチャされ、そこからファイルに書き込まれます。

于 2013-01-18T19:18:07.947 に答える