Una possibile soluzione consiste nello creare una "finestra" con:
[*] la
LIST BOX
[*] una
CHECK BOX (per controllare l'attivazione disattivazione dell'opzione "
hold"
[*] gli assi cartesiani all'interno dei quali verranno plottati gli elementi selezionati nella
LIST BOX
Per "attivare" il plottaggio degli elementi selezionati nella
LIST BOX è necessario specificare, tra le proprietà della
LIST BOX la
callback che effettuerà il plot.
La
callback può essere definita "
implicitamente" all'interno della funzione che crea la
LIST BOX o in uno script / funzione; la selezione di un elemento nella
LIST BOX attiverà la
callback che effettuerà il "plot".
Nell'esempio in calce, la
callback è stata codificata in uno script dedicato.
Script per la generazione della LIST BOX
%
% Generazione dati di esempio
%
x=0:.1:2*pi;
y=[];
y(1,:)=sin(x);
y(2,:)=cos(x);
y(3,:)=sin(2*x);
y(4,:)=cos(2*x);
%
% Creazione "figura" con assi cartesiani
%
fig_h=figure
a_h=axes('position',[.43 .16 .47 .76])
%
% Creazione LIST BOX: la callback è definta in uno script a parte
% (plotta_selezione_da_list_box.m)
%
lb_h=uicontrol('style','listbox', ...
'unit','normalized', ...
'position',[.07 .7 .3 .3], ...
'callback','plotta_selezione_da_list_box');
%
% Creazione CHECK BOX
%
cb_h=uicontrol('style','checkbox', ...
'unit','normalized', ...
'position',[.07 .3 .1 .1], ...
'string','Hold on', ...
'value', 0)
%
% Creazione della lista contenente gli elementi che possono essere plottati
%
lista{1}='sin(x)';
lista{2}='cos(x)';
lista{3}='sin(2*x)';
lista{4}='cos(2*x)';
%
% Assegnazione della lista alla LIST BOX
%
set(lb_h,'string',lista);
Script della callbackLIST BOX
%
% Identificazione dell'elemento della lista selezionato
%
r=get(lb_h,'value');
%
% Identificazione dello stato della CHECK BOX (settata / non settata). La
% CHECK BOX viene usata per abilitare / disabilitare la condizione "hold
% on" nel grafico
%
hold_h=get(cb_h,'value');
if(hold_h)
hold on
else
hold off
end
%
% Plottaggio dell'elemento selezionato
%
p_h=plot(x,y(r,:),'r');
grid on
Hope this helps.
Allegati: