[MATLAB] Problema chiusura finestra GUI

di il
1 risposte

[MATLAB] Problema chiusura finestra GUI

Salve,

ho creato una mia interfaccia GUI (provagui.fig - provagui.m) in matlab dalla quale richiamo altre routine esterne all'mfile della gui.
Il problema che ho è il seguente:

una delle routine richiamate, la plottadati.m, al suo interno fa il plot di alcuni dati; ora succede che la nuova finestra creata (figure 1) chiude la finestra provagui.fig della mia gui, con conseguente errore quando ritorno dall'esecuzione della routine.

Ho provato a risolvere il problema in diversi modi ma senza successo:

1) ho inserito nella mia GUI anche un componente "axes" in modo da poter plottare i dati nella stessa finestra della gui...
2) all'interno della "provagui_OpeningFcn" ho creato una figura vuota ( hfig=figure(1)) ed ho commentato la stessa istruzione nella plottadati.m, pensando che quando vengono plottati i dati sarebbero stati visualizzati in questa finestra senza chiudere la mia provagui.fig...beh, quest'ultimo risultato l'ho ottenuto, la finestra non viene chiusa, ma i dati comunque non vengono ancora plottati.

Mi potreste aiutare?
grazie

1 Risposte

  • Re: [MATLAB] Problema chiusura finestra GUI

    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
Devi accedere o registrarti per scrivere nel forum
1 risposte