2010-09-09 23 views
9

Scrivo uno script in MATLAB, che produce un set di dati.Figura clone in Matlab - con proprietà e dati

Le cifre dovrebbero essere piuttosto simili rispetto alla formattazione e ciascuna di esse deve visualizzare un set di dati (è un grafico incorporato in un dominio 3d). Ciascuna di queste figure deve inoltre mostrare un insieme di particelle all'interno di quel dominio 3d.

Quindi mi piacerebbe creare la prima figura, quindi farne diverse copie e inserire i set di dati. Tuttavia, non so, come posso creare cloni di una figura in Matlab in un modo semplice.

Sai, come posso clonare le cifre?

La documentazione in linea non ha aiutato. Grazie mille!

risposta

14

La funzione incorporata MATLAB copyobj dovrebbe funzionare anche. Ecco un esempio:

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

+1: ha dimenticato COPYOBJ. – gnovice

3

È possibile inserire il codice che si utilizza per generare la cifra base in una funzione, quindi richiamarla più volte per creare più copie della cifra di base. Si vorrà restituire lo graphics handles per quelle figure (e probabilmente i loro assi) come uscite dalla funzione al fine di modificarle ciascuna con un diverso insieme di dati tracciati. Ad esempio, questa funzione rende 500-by-500 figura pixel posizionato 100 pixel sulla sinistra e inferiore dello schermo con uno sfondo rosso e uno assi con un dato insieme di dati di input tracciati su di esso:

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 funzione di cui sopra salvato a un m-file sul MATLAB path, si possono fare tre copie della figura chiamando make_my_figure tre volte con lo stesso insieme di dati di input e memorizzare le maniglie torna in variabili distinte:

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); 

Ed è possibile aggiungere dati agli assi della seconda cifra in questo modo:

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

Un modo conveniente per generare una funzione che imposta tutti i parametri in modo tale che la cifra (come in post @gnovice s') sarà proprio diritto è quello di creare la prima figura con tutti i dati (compresi i punti 3D) e tutta la formattazione, quindi scegli dal menu FILE il comando GENERATE M-FILE... (dai un'occhiata al tutorial collegato qui).

Questo crea una funzione che è possibile salvare sul percorso Matlab e che è possibile chiamare in seguito con un nuovo input per creare un clone esatto della prima cifra con nuovi dati.

Problemi correlati