2010-09-21 7 views
8

Al guardar una figura, ¿qué función utiliza Matlab? Por ejemplo, cuando un usuario selecciona Archivo> Guardar como ... y luego selecciona .png u otro formato de imagen, ¿qué está sucediendo detrás de las escenas?En matlab, ¿cómo se guarda una figura como imagen de la misma manera que usando "Guardar como ..." en la ventana de la figura?

Pregunto porque intento automatizar el guardado, pero cuando uso saveas o print, la imagen resultante está realmente pixelada. Sin embargo, la imagen se ve muy bien cuando guardo la figura utilizando el método descrito anteriormente.

¿Qué método debo usar para guardar mi figura de la línea de comando? El método real que utiliza la ventana de figuras funcionaría, pero si ustedes tienen mejores soluciones, ¡lo pintaré!

Respuesta

9

La devolución de llamada para el elemento de menú "Guardar como ..." invoca la función FILEMENUFCN con el primer argumento de entrada siendo el manejador de la figura el menú está en y el segundo argumento de entrada es la cadena 'FileSaveAs'. Si usted tiene la manija figura almacenado en la variable hFigure, a continuación, el siguiente comando debe ser equivalente a hacer clic en "Guardar como ..." del menú de la ventana figura:

>> filemenufcn(hFigure,'FileSaveAs'); 


Unas pocas notas. ..

  • La función FILEMENUFCN sólo es parcialmente documentado. Puede hacer help filemenufcn en la ventana de comandos, pero no hay ninguna entrada en la documentación en línea. En MATLAB 2009a, la función se puede encontrar en la siguiente carpeta:

    C:\Program Files\MATLAB\R2009a\toolbox\matlab\uitools\filemenufcn.m 
    

    Mirando a través del código de función, parece que se llama, en última instancia, ya sea la función SAVEAS para .fig archivos o la función HGEXPORT (con argumentos de entrada adicionales) para otros tipos de archivos.

  • Pude buscar la devolución de llamada para el elemento de menú "Guardar como ..." buscando en los elementos secundarios de la ventana de figuras y sus menús. Puede hacerlo usted mismo configurando root property 'ShowHiddenHandles' en 'on' y luego recorriendo el 'Children' properties de la ventana de figura y sus menús usando el comando GET. Una alternativa es usar el comando FINDALL, suponiendo que conoce algunas propiedades de los objetos que está buscando. Por ejemplo, esto va a encontrar el identificador del menú "Archivo" de la ventana cifra actual:

    >> hFileMenu = findall(gcf,'Label','&File'); 
    

    Y esto va a encontrar el identificador de la "Guardar como ..."Elemento de menú y mostrar su devolución de llamada:

    >> hSaveAs = findall(hFileMenu,'Label','Save &As...'); 
    >> get(hSaveAs,'Callback') 
    ans = 
    filemenufcn(gcbf,'FileSaveAs') 
    
+1

Gracias, que me puso en el camino correcto Terminé usando esto:! http://www.mathworks.com/matlabcentral/newsreader/view_thread/239960 Opciones de configuración.Formato = 'png' Lo guardé sin mucha pixelación – tylerthemiler

+0

@tylerthemiler: Sí, parece que la función [HGEXPORT] (http://www.mathworks.com/help/techdoc /ref/hgexport.html) se llama finalmente (con algunos argumentos de entrada adicionales como se muestra en el hilo del grupo de noticias) al guardar imágenes PNG. – gnovice

+1

¡Gracias! QOTSA oscila por cierto. – tylerthemiler

2

No sé ustedes, pero para mí la imagen guardada se ve bien.

código de ejemplo:

... create some figure ... 
saveas(gcf, 'some_figure.png'); 

Para establecer un uso resolución especificada por el usuario:

print(gcf,'some_figure','-dpng','-rSOMENUMBER') 

donde SOMENUMBERis un parámetro utilizado para la resolución. La resolución final es (SOMENUMBER * 8) x (SOMENUMBER * 6)

Cuestiones relacionadas