xlabel font ejemplo comando matlab

matlab - font - ¿Cómo verificar si se abre una figura y cómo cerrarla?



xlabel matlab (7)

Mi archivo m abre cifras dependiendo de los parámetros. A veces es una figura, a veces abre 2 figuras.

Si el usuario llama a la función, aparecen las figuras. Si vuelve a llamar a la función, con otros parámetros, estoy borrando las cifras con clf antes de las nuevas gráficas.

Si la segunda llamada está configurada para dibujar solo una figura, la segunda (abierta por la llamada anterior) permanece gris (debido al clf).

¿Hay alguna manera de verificar si está abierto y cerrarlo?


Para cerrar la figura, está la función "cerrar". Todavía estoy buscando uno para verificar si una figura está abierta.


isempty(findobj(''name'',''Your_Figure_Name''))

si la respuesta es 0, entonces tu figura está abierta


En MATLAB, puede OBTENER información sobre la ''raíz''. Las figuras son hijos de ''raíz'' (el mango de la raíz es 0) son los únicos hijos de la raíz.

http://www.mathworks.com/help/techdoc/creating_plots/f7-41259.html

Sabiendo esto, puedes probar este código que busca los hijos de root, y te da una lista.

>> close all >> get(0,''children'') ans = Empty matrix: 0-by-1 >> figure(1) >> get(0,''children'') ans = 1 >> figure(3) >> get(0,''children'') ans = 3 1

Creo que esta será la manera más directa de consultar qué figuras están abiertas.


No estoy un poco claro sobre lo que quiere decir con "abierto". Las figuras realmente no tienen estados "abiertos" o "cerrados". O existen o no existen. El comando FIGURE devolverá un manejador a la figura que hace:

hFig = figure(...your arguments here...);

También puede obtener un identificador de figura de la función FINDOBJ , que encontrará todos los objetos gráficos que coincidan con los valores de propiedad que le pasa:

hFig = findobj(...your property/value pairs here...);

Puedes deshacerte de una figura con cualquiera de estos comandos:

close(hFig); delete(hFig);

Puede verificar si una figura ha sido cerrada / eliminada usando la función ISHANDLE :

ishandle(hFig) %# Returns ''true'' if the figure exists, ''false'' if it doesn''t

Las figuras también pueden ser "visibles" o "invisibles". Tienen una propiedad ''Visible'' que puede obtener o establecer el valor de:

get(hFig,''Visible'') %# Returns ''on'' or ''off'' set(hFig,''Visible'',''off'') %# Makes a figure invisible, but it still %# exists (i.e. it''s not closed)

Si quieres comprobar si se minimiza una cifra, puede ser un poco más difícil. Creo que hay algunos archivos que pueden ayudarte con eso en MathWorks File Exchange: aquí hay uno para ver.


close all

Cerrará todas las figuras abiertas.

Puede usar findobj() para encontrar objetos que puedan existir al especificar los parámetros de búsqueda. Por ejemplo:

figure(''name'',''banana'')

Crea una figura con el nombre banana.

close(findobj(''type'',''figure'',''name'',''orange''))

No hace nada porque no hay figuras abiertas con el nombre naranja.

close(findobj(''type'',''figure'',''name'',''banana''))

Cierra la figura.

Puede especificar parámetros de búsqueda para satisfacer sus necesidades.


Si dentro de tu método, creas una figura sin un ''nombre'':

function [] = myMethod() myFigure = figure() end

no podrá acceder a MyFigure handle la próxima vez. Asi que:

function [] = myMethod() if ishandle(myFigure) % will fault, cant find variable myFigure close(myFigure) % will fault delete(myFigure) % will fault end myFigure = figure() end

gnvoice no fue 100% claro cuando dice:

Puede verificar si una figura ha sido cerrada / eliminada usando la función ISHANDLE:

Quiere decir que solo puede verificar DESPUÉS de haber recuperado el identificador:

function [] = createMyFigure() recoveredHandle = findobj(''type'',''figure'', ''Name'', ''myFigureName'') close(recoveredHandle) delete(recoveredHandle) ishandle(recoveredHandle) myFigure = figure(''Name'',''myFigureName'') % now create figure end


for f=1:numel(findobj(''type'',''figure'')) close(figure(f)); end clear(''f'')