Skip to main content

Matlab Proje Fikirleri -4| Türkçe Matlab Eğitimi

C++  KULLANARAK DEVRE TASARIM HESAPLAYICISI PROJESİ

Devre tasarım hesaplayıcısı nedir ? C++ nedir ve projelerde nasıl kullanılır ? Zener Voltaj regülatörü nedir ? Elektronik devre hesaplamaları nasıl yapılır ?.Bugünki yazımızda C++ kullanılarak devre tasarım hesaplayıcısı projesi hakkında sizlere bilgi vermeye çalışacağız.Matlab proje fikirleri serisinin 4. yazısı olan bu içerikte umuyorum sizlere faydalı bilgiler katabiliriz.

Başlayalım.

C++ KULLANARAK DEVRE TASARIM HESAPLAYICISI

Elektronik devrelerin tasarlanması esnasında , bileşen değerleri devre teorisinden formüller kullanılarak hesaplanmaktadır.Bu hesaplamalar ise bize çok fazla zaman kaybına sebep olmaktadır.

Devre tasarım hesaplayıcısı yazılımı Matlab , Javascript vb. diller ile devre tasarımındaki indüktörler , dirençler , diyotlar vb. diğer bileşenleri analiz etmek ve tanımlamak için geliştirilmiştir.

Bu yazılım birçok karmaşık analog ve dijital devre tasarım problemlerine cevap verebilmektedir.Burada biz tank ve voltaj regülatör devrelerinde kullanılan bileşenlerin değerlerini hesaplamak adına ‘C++’ dilinde geliştirilmiş 4 adet program üzerinde yoğunlaşacağız.

Devre Tasarım Parametreleri :

Programı yazmadan önce , tank devreleri ve zener voltaj regülatörünü incelemek gerekir.

Zener Voltaj Regülatörü :

Zener voltaj regülatör devresi , seri direnç Rs , zener diyot ve yük direnci RL’den oluşmaktadır.Giriş voltajı belirli aralıklarla değişse bile  devrenin DC voltajını stabilitize etmek adına kullanılır.Aynı zamanda DC voltaj üzerinde bulunan AC bileşenleri ortadan kaldırmak için kullanılır.Normal olarak, farklı devrelerin yük akımına göre seri direnç Rs, watt ve zener watt değerini hesaplamak gerekir.

Diyelim ki ; minimum zener akımı 5 mA olsun.Toplam akım -> I = Iz + ILmax olacaktır.

Rs direnç serisinin değeri ise;  Rs = (Vin –Vz) / I  ile bulunur.

Burada Vin volt cinsinden giriş DC voltajı , Vz volt cinsinden zener voltajı ve amperlerde ‘I’ ise akımların toplam akımıdır.

Test için ; Vz = 5.6V ve Vin = 12V olarak kullanılmıştır.Ek olarak siz farklı değerleri de kullanabilirsiniz.

Tank Devresi :

Bu devre , bir indüktör ve bir kondansatörün paralel bir kombinasyonudur.AM ve FM modülatörlerinde, yayın istasyonlarında veya TV istasyonlarında da kullanılan RF osilatörlerinde kullanılır.

Tank devresi frekansı  :  f = 1 / (2π√LC)

Burada , ‘f’ hertz olarak frekans , ‘L’ indüksiyon ve ‘C’ farad olarak kapasitansı belirtir.

Yazılım İşlemleri :

Bu proje , zener regülasyonu , frekans , endüktans ve tank devresinin kapasitansı dahil olmak üzere çeşitli parametreleri hesaplamaya yönelik programları içermektedir.

Kullanıcı bu program seçeneklerinden birini seçerek ilerlemelidir.Belirli bir elektronik devre adına formüller kod içerisinde yer almaktadır.Program çalıştırıldığında kullanıcının gerekli verileri girmesi beklenir.Veri girişi sağlandıktan sonra , sonuç saniye içerisinde gösterilir.

Zener Düzenlemesi :

Zener regülasyon programı seçilirse , Rs direnci üzerinden giriş voltajını , zener voltajını ve toplam akımı girmeniz sizden istenir.Değerler girildikten sonra , seri direnç Rs ve seri direnç üzerinde dağıtılan güç değerlerini hesaplamak adına programı çalıştırır ve zener diyot üzerindeki gücü bizlere hemen gösterir.

Tank Devresi Frekansı :

Bu program seçildiğinde , endüktans ve kapasitans değerlerini girmemiz gerekmektedir.Program bu işlemlerin tamamlanmasının ardından tank devresinin frekansını bize gösterecektir.

Tank Devresi İndüktansı :

Bu program seçildiğinde , frekans ve kapasitans değerlerini girmemiz beklenir.Değerlerin girilmesinin ardından devrenin endüktans değeri bizlere hemen gösterilecektir.

Tank Devresi Kapasitansı :

Bu seçenek seçildiğinde , frekans ve endüktans değerlerini girmemiz beklenir.Değerlerin girilmesinin ardından tank devresinin kapasitansı bizlere gösterilecektir.

KAYNAK KODU İNDİRMEK İÇİN TIKLAYINIZ.

C++ KULLANARAK DEVRE TASARIM HESAPLAYICISI PROJESİ SONUÇ :

Bugünki yazımızda C++ Kullanarak Devre Tasarım Hesaplayıcısı projesini sizlerle beraber inceledik.İlgili konuda Matlab proje fikirlerine dair farklı projelerle karşınızda olmaya devam etmek niyetindeyiz.

İyi Çalışmalar

Matlab Proje Fikirleri -3| Türkçe Matlab Eğitimi

HUFFMAN ENCODING (KODLAMA) ve DECODING (KOD ÇÖZME) PROJESİ

Huffman Algoritması nedir ? Huffman Encoding & Decoding projesi nedir ? Huffman projesi ile neler yapabilirsiniz ? Matlab Proje fikirleri ile ilgili yazı dizisinin 3. yazısında  Huffman encoding ve decoding projesi ile birlikteyiz.

Başlayalım.

HUFFMAN ENCODING & DECODING PROJESİ

Encoding data iletişim güvenliğinden emin olmak ve etkin şekilde bilgi taşımak için kullanılır ve önemlidir.Elektronik haberleşme sistemlerinde , Huffman algoritması popüler encoding methodudur.Karşılaşabileceğiniz geniş kullanıma sahip ana sıkıştırma yöntemlerinden birisidir.

İlgili linkte datayı encode ve decode eden bir proje göreceksiniz.Çıkış değerlerinin de veri akışı karakterlerinin entropi , verimlilik ve frekans olasılıklarını göreceksiniz.

Ek olarak bilgi vermek gerekirse ; Huffman algoritması GZIP , PKZIP(winzip etc.) ve BZIP2’den JPEG ve PNG gibi formatlara sıkıştırma yapan popüler bir methotdur.

Bazı programlar Huffman kodlama methodunu kullanırken bazılarıda tek adım , çoklu adım sıkıştırma yöntemlerini kullanmaktadır.

Huffman kodlama ve karar verme algoritması , değişken uzunluktaki kodlarla veri sıkıştırması için kullanılır.En kısa kodlar en sık kullanılan karakterlere atanır ve en uzun kodlar da en az kullanılan/seyrek kodlara atanır.

Huffman kodlaması entropi encoding algoritması ile kayıpsız data sıkıştırmayı sağlar.Entropi ise bilgi akışı içerisinde öngörülemezliğin ölçümüdür.Maksimum entropi demek toplam öngörülemeyen bitlerle ifade edilir.Kusursuz bir veri akışıda hiç entropinin olmadığı sistemdir.

Huffman kodlama methodu Shannon-Fano methodu ile benzerdir.Aralarındaki ana fark ise ; Shannon-Fano methodu kodları yukardan aşağı doğru inşa eder ve her bir bit ise soldan sağa doğru dizayn edilir.

Huffman ağaç modeli burada gösterilmiştir.Huffman algoritmasını kullanarak ‘bu huffman ağacının bir örneğidir’ cümlesi oluşturulmuştur.Kök düğümün altında , 16 ve 20 nolu yaprak düğümlerini görebilirsiniz.

Huffman algoritması ağaç yapısında , kökte 36 olduğunu varsayalım.Dallar açıldığında 16 ve 20 ile karşılaşırız.16’dan yukarı gittiğinizde 8 ve 8’i görürsünüz ve ardından 4 ve 4’ü.

Benzer şekillerde , huffman ağacının tamamını oluşturmak adına ise ; ‘a’ , ‘n’ , ‘t’ vb. ifadeler eklenmiştir.

Not  : Huffman ağacı oluşumu ile ilgili daha detay bilgiler için EFY Nisan 2005’te yayımlanan ‘Veri sıkıştırma ve Dekompresyon’ yazılım projesini inceleyebilirsiniz.

En basit ağaç yapım algoritması , en düşük olasılığa veya frekansa sahip olan düğümün en yüksek önceliğe sahip olduğu öncelik sırasını veya tablosunu kullanır.

İlk olarak her sembol veya karakter için bir yaprak düğümü oluşturmalıyız ve bunu öncelik tablosuna eklemeliyiz.Tabloda eğer birden fazla düğüm var ise tablodaki en yüksek öncelikli (en düşük frekans) iki düğümü kaldırın.

Bu iki düğüm ile alt düğümler olarak ve iki düğümün olasılıklarının toplamına eşit olasılıkla yeni bir düğüm oluşturun.Son olarak tek düğüm kalana kadar bu şekilde devam ediniz.Son düğüme ulaştığınızda aslında kök’e ulaşmış olacaksınız ve ağacınız artık hazır hale gelmiş olacaktır.

Huffman Kodlamasını Kullanarak Verileri Kodlama Adımları :

1.Bir veri kümesindeki her karakterin olasılığını hesaplayınız.

2.Veri kümelerini artan düzende sıralayın.

3.En küçük frekans solda olacak şekilde ve frekanslar sırayla sağa doğru artacak şekilde sıralayınız.Ve en soldaki en küçük frekanslı ile bir sağındaki en küçük ikinci frekans için yeni bir node oluşturun.

4.Bu iki elementi listeden kaldırın ve artık bu ikisi bir nod’un parçası oldular ve olasılıkları toplayın.Yeni nod için olasılık sonucunu elde edeceksiniz.

5.Listeye sıralı ekleme işlemlerini gerçekleştirin.

6.Ardından adım 3 , 4 , 5 sıralı olacak şekilde ve tek bir nod kalıncaya kadar bu işlemi yapın.

Artık tek bir nod kaldığına göre basit bir ağaç yapısı çizebilirsiniz.

Yukarıda oluşan ağaçta sola giden her yol üzerine ‘0’ ve sağa giden her yol üzerine ‘1’ yerleştirin.Şimdi ‘0’lar ve ‘1’ler kökten başlayarak her bir sembol ya da karaktere ikili kodu(binary code) atayın.

Etkin olarak öncelik sırasındaki veri yapıları , ekleme başına O (log n) gerektirdiği için ve ‘n’ yaprakları olan bir ağacın 2n-1 düğümleri bulunduğu için , algoritma  O (n log n) zamanında çalışır ki burada ‘n’ sembollerin sayıdır.

Yukarıda bulunan ifadelerden , kodlama yönteminin , orijinal mesajın hatasız ve kusursuz bir şekilde hatasız olarak algılanabilmesi adına benzersiz ve açık bir şekilde çözünebilen bir kod oluşturulması gereği oldukça açıktır.

En yüksek olasılıkla üretilen mesaj diğer mesajlardan daha fazla sayıda üretilecektir.Böyle bir durumda sabit uzunlukta bir kod yerine değişken uzunlukta bir kod kullanırsanız , düşük olasılıklı mesajlardan daha yüksek olasılıklı mesajlara daha az bit atayarak verimliliği artırabilirsiniz.

MATLAB Programı Nasıl Çalışır ?

Kaynak olasılıklarını azalan sıra ile sıralayın

En düşük olasılıklara sahip iki sembolün olasılıklarını birleştirin ve ortaya çıkan olasılıkları kaydedin.Bu adıma azaltma adımı denmektedir.Bu prosedür ile iki sıralı olasılıklar kalana kadar tekrarlama işlemi yapılır.

Tam olarak iki dereceli olasılıklardan oluşan son indirgenme olayı ile kodlamayı başlatınız.İlk olasılıkla ilişkili tüm kaynak sembolleri için kod kelimelerinde ilk rakam olarak ‘0’ atayın ve ikinci olasılığa ‘1’ atayın.

Şimdi 3. Adımda yapılan tüm atamaları koruyarak önceki redüksiyon adımında birleştirilen iki olasılık için ikinci basamağa geri dönün ve rakamsal olarak ‘0’ ve ‘1’ rakamını atayınız.

İlk sütuna ulaşılana kadar bu şekilde regresyona devam ediniz.

Entropiyi hesaplayınız.Kodun entropisi , belirli bir modeli çözmek için gereken ortalama bit sayısıdır.

Verimliliği hesaplayınız.Oluşturulan kaynak kodunu değerlendirmek için , verimliliği hesaplamanız gerekmektedir.

Verimlilik = Entropi (H(X)) / Ortalama Kod Sözcüğü Uzunluğu (N)

Ortalama kod sözcüğü uzunluğu demek aslında ; N = ∑ (Pi × Ni)’dir.

Ni , Kod sözcüğünün uzunluğudur ve Pi ise oluşma olasılığıdır.

MATLAB Fonksiyonları :

İlki Huffmanenco’dur.Huffman kodlamasında kullanılır.

Söz dizimi ; comp = huffmanenco (sig ,dict) şeklindedir.

Bu satır ‘dict’ sözlüğünde açıklanan ‘sig’ sinyalini kodlar.Argüman olarak ‘sig’ sayısal bir vektördür.Sayısal hücre dizisi veya alfanümerik hücre dizisi biçiminde olabilir.Eğer ‘sig’ bir hücre dizisi ise bir satır ve sütundan oluşmalıdır.’Dict’ , bir Nx2 hücre dizisidir.

Burada ‘N’  kodlanacak farklı olası sembollerin sayısıdır.İlk ‘dict’ sütunu farklı sembolleri temsil eder ve ikinci sütun , ilgili kod kelimelerini temsil eder.Her kod sözcüğü sayısal bir satır vektörü olarak temsil edilir ve ‘kodlamada’ hiçbir kod sözcüğü , diğer kod kelimelerinin önek’i olamaz.Burada Huffmandict işlevini kullanarak ‘dict’ oluşturabiliriz.

İkincisi ise ; Huffmandeco’dur.Bu işlev Huffman kod çözümünde kullanılır.

Söz dizimi : dsig = huffmandeco (comp ,dict)

Burada kod sözlüğü ‘dict’ kullanarak sayısal Huffman Kod vektörünün derlenmesini çözer.’Dict’ argümanı , bir Nx2 hücre dizisidir.Burada ‘N’ , ‘comp’ olarak kodlanmış orijinal sinyaldeki olası sembollerin sayısıdır.İlk ‘dict’ sütunu , farklı sembolleri temsil eder ve ikinci sütun , ilgili kod sözcüğü sayısal bir satır vektörü olarak temsil edilir.

’Kodlamada’ hiçbir kod kelimesinin diğer kod kelimelerinin ön eki olmasına izin verilmez.Huffmanenco işlevini kullanarak Huffmandict işlevini ve ‘comp’ kullanarak ‘dict’ oluşturabiliriz.’Dict’  ifadesindeki tüm sinyal değerleri sayısal ise , ‘dsig’ bir vektördür.’Dict’ ifadesindeki herhangi bir sinyal değeri alfabetik ise , ‘dsig’ tek boyutlu bir hücre dizisidir.

Test Yapalım !

Matlab programını başlatınız.Program ilk olarak mesajların sözlüğünü üretecektir.Bu mesajlar örnekte olduğu gibi 00 ile 1001 arasındaki kodlardan ve bit akışlarından başka bir şey değildir.Kaynak aralığını değiştirerek bu aralığı genişletebilirsiniz.Örnek bir Matlab çıktısı aşağıda verilmiştir;

Olasılıkları giriniz : [0.3 0.25 0.2 0.12 0.08 0.05]

Huffman Kodu Dict ise;

[1]  ‘0 0’

[2]  ‘0 1’

[3]  ‘1 1’

[4]  ‘1 0 1’

[5]  ‘1 0 0 0 ’

[6]   ‘1 0 0 1’

1 ila 6 arasındaki sembollerden birini giriniz :

Örnek olarak []:[3] olsun.

Sym = 3 olduğu için kodlanmış çıkış = 1 1 olacaktır.

Bit akışını da [1 1 ] olarak giriniz.

Semboller ; 3   & Entropi = 2.360147 bit    & Verimlilik = 0.991659  & m = 4 & s=2  ve Varyans =2

İlk olarak , program bizden 1 ila 6 arasındaki sayıyı girmenizi ister.3 rakamını girdiğinizde ekranda ‘1 1’ kodu görünür.Bu kod ‘3’ sayısına karşılık gelen karakterden başka bir şey değildir.Bu nedene de kodlama başarılı bir şekilde yapılacaktır.

Kod çözme işlemi içinde bit akışını girmeliyiz (1 1 ).Oluşturulan çıktı ise ‘3’tür.

3 yerine ‘1’ ila ‘6’ arasında çeşitli kombinasyonları deneyebiliriz.

Program  bizlere sözlükte üretilen maksimum uzunluk(m) ve minimum uzunluklar (s) değerlerini üretir.Oluşturulan maksimum uzunluk ‘1111’dir.Yani burada m=4 olacaktır.Minimum uzunluk ise ‘00’dır ki burada da iki bit olduğu için minimum uzunluk 2 olacaktır.

Huffman kodlaması aynı zamanda Minimum varyans kodlaması olarakta adlandırılır.Varyans maksimum uzunluk & minimum uzunluktur.Bu nedenle de bu örnek için varyans ‘2’dir.

KAYNAK KODU İNDİRMEK İÇİN TIKLAYINIZ ! 

HUFFMAN ENCODING (KODLAMA) ve DECODING (KOD ÇÖZME) PROJESİ SONUÇ :

Bugünki yazımızda huffman encoding ve decoding projesini sizlerle paylaştık.Bu yazı dizisinde Matlab’e dair fikirler ve projelere devam ediyor olacağız.Umarım faydalı olabiliyoruzdur.

İyi Çalışmalar

MATLAB Proje Fikirleri -2 | Türkçe Matlab Eğitimi

KAYIPSIZ GÖRÜNTÜ SIKIŞTIRMA PROJESİ 

Kayıpsız Görüntü Sıkıştırma Projesi nedir ? Matlab proje fikirleri nedir ? Matlab’de proje nasıl yapılır  ? Bu ve benzeri sorulara cevap aradığımız bu serinin 2. yazısı olan Kayıpsız Görüntü Sıkıştırma projesi yazısı ile yine birlikteyiz.

Başlayalım.

KAYIPSIZ GÖRÜNTÜ SIKIŞTIRMA PROJESİ İNCELEME

Bugünlerde kameralar daha fazla megapixellerle çekilecek olan fotoğrafların kalitesini arttırmaktadırlar.Bundan dolayı artan görüntü kalitesi ile doğal olarak görüntü boyutları da artmaktadır.

Görüntü sıkıştırma ile ilgili Matlab’de Graphical User Interface (Grafiksel Kullanıcı Arayüzü) bu proje için kullanılmıştır.Bu proje teknik anlamda görüntüyü sıkıştırırken kalitenin aynı kalmasını amaçlamaktadır.

Kameralar günümüzde görüntülerin kalitesini artırmak için daha fazla megapiksel sağlamaktadırlar.Pekala görüntü kalitesi arttıkça görüntü dosyasının boyutu da artmaktadır.

İnternet üzerinde bulunan hız limiti sebebiyle , daha büyük boyutlarda olan kaliteli resimleri yüklemek ise daha fazla zaman gerektirmektedir.Bir kullanıcı , görüntü kalitesini düşürmeden görüntüyü sıkıştırmak isteyebilir ya da bu durum gerekebilir.

Mobil üreticiler , fotoğraf makinalarında kaliteden ödün vermeden görüntülerin küçültülmüş boyutlarda saklanmasını sağlayan algoritmalara ihtiyaç duymaktadırlar.

İki tip sıkıştırma algoritması kullanılmaktadır ; Lossless ve Lossy-Image

Bu yazımızda ise ; kalitesini korurken boyutunu küçültmek için yakalanan görüntüyü sıkıştırmak için bir teknik üzerine konuşacağız.

Önerilen algoritmanın doğruluğunun kontrolü adına da birkaç görüntü kontrol amaçlı kullanılacaktır.

Bu yazımızda görüntüyü iyi bir sıkıştırma oranı ile sıkıştıran ayrı bir kosinüs dönüşüm algoritması kullanılmıştır.

Piksellerini yakalamak adına görüntü MATLAB sayesinde okunur.Sıkıştırılmış görüntü elde edildikten sonra da tepe-sinyal-gürültü oranı (PNSR) ve ortalama kare hatası (MSE) aşağıdaki gibi hesaplanır.

matlab proje örnekleri

Peak-Signal-Noise Ratio (PSNR) ve Mean-Square Error (MSE) formülleri :

MSE = ∑m,n(Image1(m,n) – Image2(m,n))^2 / mxn

Burada m ve n ; satır ve sütun sayısıdır.Görüntü1 ve Resim2 sırası ile de orijinal ile sıkıştırılmış görüntülerdir.

Sıkıştırma işleminin ardından , görüntünün kalitesinde çok fazla değişiklik meydana gelmemelidir.MSE , orijinal görüntü ile sıkıştırılmış görüntü arasındaki bir hatayı belirtir.Ve bu durum mümkün olduğunca küçük olmalıdır.

R giriş görüntüsü veri tipindeki (görüntünün olası maksimum piksel değeri) maksimum dalgalanmadır.

PNSR ; MSE ile ilgilidir ve sıkıştırılmış bir görüntüde gürültü miktarını bizlere verir.PNSR mümkün olduğunca yüksek olmalıdır.

PSNR = 10 log 10 (R^2 / MSE

Tüm denklemler MATLAB’de fonksiyonlar şeklinde uygulanır.

KAYNAK KODUNU İNDİRMEK İÇİN TIKLAYINIZ !

KAYIPSIZ GÖRÜNTÜ SIKIŞTIRMA PROJESİ SONUÇ : 

Bugünki yazımızda Kayıpsız Görüntü Sıkıştırma Projesini inceledik.Matlab proje fikirleri yazı dizisinin 2.si olan bu yazımızda umuyorum faydalı birtakım bilgileri sizlere aktarabilmişimdir.Ek olarak ilgili alanlarda proje inceleme ve kaynak kodların paylaşımı konusunda daha çok inceleme yapma niyetindeyim.Sizlerden gelecek öneri ve eleştirilere de her zaman açık olduğumu ifade etmek isterim.

İyi Çalışmalar

MATLAB Proje Fikirleri -1 | Türkçe Matlab Eğitimi

YAPAY SİNİR AĞI SİMÜLASYON PROJESİ

Yapay Sinir Ağı Simülasyon Projesi nedir ? MATLAB nasıl kullanılır ? MATLAB’de proje nasıl yapılır ? Yapay sinir ağı nedir ? Bu ve benzeri sorulara yanıt aradığımız Matlab proje fikirleri yazı dizisinin ilki olan Yapay Sinir Ağı Simülasyon Projesi adlı yazımızla karşınızdayız.

Başlayalım.

YAPAY SİNİR AĞI SİMÜLASYON PROJESİ İNCELEME

Yapay sinir ağı , aslında beyni simüle etmek için kullanılan bir girişimdir.Kullanıcılar giriş olarak say,p1,p2 ve p3 olarak girdiklerinde buna bağlı olarak çıkışların say,t1,t2,t3 olmasını program içerisinde beklemektedirler.Program sistemi test eder ve sonuç olarak etkiyi bizlere verir.Finalde etki beklenen sonuçla karşılaştırılır.

Bu program yapay sinir ağının temellerini anlamak ve bunu daha ileriki uygulamalarda nasıl kullanacağınızı göstermek adına yol gösterecektir.

Proje hakkında biraz daha detay bilgi vermek gerekirse ;

Giriş nodunda bayan ya da erkek olduğu resim ile tanımlanır , sunulur ve çıkış nodu kesinlikle eğer erkekse 0.0 , bayan ise 1.0 olmalıdır.

Bu şekilde ağ haberleşmeleri dış dünyayı anlamaktadır.

Sinir ağ teorileride biyolojik nöronların açığa çıkması ve simülasyonlara uygulanması fikri etrafında kesin bir sonuç oluşturmaktadır ve bu sebeple beynin simülasyonları yapılmaktadır.

Buradaki ilk önemli nokta beynin potansiyelini ölçmek için yeniden oluşturulan yapay sinir ağı komponentlerini anlamaktır.

İkinci önemli nokta ise simüle etmek beyin kadar karmaşık bir yapıdadır ve bunuda anlamamız gerekmektedir.

İnsan beyninin  yüz milyarlarca nöronlardan oluştuğunu biliyoruz.

Tipik yapay sinir ağları ise bin yapay nörondan daha fazlasından oluşmamaktadır.

Teoriye göre , yapay nöron diğer bir adıyla nod , önemli biyolojik elementlerin her birine karşılık gelir.Ve bu nodlar birbirine bağlanırlar.

Ardından normal olarak verilen sayısal değerler ‘-1.0’ (Maksimum tutma) ile ‘+1.0’ (Maksimum uyarma) arasında çok güçlü bağlar kurarlar.

Tüm değerler kabul edilebilir iki değer arasındadır ve daha önemli , yüksek değerler daha güçlü bağlantılar içerir.

Yapay nöronlar için fonksiyon transferi , bilgisayar simülasyonu ya da mikroçipler ile olsun ya da olmasın , nodların dizaynları ile inşa edilir.

Fonksiyon transferinin matematiksel gösterimi ise ; uzaysal ya da zamansal frekans terimleri ile ya da değişmeyen doğrusal zaman sisteminin giriş-çıkışları ile ifade edilir.

Yapay ve biyolojik sinir ağları arasındaki muhtemel en büyük fark  aralarındaki organizasyon yapısıdır.Yapay sinir ağlarının birçok çeşidi bulunmaktayken çoğu zaman benzer basit yapıya göre şekillendirilirler.Organizasyon içerisinde üç komponent bulunmaktadır ; Giriş nodlarının set edilmesi , saklı nodların bir ya da daha fazla katmanları ve çıkış nodlarının set edilmesi.

Giriş nodları bilgisinin anlaşılması duyu organlarına yakındır.Bilgi sayısallaştırılmış resim formunda olsun ya da olmasın kayıtlı değerler serisi ya da diğer herhangi bir form hakkında sayısal olarak gösterim yapılabilir.Ve bu durum da dahili datalara erişim imkanı sunar.

Bilgi , aktivasyon değerleri olarak sağlanır ve bu durumda her bir verilen nod numarasında daha yüksek numaralar daha büyük aktivasyonla sunulur.

Aynı insan nöronları gibi  , biyolojik nöronların aktivasyon değerlerini aktarmasının dışında , yapay nöronlar, bağlı nodlara bağlı aktivasyon değerini geçer ve aktivasyon içerir.

Dahili aktivasyon değeri alındıktan sonra bilgi ağ üzerinden geçer.Aktivasyon değerlerinin diğer bir nod’a geçmesinin ne kadar olacağını bağlantı sağlamlığı , transfer fonksiyonları ve kısıtlama/uyarım şartları belirler.

Her bir nod aldığı aktivasyon değerlerini toplar ve kendi aktivasyon değerine ulaşır ardından da ağ içerisindeki sıradaki nod’a geçiş yapar.Bu sebeple aktivasyon tek bir yönde akar.

Giriş nodlarından ve saklı katmanlar üzerinden , çıkış nodları aktif olana kadar akacaktır.

Eğer ağ düzgünce ayarlanmışsa , çıkışlar aynı yolla girişlere cevap verecek , etkileşime girecektir.

Örnek olarak , giriş nodunda erkek ya da kadın resmiyle cinsiyet tanıma işlemi yapıldığında , çıkış nodu eğer resimde erkek tanınırsa 0.0 , eğer kadınsa da 1.0 olacaktır.Bu yolla da zaten ağ haberleşmeleri dış dünyayı anlayabilmektedir.

türkçe matlab eğitimi

Peki Nasıl Öğrenirler ?

Ağ yapılarının yapısı , bağları ve aralarındaki ilişkileri açıkladıktan sonra nöral ağlarda öğrenmenin öncelik olarak bağlantı kuvvetlerini ayarlama sürecinin bir parçası olması sürpriz olmamalıdır.

Şu ana kadar anlatılan tipteki sinir ağları üzerinde en popüler olan öğrenme methodu sinir ağ teorisini öğrenmek için kullanılan algoritma  olan ‘algılayıcı’dır ve bu şekilde adlandırılmaktadır.

Algılayıcı isim olarak İngilizcede ‘Perceptron’ olarak adlandırılmaktadır.Perceptron , 1957 yılında Frank Rosenblatt tarafından Cornell Aeronautical Laboratuvarında icat edilen bir tür yapay sinir ağıdır.Lineer sınıflandırıcı adına ileri beslemeli sinir ağının en basit türü olarak düşünülebilir.

Perceptron ; ‘x’ gerçek değerli vektör girişini , ‘f(x)’ tek bir değerli çıktı değerine eşleyen ikili sınıflandırıcıdır.’w’ gerçek değerli ağırlıkların , ‘w.x’ nokta ürününün (burada sonuçları toplar) ve ‘b’ bias (herhangi bir giriş değerine bağlı olmayan sabit bir terim) vektörüdür.

‘F(x)’ (0 veya 1) değeri , ikili bir sınıflandırma durumunda , ‘x’ i bir pozitif veya negatif örnekle sınıflandırmak için kullanılır.Eğer ‘b’  negatifse , girişlerin ağırlıklı olarak kombinasyonu , |b| sınıflandırıcı nöronunu ‘0’ eşiğine itmek adına kullanılır.

Mekansal olarak bias karar sınırlarının konumunu değiştirir.Algılayıcı öğrenme seti doğrusal olarak ayrılabilir değilse , algılayıcı öğrenme algoritması sonlanmaz.

LabVIEW Blok Tanımı :

LabVIEW , text üzerine programlama yapısı olan programlara göre daha kısa zamanda dizayn ve dijital işleme analizlerini tasarlamanıza izin veren grafiksel bir programlama yapısına sahiptir.LabVIEW grafiksel programlara sanal araçlar denir.

Bu sanal araçlar data akış programlama konseptine dayanarak çalışır.Bunun anlamı ise , blokların ya da grafiksel komponentler data akışına bağlıdır ya da daha spesifik olarak tüm data ve inputların uygun olmasına bağlıdır.Bu bloğun çıktı verileri de daha sonra diğer tüm bağlı olan bloklara gönderilir.

Bir sanal enstrüman iki ana bileşenden oluşur ; bir ön panel ve bir blok şeması.Ön panel bir programın kullanıcı arayüzünü sağlarken blok diyagramı da grafik kodunu içerir.

Blok şemasında terminal ikonları , düğümler , teller ve yapılar bulunur.Terminal simgeleri bir ön panel ve bir blok şeması arasında verilerin değiştirildiği arayüzlerdir.

Ön panel ve blok diyagramı arasında ileri geri gidip , ön paneldeki giriş/çıkışları ve blok şemasındaki yapı bloklarını yerleştirerek sanal bir enstrüman tasarlanmıştır.

Bu yapay sinir ağında , blok diyagramı gerçek bir transpoz matrisi , düğümleri , telleri , yapıları vb. içermektedir.

Gerçek transpoz matrisi , gerçek sayıya sahip matrisi transpoze etmek için kullanılır.

Giriş matrisi bloğu besler ve çıktı matrisinin dönüşümü turuncu çizgide elde edilir.Varsa mavi çizgide de hataları gözlemleyebilirsiniz.Matris transpoz çıkışı , gerçek matrisi daha sonraki işlemler için 2D’den 2D dizisine dönüştüren başka bir bloğu besler.

Girişlerin beslenmesi ve ağırlıkların başlatılması , bloğun ilk aşamasında yapılır.Yani daha bu aşamada ilk iterasyon işlemi yapılır.İlk aşamadaki tüm hesaplamalar ve ağırlık girdileri , sistemi eğitmek için daha ileri işlem için ikinci aşamaya beslenir.İkinci aşamada elde edilen nihai sonuçlar ile iterasyonlar tamamlanır.

Öğrenme Algoritması :

Burada tek katmanlı bir algılayıcı için öğrenme algoritmasını açıklamaya çalışalım.

Çok katmanlı algılayıcılar için , geri yayılım gibi daha karmaşık algoritmalar kullanılmalıdır.Alternatif olarak , delta kuralı gibi yöntemler , eğer doğrusal olmayan ve farklılaşabilir durumda ise aşağıdaki seçeneklerde işe yarayacaktır.

Göreceğiniz öğrenme algoritmaları tüm çıkış nöronları için aynıdır.Bu nedenle de takip eden herşey tek bir nörona uygulanır.

İlk olarak birtakım değişkenleri tanımlamalıyız.

y = f (Z) , Z’ giriş vektörü için algılayıcıdan gelen çıktıyı gösterir.

‘b’ = Bias , örnekte olduğu gibi  0 alınır.

D= {(x1,d1),……..,(xs,ds)}  ‘s’ örneklerinin eğitim kümesidir ve burada ‘xj’ n boyutlu giriş vektörüdür.’dj’ algılayıcı bu giriş için istenen çıkış değeridir.

Düğüm değerlerini de aşağıdaki gibi gösterebiliriz.

Xj , i = Jth giriş vektörünün İth nod değeridir.

Xj , 0 = 1

Ağırlıklar , Wi vektörü ile temsil edilir ve bu ağırlık vektöründeki İth değeridir.Bu da giriş düğümünün değeri ile çarpılır.

Tüm giriş vektörlerine xj , n+1 =1 ile n+1 indeksi ek bir boyut eklenebilir.Bu durumda wn+1 öngerilim teriminin yerini alır.’W’nin zamana bağlılığını göstermek için , t zamanında ağırlık olan wi(t) yi kullanırız.

a = Öğrenme hızı , burada 0 < a <1 arasındadır.

Çok yüksek bir öğrenme oranı , ek adımlar atılmadıkça algılayıcıların periyodik olarak solüsyon etrafında salınmasını sağlar.

Girdilere uygun ağırlıklar uygulanır ve ortaya çıkan ağırlıklı toplam , ‘y’ çıktısını üreten bir işleve iletilir.

Öğrenme Algoritması Adımları

Yukarda tanımlı değerlerle birlikte , çıkışı hesaplayabiliriz.

İlk olarak , mevcut çıkış fonksiyonlarını hesaplayalım.

Yj(t) = f[w(t).xj] = f[w0(t) + w1(t)xj,1] + w2(t)xj,2+…..+wn(t)xj,n]

İkinci olarak ağırlıklarında uyarlanması için ;

Tüm nodlar için :   wi(t+1) = wi(t)+a(dj-yj(t))xj,i     0<i<n

Artık aşağıdaki gibi devam edebiliriz.

Program içerisinde dahili olarak yapılan w1,w2,w3,w4 ve eşik ağırlıklarını başlatınız.Ağırlıkların wi(0) ‘0’ ya da küçük bir rastgele değere ayarlanmasıyla ağırlıkların başlatılabileceğini unutmayınız.

‘D’ antreman setimizdeki ‘j’ örneklemi için , xj girişi (LabVIEW) programında girişler p1,p2,p3 ve p4 ve istenilen çıkış dj (program içerisinde t1,t2,t3 ve t4)

Program 5000 iterasyon içerisinde simüle edildikten sonra ağırlıklar güncellenir ve nihai bir ağırlık elde edilir.Bu da operasyon için uygun bir denklem seti verir.

İkinci adımda ;

Yineleme hatası dj-yj(t) , kullanıcı tarafından belirlenen hata eşiğinden daha az olana kadar tekrarlanır veya önceden belirlenmiş sayıda yineleme tamamlandı.Bu hata , istenen çıktıdan bir yineleme ile elde edilen çıktı çıkarılarak hesaplanır.Bu LabVIEW’in her iki aşamasında toplayıcı ve çıkarıcı bloklar olarak yapılmalıdır.

LabVIEW programında sistemi eğitmek ve sistemin öğrenmesini sağlamaktan sorumlu iki aşama bulunmaktadır.Herşeyden önce kullanıcı değeri girer.Bu değer , bir yinelemeyi tamamlayan ve yukarıda açıklanan tüm görevleri yerine getiren birinci aşamaya beslenir.Şimdi , birinci kademe ve güncellenmiş ağırlığının çıkışı p1,p2,p3 ve p4 kullanıcı girişleri ile birlikte ikinci kademe girdisi haline gelir ve böylece 4999 yineleme gerçekleşir.

Doğru çıktıların alınabilmesi adına iterasyon sayısının uygun bir seçiminin olduğuna dikkat edilmelidir.Ağırlıkları , girdileri ve eşiği kanıtlandıktan sonra , V ok düğmesine tıklayarak LabVIEW simüle edilir.5000 tekrardan sonra nihai sonuçlar güncellenir.

LabVIEW’a verilen p1,p2,p3 girişleriyle birlikte son sonuçları (w) -5384.2 , 2884.4 , 2692.95 olarak alacaksınız.

Son sonuçlar istenilen çıktıyı elde etmek adına MATLAB programı üzerinden ayarlanır.Burada çıktıyı h= -1 olarak almalıyız.

Program bir girdi grubu içerisinde çıktısının -1 olduğu şartıyla geliştirilmiştir.1 veya 0 kullanabilirsiniz ancak bu durumda başlangıç koşullarını ve yineleme sayısını değiştirmeniz gerekmektedir.

Bu numaradan başka bir çıkışınız olabilir.Örnek olarak , giriş turuncu , elma ve üzüm olarak verildiğinde çıkış turuncu kırmızı ve yeşil olabilir.

Test Adımları :

Matlabı bilgisayarınıza yükleyin

Matlabı açın

Boş IV seçeneğini seçin ve LabVIEW programını (Perp.vi) açın.

Girişleri 2 ve -2 arasında girin.Tüm boyutlar 4×1 matris olmalıdır.LabVIEW ön panelindeki sütunun dört noktasından başka herhangi bir veri giriş noktasına bile ilişkilendirilmediğine emin olunuz.Matris ölçüleri eşleştirilmelidir.Eğer giriş noktasını tıklarsanız , rengi beyaza dönüşecektir ve bu da matrisin boyutunu 5 olarak alacak ve bu durumda veri boyutunu uyumsuzlaştıracaktır.

1 ila 0.2 öğrenme hızını girin.Programı çalıştırmak için menü çubuğundaki oku (->) tıklayınız.

Son sonuçlar ekranın hemen altında elde edilecektir.Bu değerleri MATLAB koduna (perceptronopbipolar.m)’a girin ve istenen çıkışı elde etmek için programı çalıştırınız. H=-1

KAYNAK KODUNU İNDİRMEK İÇİN TIKLAYINIZ !

YAPAY SİNİR AĞI SİMÜLASYON PROJESİ SONUÇ :

Bugünki yazımızda Yapay Sinir Ağı Simülasyon Projesi adlı yazımızı sizlerle paylaştık.Bu proje MATLAB ile yapılmış olup , yapay ağlar kurmak ve yapay zeka eğilimine ilgili herkes adınadır.MATLAB projele örnek ve açıklamalarının ilki olan bu yazı dizisi ile eğlenceli ve bilgi dolu bir seri olması dileğiyle.

İyi Çalışmalar.