Is there a way to suppress command outputs to command window?
이전 댓글 표시
Hello guys, I know I can use ; in the end of the commands to prevent them from echoing to the command windows. But now, my situation is that I have a very long code, dispersed in so many m files.
Several command in them, on purpose, for sake of reporting the status, (and useful for debugging( do not have semicolons. Now I am running the code in a loop, and I think having all these outputs slows the process.
How can I suppress all command outputs, without manually going through the long code and putting a semicolon on each line?
Bonus question: There are some disp functions as well that report to the command line. can I also suppress them?
Thanks
답변 (6개)
Sean de Wolski
2014년 5월 16일
evalc('yourmainfile');
댓글 수: 4
Ehsan na
2014년 5월 16일
Sean de Wolski
2014년 5월 16일
The callbacks will be evaluated from elsewhere, so yes, this won't work for an app.
What I would recommend doing is taking an hour or two and going through and adding the following around your disp statements:
if isverbose
disp whatever
end
Then you can write a function "isverbose". If it returns 1, the disp is evaluated other wise it returns zero and it isn't. This will give you the flexibility you desire in an elegant way.
Ehsan na
2014년 5월 19일
Sven
2015년 10월 8일
Thanks a lot! Worked for me for suppressing command line outputs of a model dependency function:
evalc('[files, ~, ~, ~] = dependencies.fileDependencyAnalysis(ModelName, ''manifestfile'')');
Jos (10584)
2014년 5월 16일
편집: Jos (10584)
2014년 5월 16일
You can create a function in the current directory or top directory of the path called disp.m and put the following single line of code in there:
function thisdoesnothing (varargin)
If you need to use DISP again, just change the name of the m-file to something else (e.g. thisdoesnothing.m)
Azzi Abdelmalek
2014년 5월 16일
fid1 = fopen('your_file.m');
fid2=fopen('new_file.m','w')
res={};
while ~feof(fid)
line1 =[fgetl(fid) ';'];
res{end+1,1}=line1
fprintf(fid2,'%s \r\n',line1)
end
fclose(fid1);
fclose(fid2);
댓글 수: 3
Ehsan na
2014년 5월 16일
Azzi Abdelmalek
2014년 5월 16일
I didn't change your file, just created another one, you can choose to run the first or second one
Ehsan na
2014년 5월 19일
If you're using a sufficiently recent release of MATLAB, create a codeIssues object for the file then call fix with the object and the CheckID of the issues you want to fix as inputs.
dbtype myfun129872.m % Note line 2 is missing its semicolon
issues = codeIssues('myfun129872.m')
% fix(issues, "NOPRT")
I didn't make the fix call executable in Answers because I wanted to show you the file with the code issue present and didn't want to have to keep replacing the file each time I ran the code. I did run it in a local session of MATLAB, however, and confirmed it added the semicolon.
Matt J
2025년 5월 3일
0 개 추천
As a partial solution, you can use favoriteForceSemicolons.m from this File Exchange download,
It is easiest if you install it as a Quick Access button, as recommended in the Desciption section of the submission.
With this, you can open a file in the Matlab Editor and do Select All (Ctrl-A) in a given file. When you apply favoriteForceSemicolons(), it will add semicolons to all relevant lines of code. I don't know if there is a way to automate this process across multiple files, however.
카테고리
도움말 센터 및 File Exchange에서 Debugging and Analysis에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!