Is there a way to suppress command outputs to command window?

43 vues (au cours des 30 derniers jours)
Ehsan na
Ehsan na le 16 Mai 2014
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

Réponses (6)

Sean de Wolski
Sean de Wolski le 16 Mai 2014
evalc('yourmainfile');
  4 commentaires
Ehsan na
Ehsan na le 19 Mai 2014
Thanks Sean.
Sven
Sven le 8 Oct 2015
Thanks a lot! Worked for me for suppressing command line outputs of a model dependency function:
evalc('[files, ~, ~, ~] = dependencies.fileDependencyAnalysis(ModelName, ''manifestfile'')');

Connectez-vous pour commenter.


Jos (10584)
Jos (10584) le 16 Mai 2014
Modifié(e) : Jos (10584) le 16 Mai 2014
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)
  1 commentaire
Ehsan na
Ehsan na le 16 Mai 2014
Thanks a very good solution to suppress the DISP function outputs!
Is it possible that instead of overloading disp function by creating another m-file named disp.m, I create a function named disp inside my main file (main_prog.m), but it gets a GLOBAL scope so that it also will be accessible from subcode_1.m in the run time? (subcode_1.m is called from within the main_prog.m in the run time)

Connectez-vous pour commenter.


Azzi Abdelmalek
Azzi Abdelmalek le 16 Mai 2014
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 commentaires
Azzi Abdelmalek
Azzi Abdelmalek le 16 Mai 2014
I didn't change your file, just created another one, you can choose to run the first or second one
Ehsan na
Ehsan na le 19 Mai 2014
I see. Thanks.

Connectez-vous pour commenter.


Steven Lord
Steven Lord le 3 Mai 2025
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
1 function y = myfun129872(x) 2 y = x.^2
issues = codeIssues('myfun129872.m')
issues =
codeIssues with properties: Date: 03-May-2025 23:51:30 Release: "R2024b" Files: "/users/mss.system.7c99x/myfun129872.m" CodeAnalyzerConfiguration: "active" Issues: [1x10 table] SuppressedIssues: [0x11 table] Issues table preview Location Severity Fixability Description CheckID LineStart LineEnd ColumnStart ColumnEnd FullFilename _______________ ________ __________ _________________________________________________________________________ _______ _________ _______ ___________ _________ _______________________________________ "myfun129872.m" info auto "Add a semicolon after the statement to hide the output (in a function)." NOPRT 2 2 3 3 "/users/mss.system.7c99x/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.

Henric Rydén
Henric Rydén le 16 Mai 2014
echo off
  2 commentaires
Ehsan na
Ehsan na le 16 Mai 2014
echo offf does not affect this scenario. already checked. (My Matlab version: 2012b)
Henric Rydén
Henric Rydén le 19 Mai 2014
Ok, sorry

Connectez-vous pour commenter.


Matt J
Matt J le 3 Mai 2025
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.

Catégories

En savoir plus sur Debugging and Analysis dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by