2010-09-09 14 views
9

Escribo un script en matlab, que produce datos de un conjunto de datos.Copiar figura en Matlab - con propiedades e información

Se supone que las figuras son bastante similares con respecto al formateo, y cada una de ellas debe mostrar un conjunto de datos (es un gráfico incrustado en un dominio 3d). Cada una de estas figuras debe además mostrar un conjunto de partículas dentro de ese dominio 3d.

Así que me gustaría crear la primera figura, luego hacer varias copias de ella y poner los conjuntos de datos. Sin embargo, no sé cómo puedo crear clones de una figura en Matlab de una manera simple.

¿Sabes cómo puedo clonar las figuras?

La documentación en línea no ayudó. ¡Muchas gracias!

Respuesta

14

La función incorporada de MATLAB copyobj también debería funcionar. He aquí un ejemplo:

peaks; 
f2=copyobj(gcf,0); 
+1

+1: Lo he olvidado de COPYOBJ. – gnovice

3

Puede poner el código que utiliza para generar su figura base en una función, luego llame a esa función varias veces para crear copias múltiples de su figura base. Deberá devolver el graphics handles para esas figuras (y probablemente sus ejes) como salidas de la función para modificar cada una con un conjunto diferente de datos graficados. Por ejemplo, esta función hace que un 500-por-500 figura pixel posicionado 100 píxeles por la izquierda y la parte inferior de la pantalla con un fondo rojo y uno ejes con un conjunto dado de datos de entrada representan en ella:

function [hFigure,hAxes] = make_my_figure(dataX,dataY) 
    hFigure = figure('Color','r','Position',[100 100 500 500]); %# Make figure 
    hAxes = axes('Parent',hFigure);        %# Make axes 
    plot(hAxes,dataX,dataY); %# Plot the data 
    hold(hAxes,'on');   %# Subsequent plots won't replace existing data 
end 

con la función anterior guardado en un m-file en su MATLAB path, se pueden hacer tres copias de la figura llamando make_my_figure tres veces con el mismo conjunto de datos de entrada y el almacenamiento de las asas se devuelve en las variables independientes:

x = rand(1,100); 
y = rand(1,100); 
[hFigure1,hAxes1] = make_my_figure(x,y); 
[hFigure2,hAxes2] = make_my_figure(x,y); 
[hFigure3,hAxes3] = make_my_figure(x,y); 

Y puede agregar datos a los ejes de la segunda figura de la siguiente manera:

plot(hAxes2,rand(1,100),rand(1,100)); 
2

Una manera conveniente para generar una función que ajusta todos los parámetros de tal manera que la figura (como en la post @gnovice 's) buscará la correcta es la creación de la primera figura con todos los datos (incluyendo los puntos 3D) y todo el formato, y luego elija en el menú ARCHIVO el comando GENERATE M-FILE... (eche un vistazo al tutorial relacionado aquí).

Esto crea una función que puede guardar en la ruta de Matlab, y que luego puede llamar con una nueva entrada para crear una copia exacta de la primera figura con datos nuevos.

Cuestiones relacionadas