39

Octaveにループのあるプログラムがあります。行列に変換できるものではなく、さまざまなパラメーターを使用して関数を実行しています。各反復の開始時に、を使用して現在のパラメーターを出力しdispます。

初めてそれを実行したとき、私は何億もの警告を受け取りました、そしてそれから私はこれらのプリントも手に入れました。それらをクリーンアップしたので、もう表示されません。私の推測では、それらはバッファーに詰まっていると思います。プログラムが終了するか、バッファーがいっぱいになると、それらが表示されます。

プリントを表示できるように、プリントバッファを強制的にフラッシュする方法はありますか?

4

7 に答える 7

45

fflush(stdout) および/または fflush(stderr) を使用して、disp() からバッファーをフラッシュします。

于 2010-04-14T07:47:29.493 に答える
30

moastab が述べたように、fflush(stdout)Octave で動作します。

MATLAB ではdrawnow('update')、出力をフラッシュするために使用します。

MATLAB のdrawnow関数は、MATLAB でグラフィカル オブジェクトの再描画を制御する人には馴染み深いものですが、stdout stderr バッファーにも適用されます。この'update'オプションは必須ではありませんが、フラッシュを非グラフィカル キューに制限します。この詳細は、drawow() のドキュメントで暗示されているだけです。ループ内の fprintf 呼び出しで動作することを確認しました。

于 2011-11-19T00:39:32.113 に答える
20

Octave : を呼び出して、出力のバッファリングをオフにすることができますmore off

これにより、ページネーションが無効になり、すべての出力が画面に直接送信されます。

于 2012-02-02T12:21:17.033 に答える
3

私があなたの質問を正しく理解していれば、日記関数を使用してすべてのセッション出力をテキストファイルにダンプできます。diary on録音を開始し、diary off停止します。diary filenameデフォルトの「日記」の代わりにファイル名を使用します。

これは、OctaveとMATLABの両方の組み込み関数です。詳細については、を参照してくださいhelp diary


また、オクターブバッファサイズを増やすことができます。Windowsでは、左上隅のメニューの[オクターブプロパティ]ダイアログでこれを行うことができます。

于 2010-04-13T20:44:31.870 に答える
0

drawnowグラフが更新されますが、stdoutパイプでも機能するかどうかはわかりません。

disp(...)ステートメントをに変換することもできます。Octaveとは異なる方法で処理されるfprintf(stderr, ...)と思います。stderrstdout

于 2010-04-13T20:50:34.630 に答える