|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Feb 2008
Messaggi: 68
|
[MATLAB] Evitare sovrascrittura figura con GUI
Salve,
ho questo problema... In matlab ho creato una GUI "provagui" dalla quale richiamo altre routine, alcune delle quali creano delle figure per plottare alcuni grafici, ad esempio la routine "plottadati". Ora, dato che un'interafaccia visuale in matlab viene aperta in un una figura (provagui.fig), ho il problema che quando eseguo "plottadati" quest'ultima mi va ad aprire la finestra in cui devono essere plottati i dati al posto della "provagui" con conseguente errore al ritorno dall'esecuzione della routine. Mi sapete dire qual è il modo per richiamare funzioni che aprono nuove finestre senza andare a sovrascrivere quella della mia gui?? grazie |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: May 2007
Città: Milano
Messaggi: 7103
|
Quote:
__________________
Apple Watch Ultra + iPhone 15 Pro Max + Rog Ally + Legion Go |
|
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Feb 2008
Messaggi: 68
|
C'ho provato, ma nn va perchè la routine mi chiude proprio la finestra relativa alla GUI e mi apre la sua per plottare i grafici.
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Feb 2006
Città: Perugia
Messaggi: 1340
|
basta creare le figure vuote prima, con figure(x)
__________________
MacBook Pro 14" M1Max MacBook Pro 14" M3Pro iPhone 16 pro 256GB http://giuliospinozzi.altervista.org/ |
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Feb 2008
Messaggi: 68
|
Ciao nispo,
ho fatto come hai detto aprendo una figura vuota nella OpeningFcn, ed effettivamente ora non viene più chiusa la finestra (un risultato è stato raggiunto)...però non vengono ancora visualizzati i dati plottati nella plottadati.m! Sto cercando di far uscire fuori l'handle di questa figura vuota per metterlo nell'istruzione plot, ma la gcf mi dà come handle quello di provagui.fig!!! Per caso hai qualche suggerimento anche su questo? magari serve un'istruzione diversa dalla gcf? grazie |
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Feb 2008
Messaggi: 68
|
Salve ragazzi,
voglio dirvi che ho risolto il problema e lo posto nel caso dovesse trovarsi qualcun'altro ad averne bisogno in futuro. In pratica ho dovuto passare alla routine esterna (la plottadati.m) l'handle del componente di tipo axes e darlo poi alla funzione plot. Cioè: 1) partendo dal file provagui.m: inserisco prima un componente uipanel e all'interno di questo un componente axes. lì dove richiamo la plottadati metto plottadati(handles.axes). Inoltre nella axes_CreateFcn inserisco anche il comando guidata(hObject,handles) in modo da aggiornarmi il plot qualora variasse dinamicamente. 2) nel file plottadati.m: innanzitutto diventa: function plottadati(h) e poi, dove ho il plot(x,y) sostituisco con plot(h,x,y). Particolarità: nel caso in cui voglia plottare dei subplot all'interno dell'axes, allora alla funzione plottadati non devo passare più l'handle dell'axes ma dell'uipanel di cui è figlio, e al plosto del plot(h,x,y) ci va a1=subplot(1,2,1,'Parent',hpanel); plot(a1,x1,y1) a2=subplot(1,2,2,'Parent',hpanel); plot(a2,x2,y2) ************************************************** N.B.: per fare ciò non ho avuto bisogno di aprire nessuna finestra vuota all'interno di provagui.m e anche all'interno della plottadati.m devo poi cancellare l'istruzione che mi crea una nuova finestra perchè altrimenti questa chiuderà la provagui.fig. Spero di essere stato abbastanza chiaro. Ciao |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:29.




















