Estoy creando algunas cifras en MATLAB y guardar automáticamente los archivos. El problema de que, por definición, las imágenes son pequeñas. Una buena manera de resolver mi problema con la mano es crear una imagen (figura), maximizar, y guardar en un archivo.

Me falta este paso de forma automática maximizar una figura.

Alguna sugerencia?
Hasta ahora sólo he encontrado esto:

http://answers.yahoo.com/question/index?qid=20071127135551AAR5JYh

http://www.mathworks.com/matlabcentral/newsreader/view_thread/238699

pero no son la solución de mi problema.

  • Esto no debería ser marcado como duplicados. Las referencias que la pregunta se refiere a la configuración de una figura a un determinado tamaño, en píxeles. Esta pregunta (y la respuesta) establecer una cifra para el tamaño máximo, sin hacer referencia al número de píxeles que participan.

9 Comentarios

  1. 61

    Esto funcionó para mí:

    figure('units','normalized','outerposition',[0 0 1 1])

    o de corriente de la figura:

    set(gcf,'units','normalized','outerposition',[0 0 1 1])

    También he utilizado MAXIMIZAR función en FileExchange que utiliza java. Esto es cierto maximización.

    • Estoy usando MATLAB 2014a, y estas soluciones no funcionan para mí. La figura está maximizada bien, pero en el aspecto de la figura se guarda en el archivo todavía está en el aspecto por defecto (y las subtramas se puede mirar ridículamente pequeño en la configuración por defecto). Puedo encontrar la opción de configuración ‘PaperPosition’, señaló en otro de MATLAB hilo, a ser de gran ayuda para mí. La figura de la interfaz de usuario no va a cambiar su aspecto, pero la imagen de salida es de alta calidad!
    • Usted también puede tratar de export_fig presentación en el Intercambio de Archivos. Guarda la imagen tal como la vemos en la pantalla.
  2. 22

    Para un real Maximizar (exactamente igual que hacer clic en el botón de maximizar en la interfaz de usuario de mac OS X y Windows)
    Puede intentar lo siguiente que llama a una ocultos Java manejar

    figure;
    pause(0.00001);
    frame_h = get(handle(gcf),'JavaFrame');
    set(frame_h,'Maximized',1);

    La pause(n) es esencial, ya que el anterior llega de Matlab scape y está situado en un thread de Java. Conjunto de n para cualquier valor de y compruebe los resultados. El más rápido el equipo es en el momento de la ejecución de la menor n puede ser.

    Completo «documentación» se puede encontrar aquí

  3. 8

    Como de R2018a, figure así como uifigure objetos contienen una propiedad llamada WindowState. Esto se establece a 'normal' por defecto, pero se ajuste a 'maximized' da el resultado deseado.

    En conclusión:

    hFig.WindowState = 'maximized'; % Requires R2018a

    Por el camino, para solucionar tu problema original – si usted desea exportar el contenido de las figuras a las imágenes sin tener que preocuparse de los resultados que se están demasiado pequeño – yo recomendaría el export_fig utilidad.

    • también, usted puede ponerlo predeterminado antes de trazar nada, set(groot, 'defaultFigureWindowState', 'maximized');
    • O se establece para todos los abiertos figuras set( get(groot, 'Children'), 'WindowState', 'maximized');
    • Ver Figure Properties documentación mathworks.com/help/matlab/ref/matlab.ui.figure-properties.html en el Window Appearance sección para obtener más información acerca de WindowState
  4. 6

    Para maximizar la figura, se puede imitar la secuencia de teclas que en realidad uso:

    1. ALTESPACIO (como se indica aquí) para acceder al menú de la ventana; y, a continuación,
    2. X para maximizar (esto puede variar en su sistema).

    Para enviar las claves mediante programación, puede utilizar una aplicación basada en procedimiento similar a esta respuesta, de la siguiente manera:

    h = figure;                                          %//create figure and get handle
    plot(1:10);                                          %//do stuff with your figure
    figure(h)                                            %//make it the current figure
    robot = java.awt.Robot; 
    robot.keyPress(java.awt.event.KeyEvent.VK_ALT);      %//send ALT
    robot.keyPress(java.awt.event.KeyEvent.VK_SPACE);    %//send SPACE
    robot.keyRelease(java.awt.event.KeyEvent.VK_SPACE);  %//release SPACE
    robot.keyRelease(java.awt.event.KeyEvent.VK_ALT);    %//release ALT
    robot.keyPress(java.awt.event.KeyEvent.VK_X);        %//send X
    robot.keyRelease(java.awt.event.KeyEvent.VK_X);      %//release X

    Voilà! Ventana maximizada!

    • Gracias! Me ha ayudado mucho!
  5. 4

    mi humilde opinión, la maximización de la figura de la ventana no es la mejor manera de guardar una figura como una imagen en alta resolución.

    Hay la figura de propiedades para imprimir y guardar. El uso de estas propiedades se pueden guardar los archivos en la resolución que desee. Para guardar los archivos que usted tiene que utilizar el función de impresión, porque se puede establecer una dpi valor. Así, en primer lugar, establezca las siguientes propiedades de la figura:

    set(FigureHandle, ...
        'PaperPositionMode', 'manual', ...
        'PaperUnits', 'inches', ...
        'PaperPosition', [0 0 Width Height])

    y en segundo lugar de guardar el archivo (por ejemplo) como png con 100 dpi ('-r100')

    print(FigureHandle, Filename, '-dpng', '-r100');

    Para obtener un archivo con 2048x1536px conjunto Width = 2048/100 y la Altura 1536/100, /100 porque guardar con 100 dpi. Si cambia el valor de dpi usted también tendrá que cambiar el divisor por el mismo valor.

    Como se puede ver, no hay necesidad de ninguna función extra de intercambio de archivos o basadas en java procedimiento. Además usted puede elegir cualquier resolución deseada.

  6. 2

    que usted puede probar esto:

    screen_size = get(0, 'ScreenSize');
    f1 = figure(1);
    set(f1, 'Position', [0 0 screen_size(3) screen_size(4) ] );
    • esta solución no tiene en cuenta los elementos de primer plano. Por ejemplo, en mi máquina windows, el tamaño de la pantalla es más grande que el tamaño máximo de la ventana debido a la barra de tareas.
  7. 1
    %% maximizeFigure
    %
    % Maximizes the current figure or creates a new figure. maximizeFigure() simply maximizes the 
    % current or a specific figure
    % |h = maximizeFigure();| can be directly used instead of |h = figure();|
    %
    % *Examples*
    %
    % * |maximizeFigure(); % maximizes the current figure or creates a new figure|
    % * |maximizeFigure('all'); % maximizes all opened figures|
    % * |maximizeFigure(hf); % maximizes the figure with the handle hf|
    % * |maximizeFigure('new', 'Name', 'My newly created figure', 'Color', [.3 .3 .3]);|
    % * |hf = maximizeFigure(...); % returns the (i.e. new) figure handle as an output|
    %
    % *Acknowledgements*
    % 
    % * Big thanks goes out to Yair Altman from http://www.undocumentedmatlab.com/
    %
    % *See Also*
    % 
    % * |figure()|
    % * |gcf()|
    %
    % *Authors*
    %
    % * Daniel Kellner, medPhoton GmbH, Salzburg, Austria, 2015-2017
    %%
    function varargout = maximizeFigure(varargin)
    warning('off', 'MATLAB:HandleGraphics:ObsoletedProperty:JavaFrame')
    % Check input variables
    if isempty(varargin)
    hf = gcf; % use current figure
    elseif strcmp(varargin{1}, 'new')
    hf = figure(varargin{2:end});
    elseif strcmp(varargin{1}, 'all')
    hf = findobj('Type', 'figure');
    elseif ~isa(varargin{1}, 'char') && ishandle(varargin{1}) &&...
            strcmp(get(varargin{1}, 'Type'), 'figure')
    hf = varargin{1};
    else
    error('maximizeFigure:InvalidHandle', 'Failed to find a valid figure handle!')
    end
    for cHandle = 1:length(hf)   
    % Skip invalid handles and plotbrowser handles
    if ~ishandle(cHandle) || strcmp(get(hf, 'WindowStyle'), 'docked') 
    continue
    end
    % Carry the current resize property and set (temporarily) to 'on'
    oldResizeStatus = get(hf(cHandle), 'Resize');
    set(hf(cHandle), 'Resize', 'on');
    % Usage of the undocumented 'JavaFrame' property as described at:
    % http://undocumentedmatlab.com/blog/minimize-maximize-figure-window/
    jFrame = get(handle(hf(cHandle)), 'JavaFrame');
    % Due to an Event Dispatch thread, the pause is neccessary as described at:
    % http://undocumentedmatlab.com/blog/matlab-and-the-event-dispatch-thread-edt/
    pause(0.05) 
    % Don't maximize if the window is docked (e.g. for plottools)
    if strcmp(get(cHandle, 'WindowStyle'), 'docked')
    continue
    end
    % Don't maximize if the figure is already maximized
    if jFrame.isMaximized
    continue
    end
    % Unfortunately, if it is invisible, it can't be maximized with the java framework, because a
    % null pointer exception is raised (java.lang.NullPointerException). Instead, we maximize it the
    % straight way so that we do not end up in small sized plot exports.
    if strcmp(get(hf, 'Visible'), 'off')
    set(hf, 'Units', 'normalized', 'OuterPosition', [0 0 1 1])
    continue
    end
    jFrame.setMaximized(true);
    % If 'Resize' will be reactivated, MATLAB moves the figure slightly over the screen borders. 
    if strcmp(oldResizeStatus, 'off')
    pause(0.05)
    set(hf, 'Resize', oldResizeStatus)
    end
    end
    if nargout
    varargout{1} = hf;
    end
    • Como condición de transversalidad notedel método se aplica aquí se basa en algo que se quitará en una versión futura de Matlab. Este código suprime de Matlab advertencia acerca de esto con el warning('off',... línea.
  8. 0

    Esta es la forma más corta

    figure('Position',get(0,'ScreenSize'))
    • Importa dar más explicación ?
    • ¿de qué manera es esta respuesta diferente que ifryed del

Dejar respuesta

Please enter your comment!
Please enter your name here