Kullanıcı arayüzü, programın kullanıcısı tarafından daha etkili ve daha kolay kullanılmasını sağlar. Bir çok yazılımda “kullanıcı dostu arayüz”, “kullanımı kolay arayüz” ifadeleri programın artısı olarak belirtilir. MATLAB kullanıcılarının çoğunluğunu asıl iş alanı programcılık olmayan disiplinlerden insanlar oluşturur. Makine Mühendisliği, Elektrik Elektronik Mühendisliği, Havacılık ve Uzay Mühendisliği, Biyomedikal Mühendisliği gibi. MATLAB da yazılan fonksiyonların kolay kullanımı için arayüz tasarımı, bu disiplinlerden kişilere zaman zaman zor gelebilir. Bu yazının ilk kısmında bu kişilere MATLAB da kullanıcı arayüzü tasarımı ile ilgili temel bilgiler verilmeye çalışılacaktır. Devamında örnek tasarımlarla sık karşılaşılan sıkıntılara çözüm önerileri sunulacaktır. Bu yazı MATLAB 7.6.0 versiyonu kullanılarak hazırlanmıştır. Anlatımıma başlamadan önce bir noktanın altını çizmek istiyorum; bu yazı MATLAB GUI yardım dokümanı ya da MATLAB GUI nin bütün özelliklerinin anlatıldığı bir yazı değil, geliştirdiğiniz programlara kullanıcı arayüz yapmak istediğinizde kullanabileceğiniz temel konuları anlatacaktır.MATLAB da Kullanıcı Arayüzü Nasıl Çalışır?
Kullanıcı arayüzü kullanıcısına üzerinde pushbutton, textbox, menu, listbox gibi kontrol birimlerinin bulunduğu bir ortam sağlar. Örneğin bir pushbutton a basıldığında daha önceden yazılmış bir fonksiyonun çalışması sağlanabilir, ya da veri tabanında sakladığınız verilerin arayüzü açtığınızda listbox ta görüntülenmesini sağlayabilirsiniz.Anlatmaya başlarken, kullanıcı arayüzü tasarımını yapacağınız MATLAB GUI programını nasıl açacağınızdan bahsedeyim aşağıdaki şekildeki gibi GUI yi çalıştırabilirsiniz.

GUI-1
GUI-1

MATLAB Command Window da guide yazdığınızda da aynı şeyi yapmış olursunuz, size kalmış.
GUI çalıştığında aşağıdaki figürü göreceksiniz. Bu figürde iki tab vardır bunlardan biri MATLAB ın size sunduğu şablonlar ve boş GUI açabileceğiniz “Create New GUI” tabı, diğeri ise “Open existing GUI” tabıdır. Open Existing GUI tabını seçtiğinizde daha önceden hazırladığınız tüm GUI ler görüntülenir. (Current Directory ne olursa olsun hepsi!)

GUI-2
GUI-2

Boş bir GUI yaratarak herşeyi en baştan kendimiz yapmaya çalışalım, böylesi öğrenmek için daha iyi olacaktır diye düşünüyorum.Ekranda aşağıdaki gibi bir kullanıcı arayüzü tasarlama penceresi gelecektir. Bu pencerenin sağ tarafında kullanıcı arayüzünde olmasını isteyeceğiniz bileşenler bulunmaktadır.

GUI-3
GUI-3

Yeri gelmişken bir kaç konuyu anlatmak istiyorum;MATLAB GUI de temelde 3 prensip vardır. Bunlar, arayüzü oluşturacağınız figür, figür üzerine yerleştireceğiniz bileşenler (pushbutton, label, textbox vb.) ve en önemlisi “callbacks” dediğimiz kullanıcıdan gelen girdilere göre hangi işlevlerin yerine getirileceğinin belirlendiği fonksiyonlardır.Şimdi basit bir kullanıcı arayüzü tasarlayarak bir önceki yazımda anlattığım fonksiyonlarla yazılmış bir fonksiyonu çağıralım. Bu fonksiyon kullanıcıdan aldığı frekans bilgisine göre yeni bir figürde sinus grafiği çizsin, işlem bittiğinde de bizim istediğimiz bir uyarıyı versin “çizdim” desin mesela. Bunun için bize neler gerekli öncelikle buna karar verelim; kullanıcının frekans bilgisini girebilmesi için “textbox”, bu textbox ın hangi işlev için kullanılacağını yazacağımız label için “static text”, kullanıcının çizdirme işlemini gerçekleştirecek programı çağırması için pushbutton a basması gerekli olsun, bunun içinde bir “pushbutton” koymalıyız. Çizim yapıldıktan sonra verilecek uyarı içinde yine static text koyabiliriz. Static text kullanıcının değiştiremesini istemdiğimiz kullanıcı arayüzünde bulunmasını istediğimiz yazılar için kullanılır. Yukarıda anlattıklarım çok basit gelebilir ancak bu şekilde başlamak inanın işleri çok ama çok kolaylaştırmaktadır. Arayüze koyacağınız bileşen sayısı arttıkça karmaşıklık artacağından bunlara önceden karar vererek isimlendirmeye dikkat ederseniz hem programınızın güncellenebilirliği kolay olur hem de kullanıcı arayüzünü çok daha çabuk hazırlayabilirsiniz.Herhangi bir bileşeni figür üzerine koyabilmek için, fareyle o bileşenin simgesi üzerine tıkladıktan sonra figür üzerinde bileşeni yerleştireceğiniz yere tıklamanız yeterli olacaktır. Yerleştirdiğiniz bileşenlerin yerlerini istediğiniz zaman yine fareyi kullanarak değiştirebilirsiniz. Aşağıdaki figüre pushbutton, textbox ve static text i yerleştirdik.

GUI-4
GUI-4

Ancak görüldüğü gibi bileşenler üzerinde istediğimiz ya da amacımıza uygun şeyler yazılı değil. Bunları değiştirebilmek için; özelliğini değiştirmek istediğimiz bileşenin üzerine gelip farenin sağ tuşunu kullanıyoruz. Açılan menuden “Property Inspector” ı seçiyoruz.Pushbutton için bu işlemi yaptığımızda pushbutton etiketini “Cizdir” olarak değiştirdim. Yazı fontunu da istediğim gibi değiştirdim ve bu pushbuttona anlamlı bir isim verdim. (GUI siz yeni bir bileşen eklediğinizde buna otomatik olarak tekil bir isim verir, pushbutton1, pushbutton2, … gibi. İsimlendirme önemli çünkü siz yeni bir bileşen ekleyip sildiğinizde isimlendirmeye en son kalınan yerden devam eder ve kontrolü kaybedebilirsiniz, örneğin bir şekilde pushbutton4 ü silmek istediğinizi düşünelim, sonra tekrar bir pushbutton koymak istediniz, yeni eklenen pushbutton5 olarak isimlendirilecektir. Bu arada pushbutton 4 ya da pushbutton5 niçin konulmuş ismine bakılındığında anlaşılmıyor değil mi?)

GUI-5
GUI-5

Aynı şekilde diğer bileşenlerin özelliklerini değiştirdikten sonra sıra geldi cizdiriCagir pushbutton a basıldığında, yazdığımız fonksiyonun çağrılmasına. Bunun için pushbutton üzerinde sağ klikleyip aşağıdaki gibi “Callback” i tıklıyoruz.

GUI-6
GUI-6

% — Executes on button press in cizdiriCagir.function cizdiriCagir_Callback(hObject, eventdata, handles)% hObject handle to cizdiriCagir (see GCBO)% eventdata reserved – to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)
Medit programında otomatik olarak açılan kısım pushbutton a tıkladığınızda çalıştırılacak olan fonksiyondur. Buradan ornek2 fonksiyonunu çağırmalıyız ama önce frekans bilgisini textboxtan almamız gerekiyor. Bunun için aşağıdaki satırları kodunuza eklemelisiniz;function cizdiriCagir_Callback(hObject, eventdata, handles)% hObject handle to cizdiriCagir (see GCBO)% eventdata reserved – to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)
frekans = get(handles.frekansgir,’String’);frekans = eval(frekans);ornek2(frekans);
ornek2 fonksiyonu:function ornek2(frekans)t=0:0.01/frekans:10/frekans;%time indexy2=sin(t*pi*2*frekans);%output 2figure,plot(t,y2);
GUI tasarlarken kullanacağınız en önemli iki fonksiyon set ve get fonksiyonlarıdır. Adlarında da anlaşılacağı üzere objelerin özelliklerini almaya (get) ve objelerin özelliklerini kurmaya (set) yararlar. Bu iki fonksiyonla ilgili detaylı anlatımı bir sonraki yazıma bırakıyorum.
Matlab da en kullanışlı fonksiyonların başında bence eval fonksiyonu gelmekte (birde feval var tabi). Frekans textbox ı içerisinden bilgiyi aldıktan sonra eval fonksiyonu ile onun numerik bir değere çevirdik ve aynı isimdeki değişkene atadık (MATLAB ı kullanışlı yapan bir başka güzellik).
Bir başka medit sayfasında yazıp kaydettiğimiz ornek2 fonksiyonumuzu frekans parametresi ile çağırdık. Karşımıza istediğimiz frekansta bir sinus figürü çıktı. Arayüzde de çizdim mesajı çıktı. Nasıl çıktığını da bir sonraki yazımda anlatacağım bu yazı çok uzadı şimdilik bu kadarı yeter diye düşünüyorum…Bundan sonraki yazı GUI ve MATLAB ile Veritabanı uygulamaları üzerine olacak…

GUI-7
GUI-7

Çalıştıktan sonra:

GUI-8
GUI-8