1

例如有一个很大的分数

持续2个小时

还有需要看看还有多少

在外循环的屏幕上做输出

但是数值又很多,比如70000

问题 - 如何在打印到屏幕时删除换行符

不接收 70 000 行

并且只在一行中查看当前显示?

4

2 回答 2

8

而不是使用disp在屏幕上显示文本,使用fprintf,这需要您手动输入换行符。

比较

>> disp('Hello, '), disp('World')
Hello, 
World

>> fprintf('Hello, '), fprintf('World\n')
Hello, World

\n末尾的表示'World\n'换行符(或通常称为换行符)。

于 2013-04-05T07:47:26.510 回答
4

试试这个函数,你可以用它来代替disp字符串参数。它显示到命令窗口,并记住它显示的消息。下次调用它时,它首先从命令窗口中删除先前的输出(使用 ASCII 退格字符),然后打印新消息。

通过这种方式,您只能看到最后一条消息,并且命令窗口不会填满旧消息。

function teleprompt(s)
%TELEPROMPT prints to the command window, over-writing the last message
%
%       TELEPROMPT(S)
%       TELEPROMPT()      % Terminate
%
%       Input S is a string.

persistent lastMsg

if isempty(lastMsg)
    lastMsg = '';
end

if nargin == 0
    lastMsg = [];
    fprintf('\n');
    return
end

fprintf(repmat('\b', 1, numel(sprintf(lastMsg))));
fprintf(s);

lastMsg = s;
于 2013-04-05T07:51:00.900 回答