代码之家  ›  专栏  ›  技术社区  ›  Nathan Fellman

如何在Matlab或倍频程中刷新disp的输出?

  •  35
  • Nathan Fellman  · 技术社区  · 16 年前

    我有一个八度的程序,它有一个循环,运行一个带有各种参数的函数,而不是一个可以转换成矩阵的函数。在每次迭代开始时,我使用 disp .

    我第一次跑步的时候 brazillion 警告,然后我也得到了这些指纹。现在我把它们清理干净了,我再也看不见它们了。我的猜测是它们被困在缓冲区中,当程序结束或缓冲区填满时我会看到它们。

    有什么方法可以强制刷新打印缓冲区以便我可以看到我的打印?

    6 回复  |  直到 9 年前
        1
  •  42
  •   moastab    16 年前

    使用fflush(stdout)和/或fflush(stderr)从disp()刷新缓冲区。

        2
  •  27
  •   Arthur Hebert-Ryan    14 年前

    正如moastab提到的, fflush(stdout) 适用于八度音阶。

    在Matlab中,使用 drawnow('update') 以刷新输出。

    MATLAB的 drawnow 函数对于那些想在Matlab中控制重绘图形对象的人来说很熟悉,但它也适用于stdout stderr缓冲区。这个 'update' 选项不是必需的,但将刷新限制为非图形队列。这个细节仅仅隐含在 drawnow() documentation ;我已验证它在循环中处理fprintf调用。

        3
  •  19
  •   Patrizio Bertoni    9 年前

    倍频程 :您可以通过调用 more off .

    这将禁用分页,以便将所有输出直接发送到屏幕。

        4
  •  6
  •   rink.attendant.6    10 年前

    将以下命令放在节或代码的开头:

    page_screen_output(0);
    
    page_output_immediately(1);
    
        5
  •  3
  •   yuk    16 年前

    如果我正确理解你的问题,你可以用 日记 函数将所有会话输出转储到文本文件。 diary on 将开始录制,并且 diary off 将停止。 diary filename 将使用文件名而不是默认的“日记”。

    它在倍频程和Matlab中都是内置函数。有关详细信息,请参见 help diary .


    也可以增加倍频程缓冲区大小。在Windows上,您可以在左上角菜单的“倍频程属性”对话框中执行此操作。

        6
  •  0
  •   mtrw    16 年前

    drawnow 会导致图表更新,我不确定它是否在 stdout 还有烟斗。

    你也可以 disp(...) 对…的陈述 fprintf(stderr, ...) 我想 stderr 处理方式与 标准输出 八度音阶