2012-03-01 12 views
19

Desidero sopprimere l'output di variabili in un set di funzioni Matlab. Il problema è che l'autore dimentica il ";" in molte posizioni nel codice. A scopo di debug questo output è utile ma ora voglio sopprimerlo, senza cercare l'intero codice per il mancante ";". C'è la possibilità di disattivare questo tipo di output?Soppressione uscita

+3

Possibile duplicato di questo: [http://stackoverflow.com/questions/3029636/suppressing-a-functions-command-window-output-in-matlab](http://stackoverflow.com/questions/3029636/soppressione-a-funzioni-comando-finestra-uscita-in-matlab) La risposta è stata: "Si potrebbe provare a racchiudere la chiamata alla funzione in un [evalc] (http://www.mathworks.com/help/ TECHDOC/ref/evalc.html)." –

risposta

28

È possibile sopprimere l'output utilizzando evalc, ma ciò richiede di passare l'espressione come stringa. Per esempio se si sta utilizzando:

[A,B,C] = notMyFunction(d,e,f); 

È possibile utilizzare invece

[T,A,B,C] = evalc('notMyFunction(d,e,f);'); 

E qualsiasi output che sarebbe andato alla console sarà ora tamponato e conservati in T.

1

E a proposito di chiamare quelle funzioni con un punto e virgola alla fine? Così, invece di chiamare

my_function() 

è sufficiente digitare

my_function(); 

Edit: http://www.mathworks.de/help/techdoc/ref/evalc.htmlevalc('my_function()'); Edit2: Troppo tardi

+0

Questo è sbagliato. L'aggiunta del punto e virgola impedisce di stampare i valori restituiti. Non cambia nulla sul comportamento della funzione. – Ronenz

+0

Quindi è solo parzialmente sbagliato ;-) – tim

2

Ci dispiace, ma non v'è alcun modo semplice per trasformare appena fuori il display al comando finestra quando non si riesce ad aggiungere punti e virgola. Basta aggiungere il punto e virgola da soli.

Sì, è possibile sovraccaricare disp e display, impedendo loro di funzionare come dovrebbero, ma in tal caso non funzionerebbero anche in circostanze normali. Ti spezzerebbe una parte preziosa di MATLAB.

E scusa, ma l'aggiunta di un punto e virgola alla fine di una chiamata di funzione non ha alcun impatto sul fatto che le linee interne non abbiano un punto e virgola. Quelle linee internamente non terminate continueranno a scaricare i loro risultati nella finestra di comando.

-2

quando si chiama la funzione, è necessario mettere un segno ";" alla fine, altrimenti l'output sarebbe visualizzato, non importa per la funzione utente o le funzioni preimpostate MATLAB.

+0

La domanda non era di sopprimere l'output dei valori di ritorno di una chiamata di funzione. La domanda era di sopprimere l'output di tutte le chiamate di funzioni annidate che potrebbero mancare; cartello. Quindi l'evalc è la risposta. –

Problemi correlati