Non è chiaro quello che vuoi realizzare.
come faccio a inserire il mio ciclo for di creazione di grafici a barre nell'interafaccia GUI e a collegarlo a popupmenu?
Sembrerebbe che tu voglia utilizzare il "menu a tendina" per selezionare l'elemento da plottare, ma che, al tempo stesso tu voglia utilizzare il ciclo "for", sempre per il plottaggio anche se, a quanto sembra il ciclo "for" crea tutti i grafici.
Le due cose sembrano in contrasto.
Tra l'altro, sembra che il ciclo for "sovrascriva" i vari diagrammi nel ciclo for.
Se vuoi sostituire il ciclo "for" con la selezione dell'elemento da plottare dal pop-up menu:
[*] immagino avrai una parte del codice nel quale calcoli "num_peak": una volta calcolato il valore di "num_peak" puoi settare le stringhe corrispondenti nel pop-up menu creando le stesse, ad esempio, aggiungendo un valore numerico incrementale ad una stringa base.
In questo modo avresti, nel pop-up delle stringhe del tipo: "elemento_1", "elemento_2", ...
for i=1:num_peak
item_list{i}=['elemento_' num2str(i)]
end
handles.popupmenu1.String=item_list;
[*] a questo punto, nella callback del popo-up menu dovresti identificare l'item selezionato:
sel_item=handles.popupmenu1.Value
quindi dovresti inserire il codice che ora hai nel ciclo for nella callback, sostituendo la variabile "i" con "sel_item" (il valore selezionato dall'utente.
Questo dovrebbe plottare l'elemento desiderato.
Nel caso tu voglia selezionare più di un elemento nel popo-up menu, devi sostituire il "pop-up menu" con un "listbox" e settare la property "Max" ad un valore corrispondente al numero massimo di elementi che vuoi poter selezionare.
Dal momento che quando selezioni un elemento nella listbox, viene invocata la sua callback, dovresti aggiungere un altro "uicontrol", ad esempio un pushbutton e spostare il codice per il plottaggio dalla callback del listbox a quello del pushbutton.
In questo caso, il codice dovrebbe essere inserito all'interno di un ciclo for con limite il numero di elementi selezionati.
Dovresti anche gestire l'axes nel quale effettuare il plottaggio in modo che il grafico successivo non cancelli il precedente.