How can I flush the output of disp in Matlab or Octave?

后端 未结 7 526
借酒劲吻你
借酒劲吻你 2020-12-29 03:20

I have a program in Octave that has a loop - running a function with various parameters, not something that I can turn into matrices. At the beginning of each iteration I p

相关标签:
7条回答
  • 2020-12-29 03:37

    As mentioned by moastab, fflush(stdout) works for Octave.

    In MATLAB, use drawnow('update') to flush the output.

    MATLAB's drawnow function will be familiar to those who control the redrawing of graphical objects in MATLAB, but it applies to the stdout stderr buffers as well. The 'update' option is not required, but limits the flushing to non-graphical queues. This detail is merely implied in the drawnow() documentation; I have verified it to work on fprintf calls in a loop.

    0 讨论(0)
  • 2020-12-29 03:41

    drawnow will cause graphs to update, I'm not sure if it works on the stdout pipe as well.

    You might also convert your disp(...) statements to fprintf(stderr, ...), I think stderr is handled differently from stdout on Octave.

    0 讨论(0)
  • 2020-12-29 03:43

    Octave: You can turn off buffering of output by calling more off.

    This will disable pagination such that all output is sent directly to the screen.

    0 讨论(0)
  • 2020-12-29 03:45

    If I understand your question correctly, you can use diary function to dump all session output to a text file. diary on will start recording, and diary off will stop. diary filename will use filename instead of default "diary".

    It is build -in function in both Octave and MATLAB. For more details see help diary.


    Also you can increase Octave buffer size. On Windows you can do it in Octave Properties dialog from upper left corner menu.

    0 讨论(0)
  • 2020-12-29 03:54

    Put the following commands at the beginning of your section or your code:

    page_screen_output(0);
    
    page_output_immediately(1);
    
    0 讨论(0)
  • 2020-12-29 03:54

    From here and elsewhere, there are at least 5 methods to get immediate output, in Octave.

    Use one of the following:

    %---------------------------
    % Turn OFF output buffering
    %---------------------------
    more off                        % command & NOT shown in output
    PAGER = "less"                  % built-in var - shown in output
    page_screen_output = 0          % built-in var - shown in output
    page_output_immediately = 1     % built-in var - shown in output
    fflush(stdout)                  % Need to call after each "output" line
    
    0 讨论(0)
提交回复
热议问题