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.




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?)


% --- 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 index
y2=sin(t*pi*2*frekans);%output 2
figure,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...

Çalıştıktan sonra:

önceki yazı Php ve SQLite ile Online Ziyaretçi |
sonraki yazı Mysql Cluster |
teşekkürler,çok güzel bir yazı olmuş.Ancak devamı gelecek mi? Diğer komutlar içinde (isempty,persistent,str1 vb)birkaç açıklayıcı örnek verir misin? birkaç edittext in oldugu bu değerlerin birkaç formulle işlevlendirildiği bir örnek güzel olurdu.
Ve bunları matlab'den bağımsız olarak çalıştırabilir miyiz? .exe yapıp istediğimiz bilg.'da kullanabilirmiyiz? .m kodları için var
>>mcc -m mdosyasınınismi
şeklinde compiler seçilerek yapılıyordu ancak .fig dosyalarında da durum bu şekildemi?
bu arada verdiğin kod bende çalışmadı.Sadece pusbutton için verdin galiba.edittext'i nasıl programlıyoruz. tam kodu paylaşırmısın?
merhaba begendigine sevindim
devami gelecek yazida da belirttigim gibi:)))
zaman bulabilirsem tabi
istedigin gibi bir ornekte koyarim bir dahaki yaziya
exe yapmaya gelince evet exe yapabiliyorsun figure bile olsa...exe dosyayi calistirdiginda matlab figuru aciliyor yine degisen hic birsey yok ancak bir takim ayarlamalar yapmak gerek kullandigin surume bagli olarak
soyledigin komutlarla ilgili ornekler vermeye calisirim
tam kodu nasil gonderebilirim?
nasil gonderebilirim derken nasil gondermemi istersin manasinda soyledim kod cok uzun ve gereksiz cok sey var buraya atmayayim demek istedim
şu örneğe bakarak visual basic'ten farkı nedir matlabın?
oncelikle boyle bir soru sordugun icin gercekten cok tesekkurler boylece anlatmak istedigim bazi seyleri yazma firsati buldum (durduk yerde yazsamda olurdu ama olsun boylesi daha iyi:))))
matlab visual basic,c,c++ gibi dillerden farkli bir yapisi var aslinda cok genis bir kullanici kitlesi var ama kimse (ben de dahil:))) bu yazilimin tamamina hakimim diye iddia edemez hatta mathworks te calisan arkadaslar bile...
muhendislik istatistik ekonomi vb gibi dallarda yogun hesaplama gerektiren islevler icin kullaniliyor bu gibi amaclara yonelik program gelistirmekten bahsediyorsak diger yazilimlardan cok daha kolay oldugunu dusunuyorum.
burada anlatilanlarin arayuz calismasinin hedef kitlesi ise zaten matlab kullanicisi olan ve asil amaci super gorsel ve ergonomik bir arayuz olusturmaktan cok yazdigi kodlarin daha rahat bir sekilde kullanilmasini saglamak olan kisilerdir.
Esasen vbasic ve matlab i kiyaslamanin dogru bir yaklasim oldugunu dusunmuyorum. Soyleki; ornegin bir matrisin eigen degerlerini bulabilmek icin c de javada vbasic te (bunlarin hepsinde bu soyledigim seyi yazdim) uzunca kod yazmaniz gerek (trivial bisi degil) ancak bunu matlab da yapmak oldukca basit eig yazmaniz yeterli..
benim bu yazilari yazmaktaki amacta insanlarin matlabi kullanarak zaman ve enerjilerini bos yere harcamamalarina yardimci olabilmek
ben verdiğiniz anlatımda matlabın GUI oluşturma olaylarına bakınca visual basic GUI panellerini hatırladım. Bana kalırsa birebir kopyası bile denebilir. Textboxlar vs'ler ekleme yöntemleri özelliklerini tıklama ile değiştirmek vs vs.. Bu visual basic'in ana konseptidir zaten. Bu açıdan vb'in kopyası diyebilirim matlaba..
Ayrıca uzun kod yazmak yoktur diyorsunuz matlab'da ancak bu bir çok programlama platformunda geçerli.. Hazır gelen framework'ler kütüphaneler çatılar DLL'ler OCX'ler ve Exeler ve Win API'ları zaten uzunca kod yazmanızı ve performans kayıplarımızı engelliyorlar.
Buna rağmen neden matlab gibi yeni bir sentax daha öğreneyim ki?
hakli olabilirsin ama soylediklerimi tam izah edemedim sanirim
bu soylediklerin aslinda diger dillerde de benzer sadece vb de degil
ama matlab a vb nin kopyasi demek biraz abartili olmus:)) neyse tam olarak ne yaptigini ogrenebilirmiyim ogrenci? meslek? belki o zaman daha rahat anlasabiliriz ornegin yukaridaki gibi bir sinus cizdirmek ihtiyaci hissettin mi ya da ne biliyim fft aldin mi ya da bir onceki yazida arkadasin soyledigi gibi regresyon analizi hipotez testleri ya da bir ucagin aerodinamik modelini olusturmaya ihtiyacin oldumu yoksa gorselligin on planda oldugu ya da veritabani uygulamalari vs islerle mi ugrasiyorsun boyleyse dedigin dogru ama surekli fft alman gereken sinyal isleme uygulamalari yazacaksan image processing video processing yapacaksan baska bir dille neden yapmaya kasayimki yapilamaz demiyorum sadece bence cok daha rahat diyorum
ben matlabı komple vb kopyası olarak betimlemedim. Yanlış alamışsınız. Makalede anlattığınız GUI oluşturma kısımları sürükle bırak şeklinde yapılmış ki bu işi ilk yapan microsoftun visual basic platformudur. Görsel olarak winForm'u oluşturur, görsel olarak programınıza menüler ekler ve yine çek bırak metodlarıyla programa onlarca öğeyi eklersiniz. Bunları normal bir c++ programda tonlarca kod yazarak yaparsınız. Bu açıdan matlab vb kopyası olmuş. Yani vb'nin gittiği yol izlenmiş diyelim daha kibar şekilde..
Çizim ve animasyon işlemleri için openGL ve directX kütüphaneleri mevcuttur. İşim için gerektiklerinde bu çatılara erişerek gereken işlemleri gayet pratik ve profesyonel biçimde elde edebilirim. Diğer işler içinde piyasada binlerce framework var. İçlerinden bir kaçı mutlaka işimi görür. Ve ben sentaks değiştirmeden ve rahatlıktan ödün vermeden 3-5 satır kodla yine işlerimi görürüm.
Selamlar,
VB, c++, c# vs vs bunların hepsi genel amaçlı uygulama geliştirme dilleridir. Farklı platformlar için, çok farklı konularda uygulamalar geliştirmek için kullanılırlar. Ama özellikle bazı konularda kolaylık sunarak öne çıkarlar. (kolay gui tasarımı, kolay vt bağlantısı vs vs)
MATLAB ise genel amaçlı bir uygulama geliştirme dili değildir. Hatta uygulama geliştirme platformu olduğunu bile söyleyemeyiz. (yazdığınız kodu dll-exe haline getiriyor isterseniz, ama bu özellik matlab kullanıcıları için elzem değil her zaman)
MATLAB bilimsel hesaplamalar için özelleşmiş bir konsoldur. Yazıyı yazan arkadaşımız birkaç örnek vermiş yorumlarda. Matlab matrisleri temel alarak, vektörler üzerinde aklınıza ve bilim adamlarının aklına gelebilecek tüm fonksiyonları içinde temelden barındırır. buna ek olarak Yapay sinir ağları, optimizasyon algoritmaları, görüntü işleme, sinyal işleme, veri elde etme (data aquisition) vb gibi şu anda aklıma bile gelmeyecek onlarca konuda birinci sınıf ek kütüphaneler de içerir (toolbox der kendisi bunlara)
Eğer akademisyenseniz, veya teknoloji ağırlıklı bir işiniz varsa (ar-ge ye dayalı mesela) o zaman MATLAB (veya bu tarz diğer programlar) sizin hayatınızı kurtarır. c++ biliyor olsanız dahi MATLAB gibi programlar kullanırsınız çünkü eğer kullanmazsanız, siz internette en iyi kütüphaneyi araştırırken, rakipleriniz 3 dakikada işini halleder.
Mikroskobunda resim çekip, hücre saydır, yara resmi çekip, tanıya yardım et, mp3 encoder-decoder yap, sistem tasarla simüle et, otomatik park eden araba simüle et, vs.vs.. daha neler neler (çok küçük örnekler oldu bunlar, o derece)
Bu ne hız :)
birde şu diğer komutlar ve parantez içlerinin ne anlam ifade ettiği ve diğer input ve formüllerle nasıl iletişim içinde olduklarını anlasak tam olacak.
Büyük paraların döndüğü bir ar-ge projesinde değilim:) e akademisyende değilim.excel'de yapılabilecek basit bir maliyet ,gerekli güç hesabını bunda yapalım birde güzel bir arayüz olsun istiyorum çokmu? :)
Diğer konuları sabırsızlıkla bekliyorum.
Eğer matlabda yapabildiklerinizi, başka bir platformda da kolayca yapabiliyorsanız (o platformun temel kütüphane ve araçlarıyla), o zaman aslında matlab'a ihtiyacınız yok diyebilirim. Matlab, ihtiyacınız yokken heveslenip öğrenmeniz gereken bir araç değil kanımca. Ama ihtiyaç duyarsanız, emin olun bunu hissedersiniz :)
Yine de matlab ile ilgili birkaç makale tavsiye edebilirim.
MATLAB İle Programlamaya Giriş: http://www.teknohaber.net/makale.php?id=30808
Yapay Sinir Ağları ve Matlab kullanımı : http://www.teknohaber.net/makale.php?id=70225
Matlab, telefon rehberi programlarımızı yapmamız için gerekli bir uygulama platformu değil. Telefon rehberi yazacaksak C#, vb gibi diller ile hızlıca işimizi görürürüz.
Ama Matlab içinde 100den fazla toolbox geliyor, hepsinin görevi farklı. vb ile oturup da Matlab kadar hızlı uzay mekiği modellemesi, rüzgar türbini modellemesi, hidrojen yakıt pili modellemesi yapabilen olur mu? :) Ya da rüzgar türbini modellerken, türbinin dönüş hızını, kanatların esneme payını, rüzgarın ne kadarının sisteme girip ne kadarının direnç göstererek enerji üretimine girmediğini görebilir mi?
Matlab kullanmanın amacı, matematiksel modellemeleri çok hızlı şekilde halletmektir. Matlab, matris laboratory demek zaten; tüm işlemlerinizi matris kullanarak yaparsınız; yani herşey matematik model.
Buradan çıkan sonuç; Matlab finans, mühendislik, genetik-biyoloji, matematik gibi konularda geliştirilmiş bir paket programdır. Bu tarz işlemlerde daha hızlı sonuç alabileceğiniz bir dil, uygulama platformu yok.
Nasa, uzay mekiklerini tasarlarken Matlab kullanıyor, daha önce iptal edilen bir Nasa projesini inceleme imkanımız olmuştu.
C++ ile geliştiriliyor Matlab, C ya da C++ geliştiricileri Matlab'e kendi toolboxlarını ya da özel fonksiyonlarını yazabilir.
Mrb arkadaşlar lazerle mesafe ölçümü yaparak bunu pc de bir program ile arayüz oluşturarak göstermek istiyorum.web cam kullanarak lazer ışının geri gelme süresinide hesaba katarak mesafe hesabı yapmak istiyorum.bunun için matlap mı yoksa c mi kulanmam gerekiyor. ayrıca web camdaki görüntyüyü programa nasıl aktarırım.
Matlab işinizi hızlandırır.
matlab webcam yazarsan arama motoruna, birşeyler bulabilirsin.
Image Acquisition Toolbox kullanarak webcamden goruntu alabilirsin, gercek zamanli olarak, lazerle mesafe olcumunu yapacagin cihazlarin yaptigi olcumleride matlabdan alman mumkun, ancak kullanacagin cihazin nasil haberlestigine bagli olarak cozum yolu degisir.
meraba HALERG seninle yazışabilceğimiz bir email adresi werebilirmisin.
birşeyler danışmak için.MATLAB İLE İLGİLİ
pillinetwork sitelerine yorum ekleyebilmek ve daha fazlası için, üye olun ya da giriş yapın.
Nokta ve pilli ortak yapımı olan kodaman.org hep birlikte içerik üretip gelirini yazarları ile paylaştığımız kolektif bir kod yazarları blogudur. Siz de katılabilirsiniz.