Wstęp
Sprawy techniczne
GUIDE
Kontrolki
Przykłady
GUI bez GUIDE
Trochę o kompilacji
Linki
 

Przykład II

Prosty wykres



          W drugim przykładzie pokażemy jak stworzyć bardzo proste GUI rysujące funkcję sinus. Dodatkowo można będzie zmieniać amplitudę i pulsację.

Na oknie rozmieszczamy następujące elementy:
  • 1 kontrolka axes
  • 2 kontrolki slider

Nasze gui wygląda tak:


          Wykorzystując property inspector'a nadajemy odpowiednie nazwy poszczególnym elementom a także ustawiamy minimalne i maksymalne wartości jakie może przyjąć każdy z suwaków oraz wartość początkową (należy pamiętać że musi ona być z przedziału [Min Max]):


          Na drugim suwaku ustawiamy identyczne parametry, poza parametrem tag który ustawiamy na "pulsacja". Następnie z górnego menu, z zakładki View wybieramy opcje "M-File Editor"


          Zadaniem naszego GUI będzie wyświetlenie wykresu funkcji w postać amplituda*sin(pulsacja*x). Parametry amplituda i pulsacja będą pobierane z odpowiednich suwaków. Wektor wejściowy x bezie zadeklarowany z góry.

          W edytorze pliku *.m musimy odnaleźć 2 funkcje odpowiedzialne za obsługę zdarzenia będącego zmianą wartości suwaka. Są to funkcje Callback:


function pulsacja_Callback(hObject, eventdata, handles)

oraz:

function amplituda_Callback(hObject, eventdata, handles)


          W każdej z nich musimy dodać kod pobierający wartości amplitudy i pulsacji, a następnie rysujący wykres funkcji. Należy pamiętać że uchwyt do suwaka wywołującego zdarzenie jest zapisany w zmiennej hObject natomiast do drugiego suwaka musimy się odwołać z wykorzystaniem zmiennej handles. Oto jak powinny wyglądać obie funkcje:


function amplituda_Callback(hObject, eventdata, handles)
 amp = get(hObject,'Value')
 omega = get(handles.pulsacja,'Value')
 x = [-2*pi : 0.1 : 2*pi]
 handles.wykres = plot( amp * sin( omega * x ) )



function pulsacja_Callback(hObject, eventdata, handles)
 omega = get(hObject,'Value')
 amp = get(handles.amplituda,'Value')
 x = [-2*pi : 0.1 : 2*pi]
 handles.wykres = plot( amp * sin( omega * x ) )


Po uruchomieniu programu ruszając suwakami możemy rysować różne funkcję sinus: