【问题标题】:How do you output a line break in the command view in Matlab when running a m-file?运行m文件时如何在Matlab的命令视图中输出换行符?
【发布时间】:2009-09-17 08:51:21
【问题描述】:

我有一个 m 文件,它基本上输出一些计算:

disp(['Value ', num2str(i)]);
disp(x)
disp(['Number of iterations ', num2str(iter)])
disp('----------')

然而,这在命令视图中输出的东西相当混乱,这在调试代码时真的很烦人。我想在命令窗口的输出中添加几个换行符。但是我似乎找不到任何关于此的信息,因为 Matlab 文档非常糟糕。我试过像 disp('\n') 和 disp(' ') 无济于事。

你是怎么做到的?可以吗?

【问题讨论】:

    标签: matlab


    【解决方案1】:

    fprintf('\n') 应该可以解决问题,disp(' ') 也是如此。一般来说,fprintfdisp 更灵活。 disp 的主要优点是它有一定的智能,并且知道如何打印出完整的对象。

    【讨论】:

    • 谢谢! fprintf('\n') 成功了。不知道 fprintf 可以输出文本。很高兴您也可以执行 fprintf('Juhi = %d',17)。但是 disp('') 仍然不输出换行符可能是版本问题或其他问题。
    • disp('') 不产生任何输出,但 disp(' ') (带有空格)对于大多数实际用途来说已经足够了。如果没有,请按照建议使用 fprintf 或 disp(s),其中 s 是包含您需要的字符串。
    【解决方案2】:

    您还可以显示换行符'\n'及其十进制值:10。

    disp(char(10))
    

    disp(['line 1' char(10) 'line 2'])
    

    【讨论】:

    • 第一个不行。你需要写disp(char(10)),否则只会显示数字10。
    • @gnovice...确实如此,谢谢。我已经习惯了其他没有覆盖双打的文本方法。很好的收获。
    • 我认为第二行代码会像以前一样工作。连接字符和双精度应将双精度转换为其 ASCII 等效项。
    • 次要 nitpick:现代 Matlab 字符是 Unicode(存储为 16 位),所以严格来说,数字被转换为 Unicode 代码点,而不是 ASCII。 “扩展 ASCII” (128-255) 字符可能不同,数字越大是有效字符。例如。 char(338) 将显示一个连字“OE”。
    • @Andrew:你是对的。我需要打破自己说“ASCII”的习惯,但是当文档在某些地方仍然提到它时,这很难。 ;)
    【解决方案3】:

    作为更新,自 Matlab 2016b 以来,还有另一种方法:

    disp([ 'first line' newline 'second line' ])
    

    这是推荐的方式。来源:https://en.wikibooks.org/wiki/MATLAB_Programming/Inserting_Newlines_into_Disp_Warn_and_Error

    【讨论】:

      猜你喜欢
      • 2011-10-03
      • 1970-01-01
      • 2019-10-18
      • 1970-01-01
      • 2023-03-26
      • 2020-03-15
      • 2014-05-15
      • 2021-03-19
      • 1970-01-01
      相关资源
      最近更新 更多