Ci sono diversi modi per "lavorare" in modo dinamico e / o automatico con le Figure; un approccio semplice consiste nel definire gli handle delle Finestre nel momento in cui vengono create ed usare la funzione "
findobj" per cercare l'oggetto (nel caso specifico le finestre) e quindi accedervi in modo "automatico".
Per identificare le finestre si può assegnare loro, ad esempio un nome.
Nello script che segue vengono illustrati alcuni esempi delle possibilità di "manipolazione" ed accesso alle finestre.
%
% Generazione punti di esempio
%
x=0:.01:2*pi;
y1=sin(x);
y11=2*cos(3*x);
y111=2*cos(3*x).*sin(x);
y2=cos(x);
y22=2*sin(3*x);
%
% Apertura di due Figure con assegnazione dei "nomi":
% Figura #1
% Figura #2
% "f1" e "f2" sono gli handles delle due figure
% i vettori "f1_plot_h" e "f2_plot_h" conterranno gli handle delle curve in
% esse plottate
% i contatori "f1_plot_cnt" e "f2_plot_cnt" memorizzeranno il numero di
% curve plottate in ogni finestra
% i cell arrays "nome_curve_f1" e "nome_curve_f2" conterranno i nomi delle
% curve plottate, da usare per la "legenda"
%
f1=figure('name','Figura #1','NumberTitle','off');
f1_plot_h=[];
f1_plot_cnt=0;
nome_curve_f1={};
%
f2=figure('name','Figura #2','NumberTitle','off');
f2_plot_h=[];
f2_plot_cnt=0;
nome_curve_f2={};
%
% Selezione della figura "1" nella quale plottare la curva "y1"
%
figure(f1)
%
% Incremento del contatore delle curve plottate nella figura 1
% Plot della curva, memorizzazione del relativo handle, generazione
% "automatica del nome della curva tramite la funzione "eval" (ad ogni
% curva viene assegnato come nome "curva_-#_-x' con "x" numero progressivo
% della curva
%
f1_plot_cnt=f1_plot_cnt+1;
f1_plot_h(f1_plot_cnt)=plot(x,y1,'r','linewidth',2);
eval(['nome_curve_f1{f1_plot_cnt}=''curva_-#_-' num2str(f1_plot_cnt) ''';']);
grid on
%
% Selezione della figura "2" nella quale plottare la curva "y2"
%
figure(f2)
%
% Incremento del contatore delle curve plottate nella figura 2
% Plot della curva e memorizzazione del relativo handle
%
f2_plot_cnt=f2_plot_cnt+1;
f2_plot_h(f2_plot_cnt)=plot(x,y2,'r','linewidth',2);
eval(['nome_curve_f2{f2_plot_cnt}=''curva_-#_-' num2str(f2_plot_cnt) ''';']);
grid on
%
% Selezionare di nuova la figura "1" per aggiungere la curva "y11"
%
figure(f1)
hold on
%
% Incremento del contatore delle curve plottate nella figura 1
% Plot della curva e memorizzazione del relativo handle
%
f1_plot_cnt=f1_plot_cnt+1;
f1_plot_h(f1_plot_cnt)=plot(x,y11,'b','linewidth',2);
eval(['nome_curve_f1{f1_plot_cnt}=''curva_-#_-' num2str(f1_plot_cnt) ''';']);
%
% Selezionare di nuova la figura "2" per aggiungere la curva "y22"
%
figure(f2)
hold on
%
% Incremento del contatore delle curve plottate nella figura 2
% Plot della curva e memorizzazione del relativo handle
%
f2_plot_cnt=f2_plot_cnt+1;
f2_plot_h(f2_plot_cnt)=plot(x,y22,'b','linewidth',2);
eval(['nome_curve_f2{f2_plot_cnt}=''curva_-#_-' num2str(f2_plot_cnt) ''';']);
%
% La dunzione "findobj" consente di "trovare" gli oggetti, nel caso
% specifico, vengono cercati quelli di "type" "figure".
% Nella variabile "list_of_figure" vengono "ritornati" gli handles delle
% figure aperte
% Gli handle vengono "ritornati" nell'ordine inverso rispetto alla
% creazione delle figure (il primo handle ritornato è quello dell'ultima
% figura aperta
%
list_of_figure=findobj('type','figure');
%
% La funzione "get" "ritorna" le proprietà dell'oggetto identificato
% dall'handle in input
% Nel caso specifico, il "nome" delle figure aperte all'inizio dello script
% (la variabile "figure_names" è un cell array
%
figure_names=get(list_of_figure,'name');
%
% Tramite la funzione "findobj" si può anche ottenere direttamente l'handle
% di una figura.
% Nel caso specifico, cerchiamo la figura con "name" "Figura #1" l'handle
% del quale viene assegnato alla varaibile "figure_handle"
%
figure_handle=findobj(list_of_figure,'name','Figura #1');
%
% Per selezionare una tra le figure aperte, si invoca la funzione "figure"
% fornenddo in input l'handle della figure stessa che diventa la figura
% "attiva"
%
figure(figure_handle);
%
% Il grafico della curva "y111" viene aggiinto (all'inizio dello script è
% stata attivata la modalità "hold on" per i grafici della "Figura #1"
%
%
% Incremento del contatore delle curve plottate nella figura 1
% Plot della curva e memorizzazione del relativo handle
%
f1_plot_cnt=f1_plot_cnt+1;
f1_plot_h(f1_plot_cnt)=plot(x,y111,'k','linewidth',2);
eval(['nome_curve_f1{f1_plot_cnt}=''curva_-#_-' num2str(f1_plot_cnt) ''';']);
%
% Esempio di utilizzo dell'handle di una curva per modificarne il colore:
% il colore della seconda curva plottata nello sviluppo dello script viene
% cambiato in 'c' ==> azzurro
%
set(f1_plot_h(2),'color','c')
%
% Inserimento della legenda nelle due figure; alle figure si accede tramite
% il loro handle
%
figure(findobj(list_of_figure,'name','Figura #1'));
leg_f1=legend(nome_curve_f1);
figure(findobj(list_of_figure,'name','Figura #2'));
leg_f2=legend(nome_curve_f2);
%
% Modifica del nome della prima curva della seconda figura
nome_curve_f2{1}='new_-name';
set(leg_f2,'string',nome_curve_f2)
Hope this helps.