Matlab İf-Else ve Swich-Case Yapıları ile For ve While Döngüsü

Matlab ile yazılan programlarda kullanılabilecek bazı ifadeleri tanımlamak gerekir.

Continue ifadesi ile karşılaşınca işlem bir sonraki iterasyona geçer.

Break ifadesi ile karşılaşınca break ifadesinin bulunduğu döngü sona erer.

Error fonksiyonu, yazılacak programlarda karşılaşılabilecek hatalara karşı kullanılır. Örneğin bir değer girilmesini istiyorsunuz ve bu değer belirli şartları sağlaması gerekiyor. Kullanıcı yanlış girmesi durumunda error fonksiyonu kullanılarak program durdurulabilir. error(‘Sayi yanlış’) şeklinde komutla karşılaşınca ekranda error using –> fonksiyon_adi Sayi yanlış şeklinde olur ve program durur.

Warning fonksiyonu error yapısının aynısıdır fakat burada program bu komutla karşılaşınca program yazıyı ekrana verir ama durmaz.

Okumaya devam et “Matlab İf-Else ve Swich-Case Yapıları ile For ve While Döngüsü”

Matlab Temel Matris Operatörleri

Temel işlemler:

a(:) a matrisinin sütunlarının ard arda dizilmesinden oluşan bir sütun vektör oluşturur.
a(:,i) a matrisinin i. sütununu alır.
a(j,:) a matrisinin j. satırını alır.
a(:,i)=[] a’nın i. sütununu siler.
a(i,:)=[] a’nın i. satırını siler.
a(:,[i j]) a matrisinin i ve j. sütununu alır.
a([i j],:) a matrisinin i ve j. satırını alır.
e=a:b:n a, (a+b),…,n sayılarından oluşan bir satır vektör oluşturur.
inv(a) Bira kare matrisinin tersini (inversini) alır.
a’ a matrisinin devriğini (transpozesini) alır.
det(a) a matrisinin determinantını hesaplar.
diag(a) Bir kare a matrisinin köşegen elemanlarını bir sütun vektöre atar.
rand 0 ile 1 arasında sayı üretir.a ile b arasında mxn boyutlu matris oluşturmak için b+a-b(rand(m,n)).
zeros(m,n) m×n boyutlu sıfır matrisi oluşturur.
ones(m,n) m×n boyutlu elemanları “1” olan matris oluşturur.
eye(m) m×m boyutlu birim matris oluşturur.
pascal(z) z boyutunda pascal üçgeni oluşturur.
magic(k) 1 il k*k arasındaki sayılardan oluşmuş, k*k boyutunda eşit satır ve sütun toplamına sahip matris olur.
trace(x) Bir x matrisinin izi.
eig Özdeğer ve özvektör bulma.
rem x-y.*fix(x./y) demektir.
mod x-y.*floor(x./y) demektir.
find Verilen koşula uygun elemanların indislerini verir. Okumaya devam et “Matlab Temel Matris Operatörleri”

Matlab Genel Bilgiler

MATLAB, yüksek performanslı bir uygulama yazılımı ve bir programlama dilidir. MATLAB, MATrix LABoratory sözcüklerinden gelir ve temelde sayisal ve analitik olarak matematiksel fonksiyonların ifadelerinin kullanıldığı başta mühendislik alanında olmak üzere birçok sayısal analizi kullanan bilimlerde son yıllarda oldukça sık kullanılan bir hazır yazılım paketidir. Özellikle yüksek performans gerektiren algoritma hazırlama ve geliştirme, sayısal analiz, simülasyon, mühendislik problemlerinin sayısal ve grafik çözüm tekniklerinde son derece etkindir.

Matlab yazılım paketinde kullanılacak olan her hazır fonksiyon yanında kullanıcının da kendi yazılımını oluşturma imkani saglar. Matlab’in gerek kişisel bilgisayarlarda (PC) gerekse diğer işletim sistemlerinde (UNIX, LINUX) gibi bazi ufak farklılıklar dışında kullanımı, ya doğrudan kendi çalışma ve komut ekranında ya da ‘m’ uzantılı program dosyası oluşturmak suretiyle (script) olmaktadir. Program çalıştırıldığında çalışma ekranına ilk olarak ‘>>’ komut ekrani gelecektir. Matris ve vektörler [ ] köşeli parantezleri ile tanımlanır.

MATLAB’in temelindeki yapı, boyutlandırma gerektirmeyen matrislerdir. Yaptığımız tüm girdi ve çıktılar, belirteç gerektirmeksizin bir matris tanımlar. İlk olarak Fortran dili ile yazılan MATLAB, daha sonra C ile yazılmıştır. Okumaya devam et “Matlab Genel Bilgiler”

Algoritma yeni başlayanlar için sıralı diziye rastgele sıralı şekilde ekleme algoritması (Hızlı Sıralama, Araya Ekleme C# konsol)

Algoritma bilgisini geliştirmek isteyen programcılar için küçük bir beyin jimnastiği örneği olarak görebilirsiniz.

Örnekte yapılan işlem 100.000 adet  (100.000-1.000.000) arasındaki sayılardan oluşan ve sıralı bulunan bir metin belgesi içindeki sayıları okuyup, bu okunan sayı değerinin 10 da 1 kadar yani 10.000 adet yeni aynı aralıktaki  (100.000-1.000.000) random sayı üretip bu yeni üretilenleri, önceki gruba yine sıralı şekilde ekleyip dosya ya yazma işlemidir.

Okumaya devam et “Algoritma yeni başlayanlar için sıralı diziye rastgele sıralı şekilde ekleme algoritması (Hızlı Sıralama, Araya Ekleme C# konsol)”

Göz Bebeği Hareketi Belirleme (Matlab)

Projenin Kodları

Tüm projeyi Github İndir

Giriş

Bu projede web kamera yardımıyla göz bebeğinin takip edilmesi gerçekleştirilmiştir. Yüz geometrisinin tanımlanması ve yüz bölgelerinin belirlenmesi için OpenCV’nin Viola Jones gerçekleştirimi kullanılmıştır. Uygulama MATLAB R2008b üzerinde geliştirilmiştir.

Uygulamanın başarımı yüzün kamera üzerindeki konumu, açısına ve ortam ışıklandırmasına bağlı olarak değişmektedir.

Uygulama

Uygulamanın göz bebeklerini tespit etme ve takibi aşamaları aşağıda sıralanmıştır:

  1. Kameradan çekilen görüntü ayıklanması için OpenCV’nin Viola Jones algoritmasına gönderilir. Kamera saniyede 2 kare görüntü alır.
  2. Gönderilen görüntüler algoritma tarafında ayıklanır ve göz bölgeleri belirlenir.
  3. Belirlenen yüz ve bu yüzlere ait göz bölgelerinden kameraya en yakın olan bölgeler seçilir. Bu sayede ekranda birden çok yüz varsa kameraya en yakın olan gözler işlenmek için seçilir.

sekıl 1

Şekil 1. İki Yüzden Önde Olanının Seçilmesi

  1. Seçilen göz bölgeleri çeşitli görüntü işleme filtrelerinden geçirilerek sol ve sağ göz bebekleri belirlenir.
  2. Bundan sonra üstteki adımlar sürekli tekrar edilerek göz bebeklerinin takibi sağlanır.

Okumaya devam et “Göz Bebeği Hareketi Belirleme (Matlab)”

Snake ile Görüntü Bölütleme (Matlab)

Projenin Kodları

Tüm projeyi Github İndir

Giriş

Bu projede eşik yöntem dışında bir yöntem ile bölütleme işlemi gerçekleştirilmiştir. Kullanılan yöntem, Active Contour olarak da bilinen yılan(snake) yöntemidir. Uygulama MATLAB R2008b üzerinde geliştirilmiştir.

Uygulama, medikal görüntülerde test edilmiştir ve başarımının oval nesnelerin tespitinde daha başarılı olduğu görülmüştür.

Uygulama

Bu çalışmada nesne tespitinde kullanılan algoritmaya yardımcı olarak DIPImage kütüphanesi kullanılmıştır. Nesne tespitinde yapılan işlemler aşağıda sıralanmıştır:

  1. Kullanıcıdan nesne tespitine başlamak için 4 adet nokta girmesi istenir.
  2. Alınan 4 nokta yardımı ile bir ilk sınır çizilir. Alınan 4 noktanın x ve y koordinatlarının ortalaması alınarak merkez nokta belirlenir. Her nokta arası uzaklıklar birbirleri ile kıyaslanarak en büyük farkın olduğu x ve y değerleri çap olacak şekilde bir daire çizilir.

t

Şekil 1. Alınan Noktalar ile Oluşturulan Daire

  1. Alpha, beta, gamma ve iterasyon parametreleri aranacak nesnelerin tipine göre belirlenmiştir. Test için daha çok oval nesneler arandığından dolayı beta yüksek verilmiştir. Çünkü betanın yüksek olması aramanın daha oval hale getirilmesine sebep olur. Alpha ve beta parametreleri de gamma parametreleri ile zıt hareket etmektedir. Alpha ve beta ne kadar yüksek ise gamma aynı biçimde küçük olur.
  2. Parametreler de verildikten sonra yılan modeli yerleştirilmeye çalışılır. Yılan yerleştirilirken toplam enerjinin minimizasyonuna çalışılır. Toplam enerji iç ve dış enerjilerin toplamına eşittir.
  3. Toplam enerji her iterasyonda hesaplandığında belli bir enerji eşik değerinden yüksek ise iç enerji oranınca sınırlar yeniden hesaplanır. Bu sayede aranılan bölgeye doğru kayma gerçekleştirilmiş olur.
  4. İstenen eşik enerjisine ulaşıldığında veya belli bir iterasyon sayısına ulaşıldığında sistem en son bulunduğu noktayı gösterir.

Okumaya devam et “Snake ile Görüntü Bölütleme (Matlab)”

Pişti Oyunu Consol (Matlab)

Proje adımları javada yazılan bir oyunun matlaba dönüştürülmesi şekildedir.

Bir deste 52 karttan oluşmaktadır.

  1. 4 çeşit (çeşit) kart bulunmaktadır: Kupa (♥), Karo (♦), Maça (♠) ve Sinek (♣).
  2. Her çeşitten 13 kart bulunmaktadır (1 veya A, 2, 3 …, 10, J, Q, K). Bu değerler kartın numarası olarak adlandırılır.
  3. J (Joker), Q (Kraliçe) ve K (Kral) için sırasıyla 11, 12 ve 13 kullanabilirsiniz.

Oyuncu ve bilgisayar ellerinde 4 kart bulundurur. Oyun, oyuncu ve bilgisayarın sırasıyla yere bir kart bırakmaları şeklindedir. Yere kart bırakma işlemi oynama olarak adlandırılır. Kart K oyuncu O tarafından oynandığında aşağıdaki 3 durumdan biri ortaya çıkar:

  1. Yerde sadece 1 kart bulunmaktadır. Bu kartı T olarak adlandıralım. Eğer C ile T aynı sayıya eşitse, oyuncu P pişti yapmış olur ve 10 puan kazanır. Oyuncu P yeri temizleyerek C ve T kartlarını kasasına koyar. Bu noktada yer boş durumdadır.
  2. Yerde birden fazla kart vardır. Yerde en üstte bulanan kartı T olarak adlandıralım. Eğer C ile T aynı sayıya eşitse oyuncu P yeri temizleyerek yerdeki tüm kartları kasasına koyar.
  3. Yerdeki kart sayısı ne olursa olsun, eğer C kartı Joker kartına veya yerde bulunan kartların en üstündekine eşit değilse, C kartı yerde kalır ve en üstteki kart olur. Kimse yeri temizlemez.

Oyun sonunda pişti puanlarına ek olarak; her oyuncu, kasasındaki pişti olmayan her kart için 1 puan kazanır. En çok puanı toplayan oyuncu kazanır.

Her pişti oyunu aşağıdaki şekilde devam eder: Okumaya devam et “Pişti Oyunu Consol (Matlab)”