Matlab MATLAB ile Histogram Kullanımı ve Olasılık Hesaplama By Buğra Unutmaz Posted on 26 Kasım 2017 9 min read 2 10 8,877 Paylaş ! Facebook Paylaş ! Twitter Paylaş ! Google+ Paylaş ! Reddit Paylaş ! Pinterest Paylaş ! Linkedin Paylaş ! Tumblr Bu yazımızda Matlab programını kullanarak histogram fonksiyonunun kullanımını, rand fonksiyonunun nasıl işe yaradığını ve çeşitli komutları göstermek istedim. Öncelikle kodumuzda karşılaşacağımız bazı kavramları açıklamamda fayda var. rand() : Bu fonksiyon bize rastgele sayı oluşturma olanağı sağlıyor. Mesela rand(1) yazarsak bize 0 ile 1 arasında bir sayı verecektir. Mesela zar atmak için round(1+5*rand(1,6)) yazarsak çıktı olarak 1 ile 6 arasında değerler alırız. round() : Yukarıda round yazdım. Bu fonksiyonun görevi ise en yakın tam sayıya yuvarlamasıdır. Buna benzer olarak ceil() ve floor() fonksiyonları da var. format rat : Bu komut bize çıktımız için ondalıklı sayı yerine kesirli sayı verir. Yani 0.25 yerine 1/4 diye gösterir. Olasılık gösterimlerinde kullanışlı oluyor. histogram() : Matlab programında bir grafik gösterme biçimidir. Yazının sonuna bir örneğini atarım. factorial() : Bu fonksiyon bildiğimiz faktöriyeli hesaplıyor. factorial(5)=120 çıktısını veriyor. Şimdi bir örnek üzerinden gidelim ve kodumuzu yazalım. ÖRNEK 6 yüzlü düzgün iki zarı atıyoruz, bu zarlardan gelen değerlerin toplamı n oluyor. Daha sonra bir bozuk para peşpeşe n(2 zar atışımızdan gelen değer toplamı) kere atılıyor, bu n atıştan gelen toplam yazı sayısıda k olsun. Daha iyi bir sonuç alabilmek için bu işlem 10.000(daha az veya fazla da olabilir bu farketmez) kere tekrarlansın. n ve k’nın histogramlarını çizdiren ve en az 5 tane yazı gelme olasılığını hesaplayan Matlab kodunu yazalım. ÇÖZÜM Öncelikle yazmış olduğum kodu buraya atıyorum ve açıklamalarını kodun altına yazmak istiyorum. [php] clc,clear all; format rat %%%Buğra Unutmaz 25.11.2017 for k=1:10000 x=round(1+5*rand(1,6)); y=round(1+5*rand(1,6)); n=x+y; toplam=0; toplam1=0; toplam2=0; toplam3=0; toplam4=0; toplam5=0; for i=1:n(1) bugra=round(rand(1)); if bugra==1 toplam=toplam+1; end end for i=1:n(2) bugra=round(rand(1)); if bugra==1 toplam1=toplam1+1; end end for i=1:n(3) bugra=round(rand(1)); if bugra==1 toplam2=toplam2+1; end end for i=1:n(4) bugra=round(rand(1)); if bugra==1 toplam3=toplam3+1; end end for i=1:n(5) bugra=round(rand(1)); if bugra==1 toplam4=toplam4+1; end end for i=1:n(6) bugra=round(rand(1)); if bugra==1 toplam5=toplam5+1; end end end if n(1)>= 5 olasilik1=factorial(n(1))/(factorial(n(1)-5)*factorial(5))/2^n(1); else olasilik1=0; end if n(2)>= 5 olasilik2=factorial(n(2))/(factorial(n(2)-5)*factorial(5))/2^n(2); else olasilik2=0; end if n(3)>= 5 olasilik3=factorial(n(3))/(factorial(n(3)-5)*factorial(5))/2^n(3); else olasilik3=0; end if n(4)>= 5 olasilik4=factorial(n(4))/(factorial(n(4)-5)*factorial(5))/2^n(4); else olasilik4=0; end if n(5)>= 5 olasilik5=factorial(n(5))/(factorial(n(5)-5)*factorial(5))/2^n(5); else olasilik5=0; end if n(6)>= 5 olasilik6=factorial(n(6))/(factorial(n(6)-5)*factorial(5))/2^n(6); else olasilik6=0; end disp(‘sirayla olasiliklar’) olasilik=[olasilik1 olasilik2 olasilik3 olasilik4 olasilik5 olasilik6] n; k=[toplam toplam1 toplam2 toplam3 toplam4 toplam5]; histogram(k,’FaceColor’,’green’) n; hold on histogram(n,’FaceColor’,’black’) [/php] Açıklamalar : Soruya göre biraz uzun bir kod ama mantığını kavramak için uzun olması daha iyi. Öncelikle en üstte klasik olarak clc, clear all ekledik. Daha sonra formatımızı seçtik. Formatımız istenirse farklı yerlere de koyulabilir ve ara işlemlerde farklı formatta sonuçlar alabiliriz. 4. satırdaki for k=1:10000 ise bu işlemin 10 bin kere tekrarlanmasını sağlıyor. İsteğe göre farklı harf de kullanabilirsiniz. 5. ve 6. satırımızda ise 2 adet zar tanımlamış olduk ve bu zarlardan gelen toplamları n değişkenimize atadık. n değişkenimiz 1×6’lık bir matris oldu(çünkü x ve ye öyleler). Hemen alt tarafında toplam değişkenleri tanımladık ki onların nedenini kodun ilerisinde söylerim. Daha sonra bir for açtım ve her n değerimiz için ayrı ayrı yazı gelme sayılarının toplamlarını aldım. n 1×6’lık bir matris olduğu için n(1), n(2) gibi alabiliyoruz. Olasılık hesabına geçince de dikkat etmemiz gereken olay şu. En az 5 gelme olasılığı isteniyor. Bu noktada n’imizin 5ten küçük olma durumu da var. Bunun için eğer n ‘ten küçükse olasılığımız 0 olmalı çünkü gerçekten de sıfırdır. Normal olasılık formülümüzü yine her n değerimiz için uyguladık. En son ise bizden istenen çıktılarımızı aldık. histogram fonksiyonunu kullanırken renk değişimi yaptık. Ben yeşil ve siyah birleşimi sevdiğim için green ve black yazdım. Ana renkler olduğu sürece istediğinizi yazabilirsiniz. görsel temsilidir Başka yazılarda görüşmek üzere kendinize iyi bakınız… Buğra UNUTMAZ