Listbox GUI

di il
1 risposte

Listbox GUI

Ciao a tutti.
Ho una listbox con diversi canali, selezionando ognuno dei quali vorrei che mi fosse plottato il rispettivo grafico.
Qualche suggerimento?
Grazie in anticipo

1 Risposte

  • Re: Listbox GUI

    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:
    16082_7d744c84936a576fe3134736c0c4e223.jpg
    16082_7d744c84936a576fe3134736c0c4e223.jpg
Devi accedere o registrarti per scrivere nel forum
1 risposte