Deleting the last displayed line (or part of it) in the command window.

조회 수: 92 (최근 30일)
Mohamed Abdalmoaty
Mohamed Abdalmoaty 2017년 2월 1일
편집: Amin Kassab-Bachi 2021년 8월 18일
I'm trying to use the same line in the command window of Matlab to print the progress of my code.
I have read several solutions and currently I'm using the following command:
disp([repmat(char(8), 1, num_of_Char_to_del)])
This works fine on my Matlab (9.1.0.441655 (R2016b)) when running on Windows 7.
For example when I have the following code
disp('Hello World')
pause
disp([repmat(char(8), 1, 6)])
in an m file with the name 'test.m', and I run the file, first I get
>> test
Hello World
then pressing any key I get
>> test
Hello
>>
Which is what I want.
However, trying the same exact thing on a Matlab (8.5.0.197613 (R2015a) ) running on Linux server, first I get
>> test
Hello World
and if I press any key I get
>> test
Hello World
>>
which is not what I expect.
Can anyone explain what is the issue?
  댓글 수: 2
David J. Mack
David J. Mack 2017년 2월 1일
My first guess would be EOL encoding (\r\n vs. \n). Did you try using fprintf instead of disp (which implicitly adds an EOL). So, e.g.
fprintf('Hello World\n');
pause
fprintf(repmat('\b', 1, 6)); %Deletes 'world' and '\n
Greetings, David
Mohamed Abdalmoaty
Mohamed Abdalmoaty 2017년 2월 1일
Thanks for your comment. Yes, I have tried fprintf but I could not make it work.
I tried to run your code (on the version running on linux server) and it is not doing what we expect. First I get
>> test
Hello World
but when I press any key I get
>> test
Hello World
>>

댓글을 달려면 로그인하십시오.

답변 (3개)

Piotr
Piotr 2019년 10월 15일
Hello,
here is simple sollution, small upgrade of Jan's answer, without checking the length of the line that you want to clear:
lineLength = fprintf('It is %2.1f degrees outside',21.1);
pause(2)
fprintf(repmat('\b',1,lineLength))
Cheers,
Piotr

Jan
Jan 2017년 2월 1일
Try it without the line break:
fprintf('Hello World');
pause
fprintf(repmat('\b', 1, 6));
How did you open Matlab on the server? Through a text terminal or with the GUI?
  댓글 수: 4
Mohamed Abdalmoaty
Mohamed Abdalmoaty 2017년 2월 1일
편집: Mohamed Abdalmoaty 2017년 2월 1일
There are only two options for "The Backspace Key". Changing this option does not change anything in the result of the code. I also disabled the AutoWrap which is on by default, however again with no effect. (I'm attaching my original settings).
sambhav jain
sambhav jain 2020년 4월 30일
hello
i have been running matlab online . In my case it simply prints in next line . the backspace one is not working

댓글을 달려면 로그인하십시오.


Amin Kassab-Bachi
Amin Kassab-Bachi 2021년 8월 18일
편집: Amin Kassab-Bachi 2021년 8월 18일
If you're trying this from within the command line
msg=fprintf("Anything I want to write\n");
pause
fprintf(repmat('\b', 1, (msg+39))); % covers the length of the message + length of the backspace command.
Otherwise, the answers above should work.

카테고리

Help CenterFile Exchange에서 Startup and Shutdown에 대해 자세히 알아보기

태그

제품

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by