2012-03-01 29 views
19

Quiero suprimir la salida de variables en un conjunto de funciones de Matlab. El problema es que el autor olvida el ";" en muchas posiciones en el código. Para fines de depuración este resultado es útil, pero ahora quiero suprimirlo, sin buscar todo el código para el ";" que falta. ¿Existe la posibilidad de desactivar este tipo de resultados?Suprimir salida

+3

Posible duplicado de esto: [http://stackoverflow.com/questions/3029636/suppressing-a-functions-command-window-output-in-matlab](http://stackoverflow.com/questions/3029636/supresión-de-funciones-comando-ventana-salida-en-matlab) La respuesta fue: "Puede intentar envolver la llamada a la función en un [evalc] (http://www.mathworks.com/help/ techdoc/ref/evalc.html) ". –

Respuesta

28

Puede suprimir la salida utilizando evalc, pero esto requiere que pase su expresión como una cadena. Por ejemplo si estuviera usando:

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

Se puede utilizar en lugar

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

Y cualquier salida que habría ido a la consola ahora será amortiguada y se almacena en T.

1

¿Qué hay de llamar a esas funciones con un punto y coma al final? Así que en lugar de llamar

my_function() 

simplemente escriba

my_function(); 

Editar: http://www.mathworks.de/help/techdoc/ref/evalc.htmlevalc('my_function()'); Edit2: Demasiado tarde

+0

Esto está mal. Agregar el punto y coma impide imprimir los valores devueltos. No cambia nada sobre el comportamiento de la función. – Ronenz

+0

Por lo tanto, es parcialmente erróneo ;-) – tim

2

Lo sentimos, pero no hay una forma sencilla de simplemente apagar la pantalla al comando ventana cuando no puede agregar puntos y comas Solo agrega los puntos y comas tú mismo.

Sí, podría sobrecargar disp y mostrar, evitando que funcionen como se supone que deben hacer, pero tampoco funcionarían en circunstancias normales. Estarías rompiendo una parte valiosa de matlab.

Y lo siento, pero agregar un punto y coma al final de una llamada de función no tiene impacto sobre si las líneas internas no tienen punto y coma. Esas líneas internamente sin terminar arrojarán sus resultados a la ventana de comandos.

-2

al llamar a la función, debe colocar un signo ";" al final; de lo contrario, se mostraría la salida, sin importar la función del usuario o las funciones predefinidas de matlab.

+0

La cuestión no era suprimir la salida de los valores de retorno de una llamada a función. La pregunta era suprimir la salida de todas las llamadas a funciones anidadas que pudieran pasar por alto el; firmar. Por lo tanto, el 'evalc' es la respuesta. –

Cuestiones relacionadas