<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://tunahanbilgic.dev/feed.xml" rel="self" type="application/atom+xml"/><link href="https://tunahanbilgic.dev/" rel="alternate" type="text/html" hreflang="en"/><updated>2026-08-23T18:47:15+00:00</updated><id>https://tunahanbilgic.dev/feed.xml</id><title type="html">Tunahan Bilgiç | Data Analyst</title><subtitle>Tunahan Bilgiç | Data Analyst - Power BI Dashboars, Optimization Models and ETL Projects. </subtitle><entry><title type="html">Python Sayı Tabanı Dönüşümleri (Taban Aritmetiği)</title><link href="https://tunahanbilgic.dev/kod/python-sayi-tabani-donusumleri/" rel="alternate" type="text/html" title="Python Sayı Tabanı Dönüşümleri (Taban Aritmetiği)"/><published>2021-01-24T00:59:00+00:00</published><updated>2021-01-24T00:59:00+00:00</updated><id>https://tunahanbilgic.dev/kod/python-sayi-tabani-donusumleri</id><content type="html" xml:base="https://tunahanbilgic.dev/kod/python-sayi-tabani-donusumleri/"><![CDATA[<p>Bu yazımızda, Python kullanarak taban aritmetiği yapan programdan oluşturacağız. Biz günlük hayatta onlu(decimal) sayı sistemini kullanırız. Bilgisayarlar ikili(binary) sayı sistemini kullanır. Bu yazımızda, bir başka sayı tabanındaki sayıyı onlu sayı tabanına ve onlu sayı tabanındaki sayıyı bir başka sayı tabanına çeviren programlar yazacağız. Yazacağımız programlar pozitif ve ondalıksız sayılar için olacak. Lafı daha fazla uzatmadan kodlamaya geçelim.</p> <h1>Başka Bir Sayı Tabanından Onlu Sayı Tabanına Dönüşüm Yapan Python Programı</h1> <p>Başka bir sayı tabanından onlu sayı tabanına dönüşüm yaparken; sayının basamaklarındaki ifadeler(rakam veya harf olabilir), üssü olan taban ile çarpılır ve bu çarpımların toplamıyla onlu sayı sistemindeki karşılığı bulunur. Örnek olarak, üçlü sayı tabanında verilen 21 sayısını onlu sayı tabanına dönüşümü:</p> \[(21)_3 = 2 \times 3^1 + 1 \times 3^0, \quad (21)_3 = 7 \text{ şeklindedir.}\] <p>Tabanın üssü; son basamaktan itibaren, 0’dan başlayarak birer birer artmaktadır. Ayrıca dikkat edilmesi gereken bir başka kısım ise, sayının basamağındaki rakamlar tabandan büyük olamaz. Kodumuzu bu konulara dikkat ederek oluşturacağız. Kodlamaya geçelim:</p> <div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># kodlamaogreniyorum.com, 2021
</span><span class="k">def</span> <span class="nf">onlutabanaçevir</span><span class="p">(</span><span class="n">sayı</span><span class="p">,</span> <span class="n">taban</span><span class="p">):</span>
    <span class="n">alt</span> <span class="o">=</span> <span class="nb">str</span><span class="p">.</span><span class="nf">maketrans</span><span class="p">(</span><span class="sh">"</span><span class="s">0123456789</span><span class="sh">"</span><span class="p">,</span> <span class="sh">"</span><span class="s">₀₁₂₃₄₅₆₇₈₉</span><span class="sh">"</span><span class="p">)</span>
    <span class="n">sayı</span> <span class="o">=</span> <span class="nf">abs</span><span class="p">(</span><span class="nf">int</span><span class="p">(</span><span class="n">sayı</span><span class="p">))</span>
    <span class="n">taban</span> <span class="o">=</span> <span class="nf">abs</span><span class="p">(</span><span class="nf">int</span><span class="p">(</span><span class="n">taban</span><span class="p">))</span>
    <span class="n">sayı</span> <span class="o">=</span> <span class="nf">str</span><span class="p">(</span><span class="n">sayı</span><span class="p">)</span>
    <span class="nf">if </span><span class="p">(</span><span class="nf">all</span><span class="p">(</span><span class="nf">int</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="o">&lt;</span> <span class="n">taban</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">sayı</span><span class="p">))</span> <span class="ow">and</span> <span class="mi">1</span> <span class="o">&lt;</span> <span class="n">taban</span> <span class="o">&lt;</span> <span class="mi">10</span><span class="p">:</span>
        <span class="n">çevrilmiş_sayı</span> <span class="o">=</span> <span class="mi">0</span>
        <span class="n">üs</span> <span class="o">=</span> <span class="mi">0</span>
        <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nf">reversed</span><span class="p">(</span><span class="n">sayı</span><span class="p">):</span>
            <span class="n">çevrilmiş_sayı</span> <span class="o">+=</span> <span class="nf">int</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="o">*</span> <span class="n">taban</span> <span class="o">**</span> <span class="n">üs</span>
            <span class="n">üs</span> <span class="o">+=</span> <span class="mi">1</span>
        <span class="nf">print</span><span class="p">(</span><span class="sh">"</span><span class="s">(%s)%s = %d</span><span class="se">\n</span><span class="sh">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">sayı</span><span class="p">,</span> <span class="nf">str</span><span class="p">(</span><span class="n">taban</span><span class="p">).</span><span class="nf">translate</span><span class="p">(</span><span class="n">alt</span><span class="p">),</span> <span class="n">çevrilmiş_sayı</span><span class="p">))</span>
    <span class="k">else</span><span class="p">:</span>
        <span class="nf">print</span><span class="p">(</span><span class="sh">'</span><span class="s">Girdiğiniz sayı ile taban uyumsuz!</span><span class="se">\n</span><span class="sh">'</span><span class="p">)</span>
</code></pre></div></div> <p>3.satırda yazdığımız <code class="language-plaintext highlighter-rouge">“alt = str.maketrans("0123456789", "₀₁₂₃₄₅₆₇₈₉")”</code> komutunu; ekrana çıktı yazdırırken, tabanın alt karakter olarak gelmesi için kullandık. 4. ve 5. satırda yazdığımız ifadeler ile hatalı sayı veya taban girilmesini önlemiş olduk. 7. satırdaki “(all(int(i) &lt; taban for i in sayı))” koşulu, sayının basamaklarındaki rakamların tabandan küçük olmasını garanti eder. <code class="language-plaintext highlighter-rouge">“for i in reversed(sayı):”</code> döngüsündeki “i”, sayının son basamağından başlayarak, her basamaktaki rakamları ifade etmektedir.</p> <p><img src="/assets/kod/python/python67.webp" alt=""/></p> <h1>Onlu Sayı Tabanından Bir Başka Sayı Tabanına Dönüşüm Yapan Python Programı</h1> <p>Onlu sayı tabanından bir başka sayı tabanına dönüşüm yapmak için; sayı, tabandan küçük kalıncaya kadar sürekli olarak tabana bölünür. Bu işlem sonrasında, ilk olarak bölüm ve sondan başa olacak sırayla tüm kalanlar soldan sağa doğru yazılarak yeni sayı bulunur. Örnek olarak, 137 sayının altılı sayı tabanına dönüşümü:</p> \[137 = (x)_6\] \[\frac{137}{6} = 22 \quad \text{Kalan: } \textcolor{orange}{5}\] \[\frac{22}{6} = \textcolor{blue}{3} \quad \text{Kalan: } \textcolor{orange}{4}\] \[137 = (345)_6 \text{ şeklindedir.}\] <div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># kodlamaogreniyorum.com, 2021
</span><span class="k">def</span> <span class="nf">tabandeğiştir</span><span class="p">(</span><span class="n">sayı</span><span class="p">,</span> <span class="n">taban</span><span class="p">):</span>
    <span class="n">alt</span> <span class="o">=</span> <span class="nb">str</span><span class="p">.</span><span class="nf">maketrans</span><span class="p">(</span><span class="sh">"</span><span class="s">0123456789</span><span class="sh">"</span><span class="p">,</span> <span class="sh">"</span><span class="s">₀₁₂₃₄₅₆₇₈₉</span><span class="sh">"</span><span class="p">)</span>
    <span class="n">taban</span> <span class="o">=</span> <span class="nf">int</span><span class="p">(</span><span class="n">taban</span><span class="p">)</span>
    <span class="k">if</span> <span class="mi">1</span> <span class="o">&lt;</span> <span class="n">taban</span> <span class="o">&lt;</span> <span class="mi">10</span><span class="p">:</span>
        <span class="n">sayı</span> <span class="o">=</span> <span class="nf">abs</span><span class="p">(</span><span class="nf">int</span><span class="p">(</span><span class="n">sayı</span><span class="p">))</span>
        <span class="n">sayı2</span> <span class="o">=</span> <span class="n">sayı</span>
        <span class="n">çevrilmiş_sayı</span> <span class="o">=</span> <span class="p">[]</span>
        <span class="k">while</span> <span class="n">sayı</span> <span class="o">&gt;=</span> <span class="n">taban</span><span class="p">:</span>
            <span class="n">kalan</span> <span class="o">=</span> <span class="n">sayı</span> <span class="o">%</span> <span class="n">taban</span>
            <span class="n">sayı</span> <span class="o">=</span> <span class="nf">int</span><span class="p">(</span><span class="n">sayı</span> <span class="o">/</span> <span class="n">taban</span><span class="p">)</span>
            <span class="n">çevrilmiş_sayı</span><span class="p">.</span><span class="nf">insert</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nf">str</span><span class="p">(</span><span class="n">kalan</span><span class="p">))</span>
            <span class="k">if</span> <span class="n">sayı</span> <span class="o">&lt;</span> <span class="n">taban</span><span class="p">:</span>
                <span class="n">çevrilmiş_sayı</span><span class="p">.</span><span class="nf">insert</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nf">str</span><span class="p">(</span><span class="n">sayı</span><span class="p">))</span>
        <span class="n">çevrilmiş_sayı</span> <span class="o">=</span> <span class="sh">""</span><span class="p">.</span><span class="nf">join</span><span class="p">(</span><span class="n">çevrilmiş_sayı</span><span class="p">)</span>
        <span class="nf">print</span><span class="p">(</span><span class="sh">"</span><span class="s">%d = (%s)%s</span><span class="se">\n</span><span class="sh">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">sayı2</span><span class="p">,</span> <span class="n">çevrilmiş_sayı</span><span class="p">,</span> <span class="nf">str</span><span class="p">(</span><span class="n">taban</span><span class="p">).</span><span class="nf">translate</span><span class="p">(</span><span class="n">alt</span><span class="p">)))</span>
    <span class="k">else</span><span class="p">:</span>
        <span class="nf">print</span><span class="p">(</span><span class="sh">'</span><span class="s">Tabanı kontrol edin!</span><span class="se">\n</span><span class="sh">'</span><span class="p">)</span>
</code></pre></div></div> <p>3.satırda yazdığımız “alt = str.maketrans(“0123456789”, “₀₁₂₃₄₅₆₇₈₉”)” komutunu; ekrana çıktı yazdırırken, tabanın alt karakter olarak gelmesi için kullandık. 4. ve 6. satırda yazdığımız ifadeler ile hatalı sayı veya taban girilmesini önlemiş olduk. “while sayı &gt;= taban:” ifadesi ile döngünün, sayı tabandan küçük kalıncaya kadar devam etmesini sağladık. “çevrilmiş_sayı.insert(0, str(kalan))” ifadesi ile sondan başa ekleme yapmayı sağladık. “çevrilmiş_sayı = ““.join(çevrilmiş_sayı)” ifadesi ile “çevrilmiş_sayı” değişkenini liste olmaktan çıkardık.</p> <p><img src="/assets/kod/python/python68.webp" alt=""/></p> <p>Bütün <strong>Python kodlarına</strong> Github sayfam aracılığı ile erişebilirsiniz. Github sayfamın linkine aşağıdan ulaşabilirsiniz. Görüşmek üzere!</p> <p>Github: <a href="https://github.com/TunahanBilgic/kodlamaogreniyorum/tree/main/python">Github Python</a></p> <p>Sitemize destek olmak isteyen sponsorlar için link: <a href="https://patreon.com/tunahanbilgic">Patreon</a></p>]]></content><author><name></name></author><category term="python-ornek-uygulamalar"/><category term="taban dönüşüm"/><category term="python"/><summary type="html"><![CDATA[python-ornek-uygulamalar]]></summary></entry><entry><title type="html">Python Hesap Makinesi Programı</title><link href="https://tunahanbilgic.dev/kod/python-hesap-makinesi/" rel="alternate" type="text/html" title="Python Hesap Makinesi Programı"/><published>2021-01-22T09:58:00+00:00</published><updated>2021-01-22T09:58:00+00:00</updated><id>https://tunahanbilgic.dev/kod/python-hesap-makinesi</id><content type="html" xml:base="https://tunahanbilgic.dev/kod/python-hesap-makinesi/"><![CDATA[<p>Bu yazımızda, Python’da <a href="https://www.kodlamaogreniyorum.com/python-while-dongusu/">“while” döngüsünü</a> ve <a href="https://www.kodlamaogreniyorum.com/python-if-kosul-deyimi/">“if-elif” koşul deyimini</a> kullanarak dört işlem yapan hesap makinesi programı oluşturacağız. Daha önceki yazılarda bu yapıları açıklamıştık. Konuda eksiğiniz varsa inceleyebilirsiniz.</p> <p>Hesap makineleri, kullanıcı sonlandırana kadar işlem yapmaya devam eder. Bu sebeple <a href="https://www.kodlamaogreniyorum.com/python-while-dongusu/">“while” döngüsünü</a> kullanacağız. Böylelikle, programımız kullanıcı çıkış yapana kadar hesap yapamaya devam edecek. Programın mantığı zor olmadığı için direkt kodlamaya geçelim:</p> <div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># kodlamaogreniyorum.com,2021
</span><span class="nf">print</span><span class="p">(</span><span class="sh">"</span><span class="s">Basit Hesap Makinesi..</span><span class="se">\n</span><span class="sh">"</span><span class="p">)</span>
<span class="nf">print</span><span class="p">(</span><span class="sh">"</span><span class="s">Toplama: </span><span class="sh">'</span><span class="s">+</span><span class="sh">'</span><span class="s"> veya </span><span class="sh">'</span><span class="s">topla</span><span class="sh">'</span><span class="se">\n</span><span class="sh">"</span>
      <span class="sh">"</span><span class="s">Çıkarma: </span><span class="sh">'</span><span class="s">-</span><span class="sh">'</span><span class="s"> veya </span><span class="sh">'</span><span class="s">çıkar</span><span class="sh">'</span><span class="se">\n</span><span class="sh">"</span>
      <span class="sh">"</span><span class="s">Çarpma: </span><span class="sh">'</span><span class="s">*</span><span class="sh">'</span><span class="s"> veya </span><span class="sh">'</span><span class="s">çarp</span><span class="sh">'</span><span class="se">\n</span><span class="sh">"</span>
      <span class="sh">"</span><span class="s">Bölme: </span><span class="sh">'</span><span class="s">/</span><span class="sh">'</span><span class="s"> veya </span><span class="sh">'</span><span class="s">böl</span><span class="sh">'</span><span class="se">\n</span><span class="sh">"</span>
      <span class="sh">"</span><span class="s">Çıkış: </span><span class="sh">'</span><span class="s">=</span><span class="sh">'</span><span class="s"> veya </span><span class="sh">'</span><span class="s">çıkış</span><span class="sh">'</span><span class="se">\n</span><span class="sh">"</span><span class="p">)</span>
<span class="n">sayı</span> <span class="o">=</span> <span class="nf">int</span><span class="p">(</span><span class="nf">input</span><span class="p">(</span><span class="sh">'</span><span class="s">İşlem Yapılacak Sayı: </span><span class="sh">'</span><span class="p">))</span>
<span class="k">while</span> <span class="bp">True</span><span class="p">:</span>
    <span class="n">işlem</span> <span class="o">=</span> <span class="nf">input</span><span class="p">(</span><span class="sh">'</span><span class="s">Yapılacak İşlem: </span><span class="sh">'</span><span class="p">)</span>
    <span class="k">if</span> <span class="n">işlem</span> <span class="o">==</span> <span class="sh">'</span><span class="s">+</span><span class="sh">'</span> <span class="ow">or</span> <span class="n">işlem</span><span class="p">.</span><span class="nf">lower</span><span class="p">()</span> <span class="o">==</span> <span class="sh">'</span><span class="s">topla</span><span class="sh">'</span><span class="p">:</span>
        <span class="n">yeni_sayı</span> <span class="o">=</span> <span class="nf">float</span><span class="p">(</span><span class="nf">input</span><span class="p">(</span><span class="sh">'</span><span class="s">İşlem Yapılacak Sayı: </span><span class="sh">'</span><span class="p">))</span>
        <span class="n">sayı</span> <span class="o">+=</span> <span class="n">yeni_sayı</span>
    <span class="k">elif</span> <span class="n">işlem</span> <span class="o">==</span> <span class="sh">'</span><span class="s">-</span><span class="sh">'</span> <span class="ow">or</span> <span class="n">işlem</span><span class="p">.</span><span class="nf">lower</span><span class="p">()</span> <span class="o">==</span> <span class="sh">'</span><span class="s">çıkar</span><span class="sh">'</span><span class="p">:</span>
        <span class="n">yeni_sayı</span> <span class="o">=</span> <span class="nf">float</span><span class="p">(</span><span class="nf">input</span><span class="p">(</span><span class="sh">'</span><span class="s">İşlem Yapılacak Sayı: </span><span class="sh">'</span><span class="p">))</span>
        <span class="n">sayı</span> <span class="o">-=</span> <span class="n">yeni_sayı</span>
    <span class="k">elif</span> <span class="n">işlem</span> <span class="o">==</span> <span class="sh">'</span><span class="s">*</span><span class="sh">'</span> <span class="ow">or</span> <span class="n">işlem</span><span class="p">.</span><span class="nf">lower</span><span class="p">()</span> <span class="o">==</span> <span class="sh">'</span><span class="s">çarp</span><span class="sh">'</span><span class="p">:</span>
        <span class="n">yeni_sayı</span> <span class="o">=</span> <span class="nf">float</span><span class="p">(</span><span class="nf">input</span><span class="p">(</span><span class="sh">'</span><span class="s">İşlem Yapılacak Sayı: </span><span class="sh">'</span><span class="p">))</span>
        <span class="n">sayı</span> <span class="o">*=</span> <span class="n">yeni_sayı</span>
    <span class="k">elif</span> <span class="n">işlem</span> <span class="o">==</span> <span class="sh">'</span><span class="s">/</span><span class="sh">'</span> <span class="ow">or</span> <span class="n">işlem</span><span class="p">.</span><span class="nf">lower</span><span class="p">()</span> <span class="o">==</span> <span class="sh">'</span><span class="s">böl</span><span class="sh">'</span><span class="p">:</span>
        <span class="n">yeni_sayı</span> <span class="o">=</span> <span class="nf">float</span><span class="p">(</span><span class="nf">input</span><span class="p">(</span><span class="sh">'</span><span class="s">İşlem Yapılacak Sayı: </span><span class="sh">'</span><span class="p">))</span>
        <span class="n">sayı</span> <span class="o">/=</span> <span class="n">yeni_sayı</span>
    <span class="k">elif</span> <span class="n">işlem</span> <span class="o">==</span> <span class="sh">'</span><span class="s">=</span><span class="sh">'</span> <span class="ow">or</span> <span class="n">işlem</span><span class="p">.</span><span class="nf">lower</span><span class="p">()</span> <span class="o">==</span> <span class="sh">'</span><span class="s">çıkış</span><span class="sh">'</span><span class="p">:</span>
        <span class="nf">print</span><span class="p">(</span><span class="sh">'</span><span class="s">= %g</span><span class="se">\n</span><span class="sh">'</span> <span class="o">%</span> <span class="n">sayı</span><span class="p">)</span>
        <span class="k">break</span>
    <span class="k">else</span><span class="p">:</span>
        <span class="nf">print</span><span class="p">(</span><span class="sh">'</span><span class="s">Hatalı giriş yaptınız.</span><span class="se">\n</span><span class="sh">'</span><span class="p">)</span>
    <span class="nf">print</span><span class="p">(</span><span class="sh">'</span><span class="s">= %g</span><span class="se">\n</span><span class="sh">'</span> <span class="o">%</span> <span class="n">sayı</span><span class="p">)</span>
</code></pre></div></div> <p><img src="/assets/kod/python/python62.png" alt=""/></p> <p>Oluşturduğumuz programda, program hesaplamaya başlamadan önce kullanıcıya işlemler ile ilgili bilgi verdik. Ayrıca yaptığımız ufak eklemeler sayesinde, kullanıcı yapmak istediği işlemi hem operatör(“+”, “-“, “*” veya “/”) aracılığıyla hem de yazarak yapabilme seçeneğine sahip oldu. Ayrıca “lower()” fonksiyonu sayesinde büyük/küçük harf hatalarından kurtulmuş olduk.</p> <p>Yeni içerikler için sitemizi takip etmeyi unutmayın.</p> <p>Bütün <strong>Python kodlarına</strong> Github sayfam aracılığı ile erişebilirsiniz. Github sayfamın linkine aşağıdan ulaşabilirsiniz. Görüşmek üzere!</p> <p>Github: <a href="https://github.com/TunahanBilgic/kodlamaogreniyorum/tree/main/python">Github Python</a></p> <p>Sitemize destek olmak isteyen sponsorlar için link: <a href="https://patreon.com/tunahanbilgic">Patreon</a></p>]]></content><author><name></name></author><category term="python-ornek-uygulamalar"/><category term="hesap makinesi"/><category term="python"/><summary type="html"><![CDATA[Python'da “while” döngüsünü ve “if-elif” koşul deyimini kullanarak dört işlem yapan hesap makinesi programı]]></summary></entry><entry><title type="html">Matlab Hesap Makinesi Programı</title><link href="https://tunahanbilgic.dev/kod/matlab-hesap-makinesi/" rel="alternate" type="text/html" title="Matlab Hesap Makinesi Programı"/><published>2020-12-26T19:32:00+00:00</published><updated>2020-12-26T19:32:00+00:00</updated><id>https://tunahanbilgic.dev/kod/matlab-hesap-makinesi</id><content type="html" xml:base="https://tunahanbilgic.dev/kod/matlab-hesap-makinesi/"><![CDATA[<p>Bu yazımızda, MATLAB’da “switch – case” yapısını kullanarak dört işlem yapan hesap makinesi programı oluşturacağız. <a href="https://www.kodlamaogreniyorum.com/matlab-switch-case-yapisi/">Bir önceki yazımızda</a> “switch – case” yapısını açıklamıştık. Konuda eksiğiniz varsa inceleyebilirsiniz.</p> <p>Hesap makineleri, kullanıcı sonlandırana kadar işlem yapmaya devam eder. Bu sebeple “while” döngüsünü kullanacağız. Böylelikle, programımız kullanıcı çıkış yapana kadar hesap yapamaya devam edecek. Programın mantığı zor olmadığı için direkt kodlamaya geçelim:</p> <div class="language-matlab highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">%kodlamaogreniyorum.com, 2020</span>
<span class="nb">clear</span> <span class="nb">all</span>
<span class="nb">clc</span>
<span class="nb">fprintf</span><span class="p">(</span><span class="s1">'Basit Hesap Makinesi...\n'</span><span class="p">);</span>
<span class="nb">fprintf</span><span class="p">([</span><span class="s1">'Toplama: "+" veya "topla"\n'</span><span class="k">...</span>
            <span class="s1">'Çıkarma: "-" veya "çıkar"\n'</span><span class="k">...</span>
            <span class="s1">'Çarpma: "*" veya "çarp"\n'</span><span class="k">...</span>
            <span class="s1">'Bölme: "/" veya "böl"\n'</span><span class="k">...</span>
            <span class="s1">'Çıkış: "=" veya "çıkış"\n'</span><span class="p">]);</span>
<span class="n">sayi</span> <span class="o">=</span> <span class="nb">input</span><span class="p">(</span><span class="s1">'İşlem yapılacak sayıyı girin: '</span><span class="p">);</span>
<span class="n">islem</span> <span class="o">=</span> <span class="s1">''</span><span class="p">;</span>
<span class="k">while</span> <span class="n">islem</span> <span class="o">~=</span> <span class="s2">"="</span>
    <span class="n">islem</span> <span class="o">=</span> <span class="nb">input</span><span class="p">(</span><span class="s1">'Yapılacak işlemi girin: '</span><span class="p">,</span><span class="s1">'s'</span><span class="p">);</span>
    <span class="k">switch</span> <span class="n">islem</span>
        <span class="k">case</span> <span class="p">{</span><span class="s2">"+"</span><span class="p">,</span> <span class="s2">"topla"</span><span class="p">}</span>
            <span class="n">yeni_sayi</span> <span class="o">=</span> <span class="nb">input</span><span class="p">(</span><span class="s1">'İşlem yapılacak sayıyı girin: '</span><span class="p">);</span>
            <span class="n">sayi</span> <span class="o">=</span> <span class="n">sayi</span> <span class="o">+</span> <span class="n">yeni_sayi</span><span class="p">;</span>
        <span class="k">case</span> <span class="p">{</span><span class="s2">"-"</span><span class="p">,</span> <span class="s2">"çıkar"</span><span class="p">}</span>
            <span class="n">yeni_sayi</span> <span class="o">=</span> <span class="nb">input</span><span class="p">(</span><span class="s1">'İşlem yapılacak sayıyı girin: '</span><span class="p">);</span>
            <span class="n">sayi</span> <span class="o">=</span> <span class="n">sayi</span> <span class="o">-</span> <span class="n">yeni_sayi</span><span class="p">;</span>
        <span class="k">case</span> <span class="p">{</span><span class="s2">"*"</span><span class="p">,</span> <span class="s2">"çarp"</span><span class="p">}</span>
            <span class="n">yeni_sayi</span> <span class="o">=</span> <span class="nb">input</span><span class="p">(</span><span class="s1">'İşlem yapılacak sayıyı girin: '</span><span class="p">);</span>
            <span class="n">sayi</span> <span class="o">=</span> <span class="n">sayi</span> <span class="o">*</span> <span class="n">yeni_sayi</span><span class="p">;</span>
        <span class="k">case</span> <span class="p">{</span><span class="s2">"/"</span><span class="p">,</span> <span class="s2">"böl"</span><span class="p">}</span>
            <span class="n">yeni_sayi</span> <span class="o">=</span> <span class="nb">input</span><span class="p">(</span><span class="s1">'İşlem yapılacak sayıyı girin: '</span><span class="p">);</span>
            <span class="n">sayi</span> <span class="o">=</span> <span class="n">sayi</span> <span class="p">/</span> <span class="n">yeni_sayi</span><span class="p">;</span>
        <span class="k">case</span> <span class="p">{</span><span class="s2">"="</span><span class="p">,</span> <span class="s2">"çıkış"</span><span class="p">}</span>
            <span class="nb">fprintf</span><span class="p">(</span><span class="s1">'= %g\n'</span><span class="p">,</span><span class="n">sayi</span><span class="p">);</span>
            <span class="k">break</span>
        <span class="k">otherwise</span>
            <span class="nb">fprintf</span><span class="p">(</span><span class="s1">'Hatali işlem girişi yaptınız.\n'</span><span class="p">);</span>
    <span class="k">end</span>
    <span class="nb">fprintf</span><span class="p">(</span><span class="s1">'= %g\n'</span><span class="p">,</span><span class="n">sayi</span><span class="p">);</span>
<span class="k">end</span>
</code></pre></div></div> <div class="col-sm-6 mx-auto p-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/kod/matlab/matlab77.webp" sizes="95vw"/> <img src="/assets/kod/matlab/matlab77.webp" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="lazy" onerror="this.onerror=null; document.querySelectorAll('.responsive-img-srcset').forEach(function (n) { n.remove(); });"/> </picture> </figure> </div> <p>Oluşturduğumuz programda, program hesaplamaya başlamadan önce kullanıcıya işlemler ile ilgili bilgi verdik. Ayrıca yaptığımız ufak eklemeler sayesinde, kullanıcı yapmak istediği işlemi hem operatör(“+”, “-“, “*” veya “/”) aracılığıyla hem de yazarak yapabilme seçeneğine sahip oldu.</p> <p>Yeni içerikler için sitemizi takip etmeyi unutmayın.</p> <p>Bütün <strong>MATLAB kodlarına</strong> Github sayfam aracılığı ile erişebilirsiniz. Github sayfamın linkine aşağıdan ulaşabilirsiniz. Görüşmek üzere!</p> <p>Github: <a href="https://github.com/TunahanBilgic/kodlamaogreniyorum/tree/main/matlab">Github MATLAB</a></p> <p>Sitemize destek olmak isteyen sponsorlar için link: <a href="https://patreon.com/tunahanbilgic">Patreon</a></p>]]></content><author><name></name></author><category term="matlab-ornek-uygulamalar"/><category term="switch"/><category term="case"/><category term="hesap makinesi"/><category term="matlab"/><summary type="html"><![CDATA[Matlab'da dört işlem yapan hesap makinesi programı]]></summary></entry><entry><title type="html">MATLAB Switch – Case Yapısı</title><link href="https://tunahanbilgic.dev/kod/matlab-switch-case-yapisi/" rel="alternate" type="text/html" title="MATLAB Switch – Case Yapısı"/><published>2020-12-26T18:06:00+00:00</published><updated>2020-12-26T18:06:00+00:00</updated><id>https://tunahanbilgic.dev/kod/matlab-switch-case-yapisi</id><content type="html" xml:base="https://tunahanbilgic.dev/kod/matlab-switch-case-yapisi/"><![CDATA[<p>Bu yazımızda, MATLAB’da bulunan “switch – case” yapısına değineceğiz. Bir değişkenin farklı değerleri için işlem yapılacaksa, “switch – case” yapısı bize bu konuda yardım eder. “switch – case” yapısının temel amacı; “if – elseif” koşul deyimlerinde yazılan uzun koşulların yerine, kısa hatta tek karakter yazımı ile aynı işlevi görmektir. Örneğin; “x” isminde bir değişkenin, “-1“,”0“, “1” ve “2” olmak üzere dört tane alabileceği değer olsun. Biz bu değerlere göre farklı işlemler yaptırmak isteyelim. Bu durumu, “if-elseif” kullanarak yazalım:</p> <div class="language-matlab highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">if</span> <span class="n">x</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span>
    <span class="c1">%işlemler</span>
<span class="k">elseif</span> <span class="n">x</span> <span class="o">==</span> <span class="mi">0</span>
    <span class="c1">%işlemler</span>
<span class="k">elseif</span> <span class="n">x</span> <span class="o">==</span> <span class="mi">1</span>
    <span class="c1">%işlemler</span>
<span class="k">else</span> <span class="c1">%veya "elseif x == 2"</span>
    <span class="c1">%işlemler</span>
<span class="k">end</span>
</code></pre></div></div> <p>Aynı durumu “switch – case” yapısı ile yazalım:</p> <div class="language-matlab highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">%syntax:</span>
<span class="k">switch</span> <span class="n">degisken</span>
    <span class="k">case</span> <span class="n">deger</span> <span class="mi">1</span>
        <span class="c1">%işlemler</span>
    <span class="k">case</span> <span class="n">deger</span> <span class="n">n</span>
        <span class="c1">%işlemler</span>
    <span class="k">otherwise</span>
        <span class="c1">%işlemler</span>
<span class="k">end</span>
</code></pre></div></div> <div class="language-matlab highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">switch</span> <span class="n">x</span>
    <span class="k">case</span> <span class="o">-</span><span class="mi">1</span>
        <span class="c1">%işlemler</span>
    <span class="k">case</span> <span class="mi">0</span>
        <span class="c1">%işlemler</span>
    <span class="k">case</span> <span class="mi">1</span>
        <span class="c1">%işlemler</span>
    <span class="k">otherwise</span> <span class="c1">%veya "case 2"</span>
        <span class="c1">%işlemler</span>
<span class="k">end</span>
</code></pre></div></div> <p>Eğer “-1” ile “0” değerlerinde aynı işlemleri, diğer değerlerinde de farklı işlemler yaptırmak istersek:</p> <div class="language-matlab highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">if</span> <span class="n">x</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span> <span class="o">||</span> <span class="n">x</span> <span class="o">==</span> <span class="mi">0</span>
        <span class="c1">%işlemler</span>
<span class="k">elseif</span> <span class="n">x</span> <span class="o">==</span> <span class="mi">1</span>
        <span class="c1">%işlemler</span>
<span class="k">else</span> <span class="c1">%veya x == 2</span>
        <span class="c1">%işlemler</span>
<span class="k">end</span>
</code></pre></div></div> <div class="language-matlab highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">switch</span> <span class="n">x</span>
    <span class="k">case</span> <span class="p">{</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">}</span>
        <span class="c1">%işlemler</span>
    <span class="k">case</span> <span class="mi">1</span>
        <span class="c1">%işlemler</span>
    <span class="k">otherwise</span> <span class="c1">%veya "case 2"</span>
        <span class="c1">%işlemler</span>
<span class="k">end</span>
</code></pre></div></div> <p>Gördüğünüz üzere; “switch – case” yapısı bir değişkenin farklı değerleri için farklı işlemler yapılacaksa, bize kolaylık sağlar. Bir başka örnek ile konuyu pekiştirelim. Kullanıcının seçmiş olduğu bir ayın kaç günden oluştuğunu bildiren bir program oluşturalım. Kullanıcı açılan bir pencere yoluyla isteği ayı seçsin. Sonucu yine açılan bir pencere ile kullanıcıya bildirelim. Kullanıcı hatalı bir giriş yaparsa, ekrana hata bildiren bir pencere oluşturalım. “if-elseif” koşul deyimi ile “switch-case” yapısı arasındaki farkı anlamak için, kodumuzu iki türlü de yazalım:</p> <div class="language-matlab highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">%kodlamaogreniyorum.com, 2020</span>
<span class="nb">clear</span> <span class="nb">all</span>
<span class="nb">clc</span>
<span class="n">ay</span> <span class="o">=</span> <span class="nb">inputdlg</span><span class="p">(</span><span class="s1">'Ay numarası: '</span><span class="p">,</span><span class="s1">'Giriş'</span><span class="p">);</span>
<span class="k">if</span> <span class="n">ay</span><span class="p">{</span><span class="mi">1</span><span class="p">}</span> <span class="o">==</span> <span class="s2">"2"</span>
        <span class="nb">msgbox</span><span class="p">(</span><span class="s1">'Girdiğiniz ay 28 günden oluşur.'</span><span class="p">);</span>
<span class="k">elseif</span> <span class="n">ay</span><span class="p">{</span><span class="mi">1</span><span class="p">}</span> <span class="o">==</span> <span class="s2">"1"</span> <span class="o">||</span> <span class="n">ay</span><span class="p">{</span><span class="mi">1</span><span class="p">}</span> <span class="o">==</span> <span class="s2">"3"</span> <span class="o">||</span> <span class="n">ay</span><span class="p">{</span><span class="mi">1</span><span class="p">}</span> <span class="o">==</span> <span class="s2">"5"</span> <span class="o">||</span> <span class="n">ay</span><span class="p">{</span><span class="mi">1</span><span class="p">}</span> <span class="o">==</span> <span class="s2">"7"</span> <span class="k">...</span>
      <span class="o">||</span> <span class="n">ay</span><span class="p">{</span><span class="mi">1</span><span class="p">}</span> <span class="o">==</span> <span class="s2">"8"</span> <span class="o">||</span> <span class="n">ay</span><span class="p">{</span><span class="mi">1</span><span class="p">}</span> <span class="o">==</span> <span class="s2">"10"</span> <span class="o">||</span> <span class="n">ay</span><span class="p">{</span><span class="mi">1</span><span class="p">}</span> <span class="o">==</span> <span class="s2">"12"</span>
        <span class="nb">msgbox</span><span class="p">(</span><span class="s1">'Girdiğiniz ay 31 günden oluşur.'</span><span class="p">);</span>
<span class="k">elseif</span> <span class="n">ay</span><span class="p">{</span><span class="mi">1</span><span class="p">}</span> <span class="o">==</span> <span class="s2">"4"</span> <span class="o">||</span> <span class="n">ay</span><span class="p">{</span><span class="mi">1</span><span class="p">}</span> <span class="o">==</span> <span class="s2">"6"</span> <span class="o">||</span> <span class="n">ay</span><span class="p">{</span><span class="mi">1</span><span class="p">}</span> <span class="o">==</span> <span class="s2">"9"</span> <span class="o">||</span> <span class="n">ay</span><span class="p">{</span><span class="mi">1</span><span class="p">}</span> <span class="o">==</span> <span class="s2">"11"</span>
        <span class="nb">msgbox</span><span class="p">(</span><span class="s1">'Girdiğiniz ay 30 günden oluşur.'</span><span class="p">);</span>
<span class="k">else</span>
        <span class="nb">warndlg</span><span class="p">(</span><span class="s1">'Hatalı giriş yaptınız.'</span><span class="p">,</span><span class="s1">'HATA'</span><span class="p">);</span>
<span class="k">end</span>
</code></pre></div></div> <div class="language-matlab highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">%kodlamaogreniyorum.com, 2020</span>
<span class="nb">clear</span> <span class="nb">all</span>
<span class="nb">clc</span>
<span class="n">ay</span> <span class="o">=</span> <span class="nb">inputdlg</span><span class="p">(</span><span class="s1">'Ay numarası: '</span><span class="p">,</span><span class="s1">'Giriş'</span><span class="p">);</span>
<span class="k">switch</span> <span class="n">ay</span><span class="p">{</span><span class="mi">1</span><span class="p">}</span>
    <span class="k">case</span> <span class="s1">'2'</span>
        <span class="nb">msgbox</span><span class="p">(</span><span class="s1">'Girdiğiniz ay 28 günden oluşur.'</span><span class="p">);</span>
    <span class="k">case</span> <span class="p">{</span><span class="s1">'1'</span><span class="p">,</span><span class="s1">'3'</span><span class="p">,</span><span class="s1">'5'</span><span class="p">,</span><span class="s1">'7'</span><span class="p">,</span><span class="s1">'8'</span><span class="p">,</span><span class="s1">'10'</span><span class="p">,</span><span class="s1">'12'</span><span class="p">}</span>
        <span class="nb">msgbox</span><span class="p">(</span><span class="s1">'Girdiğiniz ay 31 günden oluşur.'</span><span class="p">);</span>
    <span class="k">case</span> <span class="p">{</span><span class="s1">'4'</span><span class="p">,</span><span class="s1">'6'</span><span class="p">,</span><span class="s1">'9'</span><span class="p">,</span><span class="s1">'11'</span><span class="p">}</span>
        <span class="nb">msgbox</span><span class="p">(</span><span class="s1">'Girdiğiniz ay 30 günden oluşur.'</span><span class="p">);</span>
    <span class="k">otherwise</span>
        <span class="nb">warndlg</span><span class="p">(</span><span class="s1">'Hatalı giriş yaptınız.'</span><span class="p">,</span><span class="s1">'HATA'</span><span class="p">);</span>
<span class="k">end</span>
</code></pre></div></div> <p><img src="/assets/kod/matlab/matlab35.PNG" alt=""/></p> <p>“switch – case – otherwise” mantığının iyice kavranması için akış diyagramları:</p> <div style="display: flex; justify-content: center; gap: 10px;"> <img src="/assets/kod/matlab/matlab36.webp" alt="If-ElseIf-Else Yapısı"/> <img src="/assets/kod/matlab/matlab37.webp" alt="If-ElseIf-Else Yapısı"/> </div> <p>Bu yazımızda “switch – case” yapısına değinmiş olduk. Bir sonraki yazımızda, “switch – case” yapısını kullanarak hesap makinesi programı oluşturacağız.</p> <p>Bütün <strong>MATLAB kodlarına</strong> Github sayfam aracılığı ile erişebilirsiniz. Github sayfamın linkine aşağıdan ulaşabilirsiniz. Görüşmek üzere!</p> <p>Github: <a href="https://github.com/TunahanBilgic/kodlamaogreniyorum/tree/main/matlab">Github MATLAB</a></p> <p>Sitemize destek olmak isteyen sponsorlar için link: <a href="https://patreon.com/tunahanbilgic">Patreon</a></p>]]></content><author><name></name></author><category term="matlab-kosul-ve-donguler"/><category term="case"/><category term="switch"/><category term="matlab"/><summary type="html"><![CDATA[matlab-kosul-ve-donguler]]></summary></entry><entry><title type="html">MATLAB Rastgele Sayı Üretme (rand, randi, randn)</title><link href="https://tunahanbilgic.dev/kod/matlab-rastgele-sayi-uretme/" rel="alternate" type="text/html" title="MATLAB Rastgele Sayı Üretme (rand, randi, randn)"/><published>2020-12-12T20:25:00+00:00</published><updated>2020-12-12T20:25:00+00:00</updated><id>https://tunahanbilgic.dev/kod/matlab-rastgele-sayi-uretme</id><content type="html" xml:base="https://tunahanbilgic.dev/kod/matlab-rastgele-sayi-uretme/"><![CDATA[<p>Bu yazımızda MATLAB’da bulunan gömülü fonksiyonlara giriş yapacağız. Gömülü fonksiyonlar, bize programlama yaparken büyük kolaylıklar sağlarlar. Örneğin bir dizinin en büyük elemanını bulmak için döngülerle, kodlarla uğraşmadan tek komut ile sonuca ulaşabiliriz. Bu yazımızda, rastgele sayı üreten gömülü fonksiyonları inceleyeceğiz. Kullanacağımız fonksiyonlar:</p> <ul> <li>“rand()”: Uniform(düzgün, tekdüze) dağılmış sayı üretmek için</li> <li>“randi()”: Uniform(düzgün, tekdüze) dağılmış tam sayı üretmek için</li> <li>“randn()”: Normal dağılmış sayı üretmek için</li> <li>“randperm(n)”: 1 – n arası tam sayıların permütasyonu için</li> </ul> <h1>“rand()” Fonksiyonu</h1> <p>0 ile 1 arasında, NxN uniform sayılar üretmek için:</p> <div class="language-matlab highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">%Syntax: rand(N)</span>
<span class="nb">rand</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
</code></pre></div></div> <p><img src="/assets/kod/matlab/matlab38.webp" alt=""/></p> <p>0 ile 1 arasında, MxN uniform sayılar üretmek için:</p> <div class="language-matlab highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">%Syntax: rand(M,N)</span>
<span class="nb">rand</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">5</span><span class="p">)</span> <span class="c1">%2x5</span>
</code></pre></div></div> <p><img src="/assets/kod/matlab/matlab39.png" alt=""/></p> <p>Belirli bir aralıktaki sayılardan, belirli adet rastgele sayı üretmek istiyorsak; “a” aralığın başlangıç sayısı, “b” aralığın bitiş sayısı olmak üzere, “a + (b–a) * rand(M,N)” formülünü kullanırız. Örnek olarak, -10 ile 10 arasında “2×5” matris olacak şekilde sayı üretmek istiyorsak: “-10 + (10 – (-10)) * rand(2,5)” komutunu kullanmalıyız.</p> <div class="language-matlab highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">%Syntax: a + (b-a) * rand(M,N)</span>
<span class="o">-</span><span class="mi">10</span> <span class="o">+</span> <span class="p">(</span><span class="mi">10</span><span class="o">+</span><span class="mi">10</span><span class="p">)</span> <span class="o">*</span> <span class="nb">rand</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">5</span><span class="p">)</span> <span class="c1">%-10, 10 arasında 2x5</span>
</code></pre></div></div> <p><img src="/assets/kod/matlab/matlab40.webp" alt=""/></p> <p>Gerçek ve sanal kısmı 0 ile 1 arasında normal dağılmış karmaşık sayı üretme:</p> <div class="language-matlab highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">%Syntax: rand + 1i * rand</span>
<span class="nb">rand</span> <span class="o">+</span> <span class="mi">1</span><span class="n">i</span> <span class="o">*</span> <span class="nb">rand</span>
</code></pre></div></div> <p><img src="/assets/kod/matlab/matlab41.webp" alt=""/></p> <h1>“randi()” Fonksiyonu</h1> <p>1 ile N arasında, rastgele bir tam sayı üretmek için:</p> <div class="language-matlab highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">%Syntax: randi(N)</span>
<span class="nb">randi</span><span class="p">(</span><span class="mi">7</span><span class="p">)</span>
</code></pre></div></div> <p><img src="/assets/kod/matlab/matlab42.webp" alt=""/></p> <p>1 ile N arasında, MxM uniform tam sayılar üretmek için:</p> <div class="language-matlab highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">%Syntax: randi(N,M)</span>
<span class="nb">randi</span><span class="p">(</span><span class="mi">7</span><span class="p">,</span><span class="mi">3</span><span class="p">)</span> <span class="c1">%1-7 arası, 3x3</span>
</code></pre></div></div> <p><img src="/assets/kod/matlab/matlab43.webp" alt=""/></p> <p>a ile b arasında, MxN uniform tam sayılar üretmek için:</p> <div class="language-matlab highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">%Syntax: randi([a b], M, N)</span>
<span class="nb">randi</span><span class="p">([</span><span class="o">-</span><span class="mi">10</span> <span class="mi">10</span><span class="p">],</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span> <span class="c1">%-10 ile 10 arası, 2x5</span>
</code></pre></div></div> <p><img src="/assets/kod/matlab/matlab44.png" alt=""/></p> <h1>“randn()” Fonksiyonu</h1> <p>NxN normal dağılmış rastgele sayılar üretmek için:</p> <div class="language-matlab highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">%Syntax: randn(N)</span>
<span class="nb">randn</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span> <span class="c1">%3x3</span>
</code></pre></div></div> <p><img src="/assets/kod/matlab/matlab45.webp" alt=""/></p> <p>MxN normal dağılmış rastgele sayılar üretmek için:</p> <div class="language-matlab highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">%Syntax: randn(M,N)</span>
<span class="nb">randn</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">5</span><span class="p">)</span> <span class="c1">%2x5</span>
</code></pre></div></div> <p><img src="/assets/kod/matlab/matlab46.png" alt=""/></p> <p>Gerçek ve sanal kısmı normal dağılmış karmaşık sayı üretme:</p> <div class="language-matlab highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">%Syntax: randn + 1i*randn</span>
<span class="nb">randn</span> <span class="o">+</span> <span class="mi">1</span><span class="n">i</span><span class="o">*</span><span class="nb">randn</span>
</code></pre></div></div> <p><img src="/assets/kod/matlab/matlab47.webp" alt=""/></p> <h1>“randperm()” Fonksiyonu</h1> <p>“randperm()” fonksiyonu, 1 ile bizim belirlediğimiz “N” aralıktaki tam sayıların rastgele permütasyonunu verir.</p> <div class="language-matlab highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">%Syntax: randperm(N)</span>
<span class="nb">randperm</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span> <span class="c1">% 1 ile 5 arası sayıların permütasyonu</span>
<span class="nb">randperm</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span> <span class="c1">% 1 ile 5 arası sayıların permütasyonu 2</span>
</code></pre></div></div> <p><img src="/assets/kod/matlab/matlab48.webp" alt=""/></p> <p>1 ile N arası tam sayıların M tanesinin permütasyonu için:</p> <div class="language-matlab highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">%Syntax: randperm(N)</span>
<span class="nb">randperm</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span> <span class="c1">% 1 ile 5 arası sayıların permütasyonu</span>
<span class="nb">randperm</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span> <span class="c1">% 1 ile 5 arası sayıların permütasyonu 2</span>
</code></pre></div></div> <p><img src="/assets/kod/matlab/matlab49.png" alt=""/></p> <h1>“rng()” Fonksiyonu</h1> <p>Rastgele sayı üretilirken, başlangıç olarak bir sayı seçilir. Rastgele sayı üretecinin başlangıç sayısını kontrol ederek, rastgele sayı üretirken aynı sonuçları alabiliriz:</p> <div class="language-matlab highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">b_s</span> <span class="o">=</span> <span class="nb">rng</span><span class="p">;</span>
<span class="nb">randperm</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span> <span class="c1">%1-5 arası tam sayıların rastgele permütasyonu</span>
<span class="nb">rng</span><span class="p">(</span><span class="n">b_s</span><span class="p">)</span>
<span class="nb">randperm</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span> <span class="c1">%Aynı sonuç</span>
</code></pre></div></div> <p><img src="/assets/kod/matlab/matlab50.webp" alt=""/></p> <p>Bütün <strong>MATLAB kodlarına</strong> Github sayfam aracılığı ile erişebilirsiniz. Github sayfamın linkine aşağıdan ulaşabilirsiniz. Görüşmek üzere!</p> <p>Github: <a href="https://github.com/TunahanBilgic/kodlamaogreniyorum/tree/main/matlab">Github MATLAB</a></p> <p>Sitemize destek olmak isteyen sponsorlar için link: <a href="https://patreon.com/tunahanbilgic">Patreon</a></p>]]></content><author><name></name></author><category term="matlab-fonksiyonlar"/><category term="fonksiyon"/><category term="gömülü fonksiyonlar"/><category term="rastgele sayı üretme"/><category term="matlab"/><summary type="html"><![CDATA[matlab-fonksiyonlar]]></summary></entry><entry><title type="html">MATLAB Excel’e Veri Aktarma</title><link href="https://tunahanbilgic.dev/kod/matlab-excele-veri-aktarma/" rel="alternate" type="text/html" title="MATLAB Excel’e Veri Aktarma"/><published>2020-12-07T21:51:00+00:00</published><updated>2020-12-07T21:51:00+00:00</updated><id>https://tunahanbilgic.dev/kod/matlab-excele-veri-aktarma</id><content type="html" xml:base="https://tunahanbilgic.dev/kod/matlab-excele-veri-aktarma/"><![CDATA[<p>Bu yazımızda MATLAB’da veri oluşturup, oluşturduğumuz verileri Excel’e aktaracağız. Excel dosyasını yazdığımız kod ile oluşturacağız. Son olarak da MATLAB ile Excel dosyamıza, Excel formülü yazdıracağız. Veri oluşturmak için öncelikle bir senaryo belirleyelim. Senaryomuz ürünler üzerine olsun. Programa rastgele miktarda ürün, ürün stoku ve fiyat oluşturtalım. Ürün miktarları ile fiyatlarını çarpıp, getirilerini hesaplatalım ve Excel dosyasına yazdıralım. Lafı daha fazla uzatmadan kodlamaya geçelim:</p> <div class="language-matlab highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">%kodlamaogreniyorum.com, 2020</span>
<span class="nb">clear</span> <span class="nb">all</span>
<span class="n">urun_cesidi</span> <span class="o">=</span> <span class="nb">randi</span><span class="p">([</span><span class="mi">4</span><span class="p">,</span><span class="mi">8</span><span class="p">]);</span> <span class="c1">%ürünler</span>
<span class="n">urun_isimleri</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'A'</span><span class="p">,</span> <span class="s1">'B'</span><span class="p">,</span> <span class="s1">'C'</span><span class="p">,</span> <span class="s1">'D'</span><span class="p">,</span> <span class="s1">'E'</span><span class="p">,</span> <span class="s1">'F'</span><span class="p">,</span> <span class="s1">'G'</span><span class="p">,</span> <span class="s1">'H'</span><span class="p">];</span>
<span class="n">urun_stok</span><span class="o">=</span><span class="p">[];</span> <span class="c1">%Stoklar</span>
<span class="n">urun_fiyat</span><span class="o">=</span><span class="p">[];</span> <span class="c1">%Fiyatlar</span>
<span class="k">for</span> <span class="n">i</span><span class="o">=</span><span class="mi">1</span><span class="p">:</span><span class="n">urun_cesidi</span> <span class="c1">%rastgele urun bilgileri</span>
    <span class="n">urun_stok</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="o">=</span> <span class="nb">randi</span><span class="p">([</span><span class="mi">10</span><span class="p">,</span><span class="mi">90</span><span class="p">]);</span>
    <span class="n">urun_fiyat</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="o">=</span> <span class="nb">randi</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span> <span class="mi">20</span><span class="p">]);</span>
<span class="k">end</span>
<span class="n">getiri</span> <span class="o">=</span> <span class="n">urun_stok</span> <span class="o">.*</span> <span class="n">urun_fiyat</span><span class="p">;</span>
</code></pre></div></div> <p>“randi([4, 8])” komutu ile 4 ile 8 arasında ürün çeşidi belirlemiş olduk. En fazla 8 tane ürün olabileceği için ürün isimlerini temsilen 8 adet harf tanımladık. Stokları 10 ile 90 arasında ve fiyatları da 1 ile 20 arasında rastgele oluşturduk. Son satırda da getirilerini hesaplamış olduk. Kodun çıktısı:</p> <p><img src="/assets/kod/matlab/matlab63.webp" alt=""/></p> <div class="language-matlab highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">excel</span> <span class="o">=</span> <span class="s1">'veriler.xlsx'</span><span class="p">;</span> <span class="c1">%excel dosyası</span>
<span class="c1">%Excel dosyasını oluşturma 2. yöntem:</span>
<span class="c1">%fopen('veriler.xlsx','w'); -&gt;fclose unutulmamalı</span>
<span class="c1">%İlk satıra başlıkları yazdıralım.</span>
<span class="nb">xlswrite</span><span class="p">(</span><span class="n">excel</span><span class="p">,</span><span class="nb">cellstr</span><span class="p">(</span><span class="s1">'Ürünler'</span><span class="p">),</span><span class="s1">'Ürünler'</span><span class="p">,</span><span class="s1">'A1'</span><span class="p">);</span>
<span class="nb">xlswrite</span><span class="p">(</span><span class="n">excel</span><span class="p">,</span><span class="nb">cellstr</span><span class="p">(</span><span class="s1">'Stoklar'</span><span class="p">),</span><span class="s1">'Ürünler'</span><span class="p">,</span><span class="s1">'B1'</span><span class="p">);</span>
<span class="nb">xlswrite</span><span class="p">(</span><span class="n">excel</span><span class="p">,</span><span class="nb">cellstr</span><span class="p">(</span><span class="s1">'Birim Fiyat'</span><span class="p">),</span><span class="s1">'Ürünler'</span><span class="p">,</span><span class="s1">'C1'</span><span class="p">);</span>
<span class="nb">xlswrite</span><span class="p">(</span><span class="n">excel</span><span class="p">,</span><span class="nb">cellstr</span><span class="p">(</span><span class="s1">'Toplam Getiri'</span><span class="p">),</span><span class="s1">'Ürünler'</span><span class="p">,</span><span class="s1">'D1'</span><span class="p">);</span>
</code></pre></div></div> <p>“excel = ‘veriler.xlsx’;” komutu ile MATLAB’a “veriler” isminde bir Excel dosyası oluşturmasını söylemiş olduk. “veriler” isminde bir Excel dosyası yoksa oluşturulacaktır ancak aynı isim ve uzantıya sahip bir dosya varsa bilgiler üstüne yazılacaktır. Bu nedenle dosyanın olmadığına dikkat edelim.</p> <p>“xlswrite()” fonksiyonunun kullanımı: “xlswrite(dosya_adi, yazdirilacak_veriler, calisma_sayfasi, hucreler)” şeklindedir. “Ürünler” isminde bir çalışma sayfası oluşturup, ilk satırlara başlıkları yazdırmış olduk.</p> <div class="language-matlab highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">%Döngü ile hücrelere yazdırma:</span>
<span class="k">for</span> <span class="n">i</span><span class="o">=</span><span class="mi">1</span><span class="p">:</span><span class="n">urun_cesidi</span>
    <span class="n">hucreA</span><span class="o">=</span><span class="nb">sprintf</span><span class="p">(</span> <span class="s1">'A%s'</span><span class="p">,</span><span class="nb">num2str</span><span class="p">(</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">));</span>
    <span class="nb">xlswrite</span><span class="p">(</span><span class="n">excel</span><span class="p">,</span><span class="nb">cellstr</span><span class="p">(</span><span class="nb">sprintf</span><span class="p">(</span><span class="s1">'Ürün_%s'</span><span class="p">,</span><span class="n">urun_isimleri</span><span class="p">(</span><span class="n">i</span><span class="p">))),</span><span class="s1">'Ürünler'</span><span class="p">,</span><span class="n">hucreA</span><span class="p">);</span>  <span class="c1">%</span>
    <span class="n">hucreB</span><span class="o">=</span><span class="nb">sprintf</span><span class="p">(</span> <span class="s1">'B%s'</span><span class="p">,</span><span class="nb">num2str</span><span class="p">(</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">));</span>
    <span class="nb">xlswrite</span><span class="p">(</span><span class="n">excel</span><span class="p">,</span><span class="nb">cellstr</span><span class="p">(</span><span class="nb">sprintf</span><span class="p">(</span><span class="s1">'%d'</span><span class="p">,</span><span class="n">urun_stok</span><span class="p">(</span><span class="n">i</span><span class="p">))),</span><span class="s1">'Ürünler'</span><span class="p">,</span><span class="n">hucreB</span><span class="p">);</span>
    <span class="n">hucreC</span><span class="o">=</span><span class="nb">sprintf</span><span class="p">(</span> <span class="s1">'C%s'</span><span class="p">,</span><span class="nb">num2str</span><span class="p">(</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">));</span>
    <span class="nb">xlswrite</span><span class="p">(</span><span class="n">excel</span><span class="p">,</span><span class="nb">cellstr</span><span class="p">(</span><span class="nb">sprintf</span><span class="p">(</span><span class="s1">'%d'</span><span class="p">,</span><span class="n">urun_fiyat</span><span class="p">(</span><span class="n">i</span><span class="p">))),</span><span class="s1">'Ürünler'</span><span class="p">,</span><span class="n">hucreC</span><span class="p">);</span>
<span class="k">end</span>
</code></pre></div></div> <p>“sprintf()” fonksiyonu sayesinde, döngü ile hücreler arasında gezebiliyoruz. “xlswrite()” fonksiyonu, Excel dosyasında bir hücreye bir karakter/sayı gelecek şekilde yazma yapar. “cellstr()” fonksiyonu sayesinde bir hücreye bütün olarak yazdırma yapabiliyoruz.</p> <div class="language-matlab highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">%Döngüsüz tek komut ile vektörü hücrelere yazdırma:</span>
<span class="nb">xlswrite</span><span class="p">(</span><span class="n">excel</span><span class="p">,</span><span class="nb">num2cell</span><span class="p">(</span><span class="n">getiri</span><span class="p">),</span><span class="s1">'Ürünler'</span><span class="p">,</span><span class="s1">'D2'</span><span class="p">);</span>     <span class="c1">%num2cell()</span>
<span class="nb">xlswrite</span><span class="p">(</span><span class="n">excel</span><span class="p">,</span><span class="nb">cellstr</span><span class="p">(</span><span class="s1">'Stok &gt;50 Ürün Sayısı:'</span><span class="p">),</span><span class="s1">'Ürünler'</span><span class="p">,</span><span class="s1">'F1'</span><span class="p">);</span>
<span class="n">formul</span> <span class="o">=</span> <span class="nb">sprintf</span><span class="p">(</span><span class="s1">'=EĞERSAY(B2:B%d;"&gt;50")'</span><span class="p">,</span><span class="n">urun_cesidi</span><span class="o">+</span><span class="mi">1</span><span class="p">);</span>   <span class="c1">%formül örnek 1</span>
<span class="nb">xlswrite</span><span class="p">(</span><span class="n">excel</span><span class="p">,</span><span class="nb">cellstr</span><span class="p">(</span><span class="n">formul</span><span class="p">),</span><span class="s1">'Ürünler'</span><span class="p">,</span><span class="s1">'F2'</span><span class="p">);</span>
<span class="n">formul2</span> <span class="o">=</span> <span class="nb">sprintf</span><span class="p">(</span><span class="s1">'=TOPLA(B2:B%d)'</span><span class="p">,</span><span class="n">urun_cesidi</span><span class="o">+</span><span class="mi">1</span><span class="p">);</span>               <span class="c1">%formül örnek 2</span>
<span class="nb">xlswrite</span><span class="p">(</span><span class="n">excel</span><span class="p">,</span><span class="nb">cellstr</span><span class="p">(</span><span class="s1">'Toplam Stok:'</span><span class="p">),</span><span class="s1">'Ürünler'</span><span class="p">,</span><span class="s1">'F3'</span><span class="p">);</span>
<span class="nb">xlswrite</span><span class="p">(</span><span class="n">excel</span><span class="p">,</span><span class="nb">cellstr</span><span class="p">(</span><span class="n">formul2</span><span class="p">),</span><span class="s1">'Ürünler'</span><span class="p">,</span><span class="s1">'F4'</span><span class="p">);</span>
</code></pre></div></div> <p>“num2cell()” fonksiyonu, sayısal ifadeyi hücreye çevirmeye yarar. “getiri” isimli satır vektöründe kayıt altında tuttuğumuz sayıları hücre yapısına çevirip, tersçaprazını(transpose) alıyoruz. Böylelikle; döngüye ihtiyaç duymadan, tek bir komut ile tüm verileri hücrelere yazdırabiliyoruz.</p> <p>“sprintf()” fonksiyonu ile Excel formülünü bir değişkene tanımlayabiliyoruz. Örnek olması açısından, “formul” ve “formul2” isimli iki değişkene, iki tane formül tanımladık. Programı çalıştıralım ve oluşan Excel dosyamızı inceleyelim:</p> <p><img src="/assets/kod/matlab/matlab64.webp" alt=""/></p> <p>“F2” ve “F4” hücrelerinde tanımladığımız formüllerin çalıştığını görüyoruz. Bu hesaplamaları, formül yerine MATLAB’a da yaptırabilirdik ancak örnek olması açısından böyle bir yol izledik. Bunu dışında, tüm verilerimizin istediğimiz gibi Excel dosyasına kayıt edildiğini görüyoruz.</p> <p>Bütün <strong>MATLAB kodlarına</strong> Github sayfam aracılığı ile erişebilirsiniz. Github sayfamın linkine aşağıdan ulaşabilirsiniz. Görüşmek üzere!</p> <p>Github: <a href="https://github.com/TunahanBilgic/kodlamaogreniyorum/tree/main/matlab">Github MATLAB</a></p> <p>Sitemize destek olmak isteyen sponsorlar için link: <a href="https://patreon.com/tunahanbilgic">Patreon</a></p>]]></content><author><name></name></author><category term="matlab-veri-islemleri"/><category term="veri aktarma"/><category term="veri oluşturma"/><category term="matlab"/><summary type="html"><![CDATA[matlab-veri-islemleri]]></summary></entry><entry><title type="html">MATLAB Gantt Grafiği Oluşturma</title><link href="https://tunahanbilgic.dev/kod/matlab-gantt-grafigi-olusturma/" rel="alternate" type="text/html" title="MATLAB Gantt Grafiği Oluşturma"/><published>2020-12-06T10:58:00+00:00</published><updated>2020-12-06T10:58:00+00:00</updated><id>https://tunahanbilgic.dev/kod/matlab-gantt-grafigi-olusturma</id><content type="html" xml:base="https://tunahanbilgic.dev/kod/matlab-gantt-grafigi-olusturma/"><![CDATA[<p>Bu yazımızda MATLAB kullanarak bir Gantt grafiği oluşturacağız. Gantt grafiği; planlama, proje yönetimi gibi alanlarda sürecin nasıl gittiği hakkında bilgi sahibi olmamızda yardımcı olan bir grafiktir. Gantt grafiği, verileri görselleştirerek daha anlaşılır hale getirmektedir. Biz bu uygulamada bir proje yönetim sürecini ele alacağız. Verilerimiz, proje yönetim süreçlerinin planlanan ve gerçekleşen zamanları olacak. Ayrıca Excel dosyasındaki metinleri de grafik üzerinde isimlendirmede kullanacağız. Verilerimiz bir Excel dosyasında kayıt halinde olacak. <a href="https://www.kodlamaogreniyorum.com/matlab-excelden-veri-aktarma/">MATLAB’a Excel’den veri aktarma</a> yazımızı inceleyerek, veri aktarımı hakkında detaylı bilgiye sahip olabilirsiniz.</p> <p>Öncelikle, Excel dosyasını inceleyelim:</p> <p><img src="/assets/kod/matlab/matlab71.png" alt=""/></p> <p>Excel dosyasında bulunan sayılar hafta cinsinden zamanları ifade ediyor. Bununla birlikte, toplamda altı tane olan proje yönetim süreçlerinin isimleri de veri dosyamızın içerisinde yer alıyor. Gantt grafiğini oluşturma mantığımız: “Fikir Belirleme süreci üç hafta sürmüş, ardından üç hafta boyunca da Fikir Analizi süreci yer almış” şeklinde olacak. Kısacası zamanları üst üste ekleyerek grafiği oluşturacağız. Excel dosyasını, kullanıcının kendisinin seçeceği şekilde programımızı kodlamaya başlayalım:</p> <div class="language-matlab highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">excel</span><span class="o">=</span><span class="nb">uigetfile</span><span class="p">(</span><span class="s1">'*xls*'</span><span class="p">);</span>
<span class="nb">assignin</span><span class="p">(</span><span class="s1">'base'</span><span class="p">,</span><span class="s1">'excel'</span><span class="p">,</span><span class="n">excel</span><span class="p">);</span>
<span class="p">[</span><span class="n">veri</span><span class="p">,</span><span class="n">metin</span><span class="p">,</span><span class="n">hepsi</span><span class="p">]</span> <span class="o">=</span> <span class="nb">xlsread</span><span class="p">(</span><span class="n">excel</span><span class="p">);</span>
</code></pre></div></div> <p><img src="/assets/kod/matlab/matlab72.webp" alt=""/></p> <p>“uigetfile()” fonksiyonu kullanıcının dosya seçmesi için bir pencere açar. Yazdığımız “<em>xls</em>” uzantısı sayesinde, kullanıcının Excel dosyalarını görmesinde kolaylık sağlıyoruz. “assignin()” fonksiyonu ile Excel dosyamızın “excel” isimli değişkende çalışma alanına kaydedilmesini sağlıyoruz. “xlsread()” fonksiyonu Excel dosyasındaki metinleri hücre olarak değişkene tanımlıyor. Bununla birlikte, Excel dosyasındaki sayısal ifadelerin olduğu yerleri de hücre olarak değişkene tanımlıyor. Metinleri kullanırken zorlanmamak için aşağıdaki kodları ekleyelim:</p> <div class="language-matlab highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">[</span><span class="n">satir</span><span class="p">,</span><span class="n">sutun</span><span class="p">]</span> <span class="o">=</span> <span class="nb">size</span><span class="p">(</span><span class="n">metin</span><span class="p">);</span>
<span class="n">proje_asama</span><span class="o">=</span><span class="p">[];</span> <span class="c1">%proje aşamaları için</span>
<span class="n">sure_tipi</span><span class="o">=</span><span class="p">[];</span>
<span class="k">for</span> <span class="n">i</span><span class="o">=</span><span class="mi">1</span><span class="p">:</span><span class="n">satir</span> <span class="c1">%proje aşamalarını kaydetme</span>
    <span class="k">if</span> <span class="nb">strlength</span><span class="p">(</span><span class="n">metin</span><span class="p">{</span><span class="n">i</span><span class="p">,</span><span class="mi">1</span><span class="p">})</span> <span class="o">&gt;</span> <span class="mi">0</span>
        <span class="n">proje_asama</span><span class="o">=</span><span class="p">[</span><span class="n">proje_asama</span><span class="p">;</span> <span class="nb">string</span><span class="p">(</span><span class="n">metin</span><span class="p">{</span><span class="n">i</span><span class="p">,</span><span class="mi">1</span><span class="p">})];</span>
    <span class="k">end</span>
<span class="k">end</span>
<span class="k">for</span> <span class="n">i</span> <span class="o">=</span><span class="mi">1</span><span class="p">:</span><span class="n">sutun</span>
    <span class="k">if</span> <span class="nb">strlength</span><span class="p">(</span><span class="n">metin</span><span class="p">{</span><span class="mi">1</span><span class="p">,</span><span class="n">i</span><span class="p">})</span> <span class="o">&gt;</span> <span class="mi">0</span>
        <span class="n">sure_tipi</span> <span class="o">=</span> <span class="p">[</span><span class="n">sure_tipi</span> <span class="nb">string</span><span class="p">(</span><span class="n">metin</span><span class="p">{</span><span class="mi">1</span><span class="p">,</span><span class="n">i</span><span class="p">})];</span>
    <span class="k">end</span>
<span class="k">end</span>
</code></pre></div></div> <p>Grafiğin boyut, isim gibi temel ayarlarını yapalım:</p> <div class="language-matlab highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">ekran_boyutu</span><span class="o">=</span><span class="nb">get</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="s1">'ScreenSize'</span><span class="p">);</span>
<span class="n">ekran_boyutu</span> <span class="o">=</span> <span class="n">ekran_boyutu</span> <span class="o">*</span> <span class="mf">0.8</span><span class="p">;</span>
<span class="n">fig</span><span class="o">=</span><span class="nb">figure</span><span class="p">(</span><span class="s1">'Name'</span><span class="p">,</span><span class="s1">'Proje Gantt Grafiği'</span><span class="p">,</span><span class="k">...</span>
    <span class="s1">'Innerposition'</span><span class="p">,[</span><span class="mi">0</span> <span class="mi">0</span> <span class="n">ekran_boyutu</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span> <span class="n">ekran_boyutu</span><span class="p">(</span><span class="mi">4</span><span class="p">)],</span><span class="k">...</span>
       <span class="s1">'NumberTitle'</span><span class="p">,</span><span class="s1">'off'</span><span class="p">,</span><span class="s1">'Resize'</span><span class="p">,</span><span class="s1">'off'</span><span class="p">,</span><span class="s1">'MenuBar'</span><span class="p">,</span><span class="s1">'none'</span><span class="p">,</span><span class="s1">'ToolBar'</span><span class="p">,</span><span class="s1">'figure'</span><span class="p">);</span>
</code></pre></div></div> <p>Gantt grafiğindeki barların uzunluğu süreyi ifade etmekte ve X ekseni ile ilişkilidir. Barların kalınlığı ise Y ekseni ile ilişkilidir. Barların kalınlığını biz belirliyoruz. Ayrıca Y ekseni, proje yönetim aşamalarını temsil etmektedir.</p> <p>Planlanan ve gerçekleşen zamanlar farklı olduğundan ve dolayısıyla farklı koordinatlarda olacağı için ayrı ayrı değişkenlere tanımlama yapmamız gerekiyor:</p> <div class="language-matlab highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">bar</span> <span class="o">=</span> <span class="mi">20</span><span class="p">;</span>    <span class="c1">%bar kalınlık</span>
<span class="n">x_p</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>      <span class="c1">%başlangıç konumları</span>
<span class="n">x_g</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="n">y_p</span> <span class="o">=</span> <span class="n">ekran_boyutu</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span> <span class="o">-</span> <span class="nb">bar</span><span class="p">;</span>
<span class="n">y_g</span> <span class="o">=</span> <span class="n">y_p</span> <span class="o">-</span> <span class="nb">bar</span> <span class="o">*</span> <span class="mi">2</span><span class="p">;</span>
</code></pre></div></div> <p>Gantt grafiğinin barlarını “rectangle()” fonksiyonu ile oluşturacağız. “rectangle()” fonksiyonu, kendisine girilen koordinat ve kenar boyutları bilgisine göre dikdörtgen oluşturmaktadır. Grafiğin barını oluşturduktan sonra, “text()” fonksiyonu ile bara, “planlanan” veya “gerçekleşen” yazacağız. Böylelikle zaman ayrımını daha kolay hale getirmiş olacağız. Gerekli kodları ekleyelim:</p> <div class="language-matlab highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">rectangle</span><span class="p">(</span><span class="s1">'Position'</span><span class="p">,[</span><span class="n">x_p</span> <span class="n">y_p</span> <span class="n">veri</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span> <span class="nb">bar</span><span class="p">],</span><span class="s1">'Facecolor'</span><span class="p">,</span><span class="s1">'g'</span><span class="p">)</span>
<span class="nb">hold</span> <span class="n">on</span>
<span class="nb">rectangle</span><span class="p">(</span><span class="s1">'Position'</span><span class="p">,[</span><span class="n">x_g</span> <span class="n">y_g</span> <span class="n">veri</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span> <span class="nb">bar</span><span class="p">],</span><span class="s1">'Facecolor'</span><span class="p">,</span><span class="s1">'r'</span><span class="p">)</span>
<span class="n">y_lab</span><span class="p">{</span><span class="mi">1</span><span class="p">}</span> <span class="o">=</span> <span class="n">proje_asama</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
<span class="nb">text</span><span class="p">(</span><span class="n">x_p</span><span class="o">+</span><span class="n">veri</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">)/</span><span class="mi">2</span><span class="p">,</span><span class="n">y_p</span><span class="o">+</span><span class="nb">bar</span><span class="p">/</span><span class="mi">2</span><span class="p">,</span><span class="nb">sprintf</span><span class="p">(</span><span class="s1">'%s'</span><span class="p">,</span><span class="n">sure_tipi</span><span class="p">(</span><span class="mi">1</span><span class="p">)),</span><span class="s1">'HorizontalAlignment'</span><span class="p">,</span><span class="s1">'center'</span><span class="p">,</span><span class="s1">'FontSize'</span><span class="p">,</span><span class="mi">8</span><span class="p">)</span>
<span class="nb">text</span><span class="p">(</span><span class="n">x_g</span><span class="o">+</span><span class="n">veri</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">)/</span><span class="mi">2</span><span class="p">,</span><span class="n">y_g</span><span class="o">+</span><span class="nb">bar</span><span class="p">/</span><span class="mi">2</span><span class="p">,</span><span class="nb">sprintf</span><span class="p">(</span><span class="s1">'%s'</span><span class="p">,</span><span class="n">sure_tipi</span><span class="p">(</span><span class="mi">2</span><span class="p">)),</span><span class="s1">'HorizontalAlignment'</span><span class="p">,</span><span class="s1">'center'</span><span class="p">,</span><span class="s1">'FontSize'</span><span class="p">,</span><span class="mi">8</span><span class="p">)</span>
</code></pre></div></div> <p>Bu aşamaya kadar; kullanıcının verileri seçmesini sağladık, grafiğin ayarlarını yaptık ve proje yönetiminin ilk sürecini grafiğe döktük.</p> <p><img src="/assets/kod/matlab/matlab73.webp" alt=""/></p> <p>Diğer süreçleri döngü ile grafiğe dökeceğiz. X ve Y eksenindeki gerekli hesaplamaları da dahil ederek kodlamaya devam edelim:</p> <div class="language-matlab highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">for</span> <span class="n">i</span><span class="o">=</span><span class="mi">2</span><span class="p">:</span><span class="nb">length</span><span class="p">(</span><span class="n">veri</span><span class="p">)</span>
    <span class="n">y_p</span> <span class="o">=</span> <span class="n">y_g</span> <span class="o">-</span> <span class="nb">bar</span><span class="o">*</span><span class="mi">2</span><span class="p">;</span>
    <span class="n">y_g</span> <span class="o">=</span> <span class="n">y_p</span> <span class="o">-</span> <span class="nb">bar</span> <span class="o">*</span> <span class="mi">2</span><span class="p">;</span>
    <span class="n">x_p</span> <span class="o">=</span> <span class="n">x_p</span> <span class="o">+</span> <span class="n">veri</span><span class="p">(</span><span class="n">i</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">);</span>
    <span class="n">x_g</span> <span class="o">=</span> <span class="n">x_g</span> <span class="o">+</span> <span class="n">veri</span><span class="p">(</span><span class="n">i</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">);</span>
    <span class="c1">%planlanan değerler</span>
    <span class="nb">rectangle</span><span class="p">(</span><span class="s1">'Position'</span><span class="p">,[</span><span class="n">x_p</span> <span class="n">y_p</span> <span class="n">veri</span><span class="p">(</span><span class="n">i</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span> <span class="nb">bar</span><span class="p">],</span><span class="s1">'Facecolor'</span><span class="p">,</span><span class="s1">'g'</span><span class="p">)</span>
    <span class="c1">%gerçekleşen değerler</span>
    <span class="nb">rectangle</span><span class="p">(</span><span class="s1">'Position'</span><span class="p">,[</span><span class="n">x_g</span> <span class="n">y_g</span> <span class="n">veri</span><span class="p">(</span><span class="n">i</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span> <span class="nb">bar</span><span class="p">],</span><span class="s1">'Facecolor'</span><span class="p">,</span><span class="s1">'r'</span><span class="p">)</span>
    <span class="n">y_lab</span><span class="p">{</span><span class="n">i</span><span class="p">}</span> <span class="o">=</span> <span class="n">proje_asama</span><span class="p">(</span><span class="n">i</span><span class="p">);</span>
    <span class="nb">plot</span><span class="p">([</span><span class="n">x_g</span> <span class="n">x_g</span><span class="p">],[</span><span class="n">y_g</span><span class="o">+</span><span class="nb">bar</span> <span class="n">y_g</span><span class="o">+</span><span class="nb">bar</span><span class="o">*</span><span class="mi">4</span><span class="p">],</span><span class="s1">'--'</span><span class="p">,</span><span class="s1">'Color'</span><span class="p">,</span><span class="s1">'b'</span><span class="p">)</span>
    <span class="nb">text</span><span class="p">(</span><span class="n">x_p</span><span class="o">+</span><span class="n">veri</span><span class="p">(</span><span class="n">i</span><span class="p">,</span><span class="mi">1</span><span class="p">)/</span><span class="mi">2</span><span class="p">,</span><span class="n">y_p</span><span class="o">+</span><span class="nb">bar</span><span class="p">/</span><span class="mi">2</span><span class="p">,</span><span class="nb">sprintf</span><span class="p">(</span><span class="s1">'%s'</span><span class="p">,</span><span class="n">sure_tipi</span><span class="p">(</span><span class="mi">1</span><span class="p">)),</span><span class="s1">'HorizontalAlignment'</span><span class="p">,</span><span class="s1">'center'</span><span class="p">,</span><span class="s1">'FontSize'</span><span class="p">,</span><span class="mi">8</span><span class="p">)</span>
    <span class="nb">text</span><span class="p">(</span><span class="n">x_g</span><span class="o">+</span><span class="n">veri</span><span class="p">(</span><span class="n">i</span><span class="p">,</span><span class="mi">2</span><span class="p">)/</span><span class="mi">2</span><span class="p">,</span><span class="n">y_g</span><span class="o">+</span><span class="nb">bar</span><span class="p">/</span><span class="mi">2</span><span class="p">,</span><span class="nb">sprintf</span><span class="p">(</span><span class="s1">'%s'</span><span class="p">,</span><span class="n">sure_tipi</span><span class="p">(</span><span class="mi">2</span><span class="p">)),</span><span class="s1">'HorizontalAlignment'</span><span class="p">,</span><span class="s1">'center'</span><span class="p">,</span><span class="s1">'FontSize'</span><span class="p">,</span><span class="mi">8</span><span class="p">)</span>
<span class="k">end</span>
</code></pre></div></div> <p>Artık son aşamaya geldik. Grafiğin; Y eksenine proje aşamalarını, X eksenine ise haftaları yazdıracağız. Bununla birlikte, grafiğe bir başlık ve renklerin neyi ifade ettiğini anlatan bir bilgi kutusu ekleyelim:</p> <div class="language-matlab highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">set</span><span class="p">(</span><span class="nb">gca</span><span class="p">,</span><span class="s1">'XTick'</span><span class="p">,[</span><span class="mi">0</span><span class="p">:</span><span class="nb">max</span><span class="p">(</span><span class="nb">sum</span><span class="p">(</span><span class="n">veri</span><span class="p">))],</span><span class="s1">'YTick'</span><span class="p">,[</span><span class="n">y_g</span><span class="o">+</span><span class="nb">bar</span><span class="o">+</span><span class="nb">bar</span><span class="p">/</span><span class="mi">2</span><span class="p">:</span><span class="nb">bar</span><span class="o">*</span><span class="mi">4</span><span class="p">:</span><span class="n">ekran_boyutu</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span> <span class="o">-</span> <span class="nb">bar</span><span class="p">]);</span>
<span class="nb">xlabel</span><span class="p">(</span><span class="s1">'Haftalar'</span><span class="p">,</span><span class="s1">'FontSize'</span><span class="p">,</span><span class="mi">14</span><span class="p">,</span><span class="s1">'FontWeight'</span><span class="p">,</span><span class="s1">'bold'</span><span class="p">,</span><span class="s1">'Color'</span><span class="p">,</span><span class="s1">'r'</span><span class="p">)</span>
<span class="nb">set</span><span class="p">(</span><span class="nb">gca</span><span class="p">,</span><span class="s1">'YTickLabel'</span><span class="p">,</span><span class="nb">flip</span><span class="p">(</span><span class="n">y_lab</span><span class="p">),</span><span class="s1">'Fontsize'</span><span class="p">,</span><span class="mi">12</span><span class="p">);</span>
<span class="nb">ylabel</span><span class="p">(</span><span class="s1">'Aşamalar'</span><span class="p">,</span><span class="s1">'FontSize'</span><span class="p">,</span><span class="mi">14</span><span class="p">,</span><span class="s1">'FontWeight'</span><span class="p">,</span><span class="s1">'bold'</span><span class="p">,</span><span class="s1">'Color'</span><span class="p">,</span><span class="s1">'r'</span><span class="p">)</span>
<span class="nb">set</span><span class="p">(</span><span class="nb">gca</span><span class="p">,</span> <span class="s1">'YGrid'</span><span class="p">,</span> <span class="s1">'off'</span><span class="p">,</span> <span class="s1">'XGrid'</span><span class="p">,</span> <span class="s1">'on'</span><span class="p">)</span>
<span class="n">planlanan</span> <span class="o">=</span> <span class="nb">line</span><span class="p">(</span><span class="nb">NaN</span><span class="p">,</span><span class="nb">NaN</span><span class="p">,</span><span class="s1">'LineWidth'</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="s1">'Color'</span><span class="p">,</span><span class="s1">'g'</span><span class="p">);</span>
<span class="n">gerceklesen</span> <span class="o">=</span> <span class="nb">line</span><span class="p">(</span><span class="nb">NaN</span><span class="p">,</span><span class="nb">NaN</span><span class="p">,</span><span class="s1">'LineWidth'</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="s1">'Color'</span><span class="p">,</span><span class="s1">'r'</span><span class="p">);</span>
<span class="nb">legend</span><span class="p">([</span><span class="n">planlanan</span> <span class="n">gerceklesen</span><span class="p">],</span><span class="n">sure_tipi</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="n">sure_tipi</span><span class="p">(</span><span class="mi">2</span><span class="p">))</span>
<span class="nb">title</span><span class="p">([</span><span class="nb">num2str</span><span class="p">(</span><span class="nb">max</span><span class="p">(</span><span class="nb">sum</span><span class="p">(</span><span class="n">veri</span><span class="p">))),</span><span class="s1">' Haftalık Proje Süreci'</span><span class="p">],</span><span class="s1">'Color'</span><span class="p">,</span><span class="s1">'b'</span><span class="p">,</span><span class="s1">'FontAngle'</span><span class="p">,</span><span class="s1">'italic'</span><span class="p">)</span>
</code></pre></div></div> <p>Programımızın son hali:</p> <p><img src="/assets/kod/matlab/matlab74.webp" alt=""/></p> <p>Bir başka veri dosyası ile programımızı çalıştıralım:</p> <p><img src="/assets/kod/matlab/matlab75.png" alt=""/></p> <p><img src="/assets/kod/matlab/matlab76.png" alt=""/></p> <p>Bir yazının daha sonuna geldik. Yeni içerikler için sitemizi takip etmeyi unutmayın.</p> <p>Bütün <strong>MATLAB kodlarına</strong> Github sayfam aracılığı ile erişebilirsiniz. Github sayfamın linkine aşağıdan ulaşabilirsiniz. Görüşmek üzere!</p> <p>Github: <a href="https://github.com/TunahanBilgic/kodlamaogreniyorum/tree/main/matlab">Github MATLAB</a></p> <p>Sitemize destek olmak isteyen sponsorlar için link: <a href="https://patreon.com/tunahanbilgic">Patreon</a></p>]]></content><author><name></name></author><category term="matlab-ornek-uygulamalar"/><category term="matlab grafikler"/><category term="matlab veri aktarma"/><category term="matlab"/><summary type="html"><![CDATA[matlab-ornek-uygulamalar]]></summary></entry><entry><title type="html">MATLAB Excel’den Veri Aktarma</title><link href="https://tunahanbilgic.dev/kod/matlab-excelden-veri-aktarma/" rel="alternate" type="text/html" title="MATLAB Excel’den Veri Aktarma"/><published>2020-12-01T20:59:00+00:00</published><updated>2020-12-01T20:59:00+00:00</updated><id>https://tunahanbilgic.dev/kod/matlab-excelden-veri-aktarma</id><content type="html" xml:base="https://tunahanbilgic.dev/kod/matlab-excelden-veri-aktarma/"><![CDATA[<p>Bu yazımızda MATLAB’da veri işlemlerine temel bir giriş yapacağız. MATLAB kullanarak Excel’den veri çekip, çektiğimiz verileri grafiğe dökeceğiz. Veri olarak son bir aylık döviz kurlarını kullanacağız. Veri kaynağı olarak <a href="https://evds2.tcmb.gov.tr/index.php?/evds/serieMarket/#collapse_2">T.C.M.B</a>‘nı kullanacağız. İndirdiğimiz Excel dosyasında Euro alış ve satış ile Dolar alış ve satış verileri olacak. Bununla birlikte dosyanın içinde sayısal olmayan veriler ve hafta sonlarına denk gelen boşluklar olacaktır. Bunları Excel dosyası ile düzenlemek yerine yazacağımız kodla programa düzenleteceğiz. Excel dosyasının <strong>linkini</strong> yazının sonunda bulabilirsiniz. Öncelikle Excel dosyamızı inceleyerek başlayalım:</p> <p><img src="/assets/kod/matlab/matlab57.png" alt=""/></p> <p>Gördüğünüz üzere Excel dosyamızın içinde, sütun başlıkları ve açıklamalar gibi sayısal olmayan ifadeler bulunmaktadır. Buna ek olarak, hafta sonlarına gelen günlerin verisi bulunmamaktadır. Verisi olmayan satıları(hafta sonları) da grafiğimize dahil edersek, grafiğimiz kesikli bir görüntü alacaktır. Program içinde yapacağımız birkaç ekleme ile verilerimizi istediğimiz gibi düzenleme imkanına sahip olacağız.</p> <p>MATLAB’a, Excel’den veri aktarmak için “xlsread()” fonksiyonunu kullanacağız. MATLAB, “2019a” sürümü itibariyle bu fonksiyonu tavsiye etmiyor. Ancak eski sürümleri kullanan kullanıcıları da göz önünde bulundurarak bu fonksiyon ile programımızı oluşturacağız. Excel dosyasını programımıza aktararak kodlamaya başlayalım:</p> <div class="language-matlab highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">[</span><span class="n">kurlar</span><span class="p">,</span> <span class="n">metin</span><span class="p">,</span> <span class="n">hepsi</span><span class="p">]</span> <span class="o">=</span> <span class="nb">xlsread</span><span class="p">(</span><span class="s1">'kur.xlsx'</span><span class="p">);</span>
</code></pre></div></div> <p>Aslında, “xlsread()” fonksiyonunun temel kullanımı degisken = xlsread(‘dosyaadi’); şeklindedir. Ancak bir Excel dosyasında bulunan metin ve sayısal ifadelerin ayrılması isteniyorsa, “xlsread()” fonksiyonunu özel olarak tanımlanması gerekiyor. Yukarıdaki tanımlama ile kur değerleri olan sayısal ifadeleri “kurlar” adlı değişkene, tarih ve açıklamalar gibi olan metinleri de “metin” adlı değişkene kaydetmiş olduk.</p> <p><img src="/assets/kod/matlab/matlab58.png" alt=""/></p> <p>“kurlar” değişkenini incelediğimiz zaman, her satır bir günü, sütunlar ise sırasıyla; Dolar alış, Dolar satış, Euro alış ve Euro satışı ifade etmektedir. Öncelikle hafta sonlarına denk gelen, “NaN(Not a Number)” olan ifadeleri eleyelim ve sonrasında kullanım kolaylığı olması açısından döviz kurları ile alış-satış değerlerini farklı değişkenlere kaydedelim:</p> <div class="language-matlab highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">kurlar</span><span class="p">(</span><span class="o">~</span><span class="nb">any</span><span class="p">(</span><span class="o">~</span><span class="nb">isnan</span><span class="p">(</span><span class="n">kurlar</span><span class="p">),</span> <span class="mi">2</span><span class="p">),:)</span> <span class="o">=</span> <span class="p">[];</span>
<span class="n">dolar_alis</span> <span class="o">=</span><span class="n">kurlar</span><span class="p">(:,</span><span class="mi">1</span><span class="p">);</span>     <span class="c1">%1.sütun $ alış</span>
<span class="n">dolar_satis</span> <span class="o">=</span><span class="n">kurlar</span><span class="p">(:,</span><span class="mi">2</span><span class="p">);</span>   <span class="c1">%2.sütun $ satış</span>
<span class="n">euro_alis</span><span class="o">=</span><span class="n">kurlar</span><span class="p">(:,</span><span class="mi">3</span><span class="p">);</span>       <span class="c1">%3.sütun € alış</span>
<span class="n">euro_satis</span><span class="o">=</span><span class="n">kurlar</span><span class="p">(:,</span><span class="mi">4</span><span class="p">);</span>     <span class="c1">%4.sütun € satış</span>
</code></pre></div></div> <p>1.satırda bulunan kod matristeki “NaN(Not a Number)” olan ifadeleri silmeye yarıyor. “isnan()” fonksiyonu, kendisine girilen veride “NaN” olan ifade varsa “True” değerini döndürür. Başına eklediğimiz “~” değilse operatörü ile saklamak istediğimiz “NaN” ifade olmayan değerler “1“, “NaN” olan ifadeler “0” değerini almış oluyor. “any()” fonksiyonu, kendisine girilen veride “0” olup olmadığını kontrol etmeye yarar. “any()” fonksiyonu, kendisine girilen veride “0” varsa “0“, diğer değerler için ise “1” değerini üretir. Başına koyduğumuz “~” değilse operatörü ile bu durumu tam tersine çevirmiş oluyoruz. Verimiz matris olduğu için “,2” ifadesini yazmamız gerekiyor. Böylelikle yazmış olduğumuz ~any(~isnan(kurlar), 2) ifadesi matristeki “NaN” olan ifadeleri bulmuş oluyor. Ancak bu ifade tek bir sütun için geçerlidir. Diğer sütunları da dahil etmek için “,:” operatörünü ifadeye ekliyoruz.</p> <p>Sonuç olarak, kurlar(~any(~isnan(kurlar), 2),:)ifadesi “kurlar” değişkenindeki “NaN” olan ifadeleri bulmaya yarıyor. Bu ifadeleri çıkardıktan sonra döviz isimlerinde değişkenler tanımlayıp, değerlerini atıyoruz. Düzenlediğimiz değerleri grafiğe dökelim:</p> <div class="language-matlab highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">plot</span><span class="p">(</span><span class="n">dolar_alis</span><span class="p">)</span>
<span class="nb">hold</span> <span class="n">on</span>
<span class="nb">plot</span><span class="p">(</span><span class="n">dolar_satis</span><span class="p">)</span>
<span class="nb">plot</span><span class="p">(</span><span class="n">euro_alis</span><span class="p">)</span>
<span class="nb">plot</span><span class="p">(</span><span class="n">euro_satis</span><span class="p">)</span>
</code></pre></div></div> <p><img src="/assets/kod/matlab/matlab59.webp" alt=""/></p> <p>Herhangi bir düzenleme yapmadan grafiğe döktüğümüz zaman görseldeki gibi bir görüntü ile karşılaşıyoruz. MATLAB’ın oluşturduğu pencere boyutu bana küçük geliyor. Yeniden boyutlandırma yaparken bir konuya dikkat etmemiz gerekiyor. Yazdığımız kod bize özel değilse veya programı başka ekranlarda da kullanıyorsak, ekran boyutlarının farklı olacağını unutmamız gerekiyor. Bunun için vereceğimiz yeni boyut, kullanıcının ekran boyutunun “0.6” katı olacak şekilde ayarlama yapalım. Bununla birlikte oluşturulan figür penceresine isim verme, “Figure 1” yazısını silme ve boyutunu sabitleme gibi özellikler için aşağıdaki kodları ekleyelim:</p> <div class="language-matlab highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">ekran_boyutu</span><span class="o">=</span><span class="nb">get</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="s1">'ScreenSize'</span><span class="p">);</span>
<span class="n">ekran_boyutu</span> <span class="o">=</span> <span class="n">ekran_boyutu</span> <span class="o">*</span> <span class="mf">0.6</span><span class="p">;</span>
<span class="n">fig</span><span class="o">=</span><span class="nb">figure</span><span class="p">(</span><span class="s1">'Name'</span><span class="p">,</span><span class="s1">'Döviz Kuru Grafiği'</span><span class="p">,</span><span class="k">...</span>
    <span class="s1">'outerposition'</span><span class="p">,[</span><span class="mi">0</span> <span class="mi">0</span> <span class="n">ekran_boyutu</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span> <span class="n">ekran_boyutu</span><span class="p">(</span><span class="mi">4</span><span class="p">)],</span><span class="k">...</span>
       <span class="s1">'NumberTitle'</span><span class="p">,</span><span class="s1">'off'</span><span class="p">,</span><span class="s1">'Resize'</span><span class="p">,</span><span class="s1">'off'</span><span class="p">,</span><span class="s1">'MenuBar'</span><span class="p">,</span><span class="s1">'none'</span><span class="p">,</span><span class="s1">'ToolBar'</span><span class="p">,</span><span class="s1">'figure'</span><span class="p">);</span>
</code></pre></div></div> <p><img src="/assets/kod/matlab/matlab60.webp" alt=""/></p> <p>Son olarak; eksen boylarını ayarlama, arka fonda ızgaraları gösterme gibi birkaç minik düzenleme yapalım. Kodumuzun son hali:</p> <div class="language-matlab highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">%kodlamaogreniyorum.com, 2020</span>
<span class="p">[</span><span class="n">kurlar</span><span class="p">,</span> <span class="n">metin</span><span class="p">,</span> <span class="n">hepsi</span><span class="p">]</span> <span class="o">=</span> <span class="nb">xlsread</span><span class="p">(</span><span class="s1">'kur.xlsx'</span><span class="p">);</span>
<span class="n">kurlar</span><span class="p">(</span><span class="o">~</span><span class="nb">any</span><span class="p">(</span><span class="o">~</span><span class="nb">isnan</span><span class="p">(</span><span class="n">kurlar</span><span class="p">),</span> <span class="mi">2</span><span class="p">),:)</span> <span class="o">=</span> <span class="p">[];</span>
<span class="n">dolar_alis</span> <span class="o">=</span><span class="n">kurlar</span><span class="p">(:,</span><span class="mi">1</span><span class="p">);</span>     <span class="c1">%1.sütun $ alış</span>
<span class="n">dolar_satis</span> <span class="o">=</span><span class="n">kurlar</span><span class="p">(:,</span><span class="mi">2</span><span class="p">);</span>   <span class="c1">%2.sütun $ satış</span>
<span class="n">euro_alis</span><span class="o">=</span><span class="n">kurlar</span><span class="p">(:,</span><span class="mi">3</span><span class="p">);</span>       <span class="c1">%3.sütun € alış</span>
<span class="n">euro_satis</span><span class="o">=</span><span class="n">kurlar</span><span class="p">(:,</span><span class="mi">4</span><span class="p">);</span>     <span class="c1">%4.sütun € satış</span>
<span class="n">ekran_boyutu</span><span class="o">=</span><span class="nb">get</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="s1">'ScreenSize'</span><span class="p">);</span>
<span class="n">ekran_boyutu</span> <span class="o">=</span> <span class="n">ekran_boyutu</span> <span class="o">*</span> <span class="mf">0.6</span><span class="p">;</span>
<span class="n">fig</span><span class="o">=</span><span class="nb">figure</span><span class="p">(</span><span class="s1">'Name'</span><span class="p">,</span><span class="s1">'Döviz Kuru Grafiği'</span><span class="p">,</span><span class="k">...</span>
    <span class="s1">'Innerposition'</span><span class="p">,[</span><span class="mi">0</span> <span class="mi">0</span> <span class="n">ekran_boyutu</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span> <span class="n">ekran_boyutu</span><span class="p">(</span><span class="mi">4</span><span class="p">)],</span><span class="k">...</span>
       <span class="s1">'NumberTitle'</span><span class="p">,</span><span class="s1">'off'</span><span class="p">,</span><span class="s1">'Resize'</span><span class="p">,</span><span class="s1">'off'</span><span class="p">,</span><span class="s1">'MenuBar'</span><span class="p">,</span><span class="s1">'none'</span><span class="p">,</span><span class="s1">'ToolBar'</span><span class="p">,</span><span class="s1">'figure'</span><span class="p">);</span>
<span class="nb">plot</span><span class="p">(</span><span class="n">dolar_alis</span><span class="p">,</span><span class="s1">'g'</span><span class="p">)</span>
<span class="nb">hold</span> <span class="n">on</span>
<span class="nb">plot</span><span class="p">(</span><span class="n">dolar_satis</span><span class="p">,</span><span class="s1">'r'</span><span class="p">)</span>
<span class="nb">plot</span><span class="p">(</span><span class="n">euro_alis</span><span class="p">,</span><span class="s1">'b'</span><span class="p">)</span>
<span class="nb">plot</span><span class="p">(</span><span class="n">euro_satis</span><span class="p">,</span><span class="s1">'y'</span><span class="p">)</span>
<span class="n">eksen_poz</span> <span class="o">=</span> <span class="nb">get</span><span class="p">(</span><span class="nb">gca</span><span class="p">,</span><span class="s1">'position'</span><span class="p">);</span>
<span class="n">eksen_poz</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="o">=</span> <span class="n">eksen_poz</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="o">*</span><span class="mf">0.5</span><span class="p">;</span>
<span class="n">eksen_poz</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span> <span class="o">=</span> <span class="n">eksen_poz</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span> <span class="o">*</span> <span class="mf">1.15</span><span class="p">;</span>
<span class="nb">set</span><span class="p">(</span><span class="nb">gca</span><span class="p">,</span><span class="s1">'XTick'</span><span class="p">,[</span><span class="mi">1</span><span class="p">:</span><span class="nb">length</span><span class="p">(</span><span class="n">dolar_alis</span><span class="p">)],</span><span class="s1">'position'</span><span class="p">,</span><span class="n">eksen_poz</span><span class="p">);</span>
<span class="nb">ylabel</span><span class="p">(</span><span class="s1">'Türk Lirası'</span><span class="p">);</span>
<span class="nb">grid</span> <span class="n">on</span> <span class="c1">%Izgara açmak için</span>
<span class="n">x_max</span> <span class="o">=</span> <span class="nb">length</span><span class="p">(</span><span class="n">dolar_alis</span><span class="p">);</span> <span class="c1">%X ekseni boy</span>
<span class="n">y_min</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="nb">min</span><span class="p">([</span><span class="n">dolar_alis</span> <span class="n">dolar_satis</span> <span class="n">euro_alis</span> <span class="n">euro_satis</span><span class="p">]))</span> <span class="o">-</span> <span class="mf">0.1</span><span class="p">;</span>
<span class="n">y_max</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="nb">max</span><span class="p">([</span><span class="n">dolar_alis</span> <span class="n">dolar_satis</span> <span class="n">euro_alis</span> <span class="n">euro_satis</span><span class="p">]))</span> <span class="o">+</span> <span class="mf">0.1</span><span class="p">;</span>
<span class="nb">axis</span> <span class="p">([</span><span class="mi">1</span> <span class="n">x_max</span> <span class="n">y_min</span> <span class="n">y_max</span><span class="p">])</span>
</code></pre></div></div> <p><img src="/assets/kod/matlab/matlab61.webp" alt=""/></p> <p><img src="/assets/kod/matlab/matlab62.webp" alt=""/></p> <p>Bu yazımızda MATLAB’da veri işlemlerine temel bir giriş yapmış olduk. MATLAB’a Excel’den veri çekip, bir grafik çizdirdik. Bununla birlikte, grafiğimizde ufak düzenlemeler yaptık. Bu yazının bu kadarıyla yeterli olacağını düşünüyorum.</p> <p>Bütün <strong>MATLAB kodlarına</strong> Github sayfam aracılığı ile erişebilirsiniz. Github sayfamın linkine aşağıdan ulaşabilirsiniz. Görüşmek üzere!</p> <p>Github: <a href="https://github.com/TunahanBilgic/kodlamaogreniyorum/tree/main/matlab">Github MATLAB</a></p> <p>Sitemize destek olmak isteyen sponsorlar için link: <a href="https://patreon.com/tunahanbilgic">Patreon</a></p>]]></content><author><name></name></author><category term="matlab-veri-islemleri"/><category term="matlab grafikler"/><category term="veri aktarma"/><category term="veri çekme"/><category term="matlab"/><summary type="html"><![CDATA[matlab-veri-islemleri]]></summary></entry><entry><title type="html">Python ile EKOK ve EBOB Bulma</title><link href="https://tunahanbilgic.dev/kod/python-ile-ekok-ve-ebob-bulma/" rel="alternate" type="text/html" title="Python ile EKOK ve EBOB Bulma"/><published>2020-11-25T03:00:00+00:00</published><updated>2020-11-25T03:00:00+00:00</updated><id>https://tunahanbilgic.dev/kod/python-ile-ekok-ve-ebob-bulma</id><content type="html" xml:base="https://tunahanbilgic.dev/kod/python-ile-ekok-ve-ebob-bulma/"><![CDATA[<p>Bu yazımızda, Python kullanarak EKOK(En küçük ortak kat) ve EBOB(En büyük ortak bölen) bulan program oluşturacağız. Oluşturduğumuz program, veri olarak girdiğimiz dizinin bütün elemanları arasında hesaplama yapacak. Python’da bulunan modüllerdeki hazır fonksiyonlar ile kolay bir şekilde EKOK veya EBOB hesaplayabiliyoruz ancak modüllere bağlılığı azaltmak ve programlama bilgimizi geliştirmek için kendimiz EKOK ve EBOB bulan bir program oluşturacağız. Kodlamaya geçelim:</p> <h1>EKOK:</h1> <div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">def</span> <span class="nf">ekok_bul</span><span class="p">(</span><span class="n">self</span><span class="p">):</span>
    <span class="n">çarpım</span> <span class="o">=</span> <span class="mi">1</span>
    <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">self</span><span class="p">:</span> <span class="n">çarpım</span> <span class="o">*=</span> <span class="n">i</span> <span class="c1">#Dizinin çarpımı
</span>    <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nf">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">çarpım</span><span class="o">+</span><span class="mi">1</span><span class="p">):</span>
        <span class="k">if</span> <span class="nf">sum</span><span class="p">([</span><span class="n">i</span> <span class="o">%</span> <span class="n">j</span> <span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="n">self</span><span class="p">])</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
            <span class="n">ekok</span> <span class="o">=</span> <span class="n">i</span>
            <span class="nf">print</span><span class="p">(</span><span class="sh">'</span><span class="s">Ekok</span><span class="sh">'</span><span class="p">,</span> <span class="n">self</span><span class="p">,</span> <span class="sh">'</span><span class="s">:</span><span class="sh">'</span><span class="p">,</span> <span class="n">ekok</span><span class="p">)</span>
            <span class="k">break</span>
</code></pre></div></div> <p><span style="color: red;">Python Modül Fonksiyonu:</span> <code class="language-plaintext highlighter-rouge">numpy.lcm()</code></p> <p>Hesaplama yapmak istediğimiz sayıların en küçük ortak katı, maksimum o sayıların çarpımına eşittir. Örnek olarak: verilen iki sayı A ve B olmak üzere; A ve B’nin en küçük ortak katı maksimum “A x B”, verilen üç sayı A, B ve C olmak üzere; A, B ve C’nin en küçük ortak katı maksimum “A x B x C” olabilir. Bu yüzden, döngümüz elimizdeki dizinin çarpımına kadar gitmek zorundadır.(4. Satır) En küçük ortak kat olan sayı, dizideki bütün sayılara kalansız bölünür.(5.Satır) Ancak en küçük ortak kat olan sayının katları da dizideki sayılara kalansız bölüneceği için o sayının katlarına geçmeden döngüyü durdurmamız gerekir.(8.Satır)</p> <p><img src="/assets/kod/python/python58.webp" alt=""/></p> <p><img src="/assets/kod/python/python59.webp" alt=""/></p> <h1>EBOB:</h1> <div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">def</span> <span class="nf">ebob_bul</span><span class="p">(</span><span class="n">self</span><span class="p">):</span>
    <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nf">reversed</span><span class="p">(</span><span class="nf">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="nf">max</span><span class="p">(</span><span class="n">self</span><span class="p">))):</span>
        <span class="k">if</span> <span class="nf">sum</span><span class="p">([</span><span class="n">j</span> <span class="o">%</span> <span class="n">i</span> <span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="n">self</span><span class="p">])</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
            <span class="n">ebob</span> <span class="o">=</span> <span class="n">i</span>
            <span class="nf">print</span><span class="p">(</span><span class="sh">'</span><span class="s">Ebob</span><span class="sh">'</span><span class="p">,</span> <span class="n">self</span><span class="p">,</span> <span class="sh">'</span><span class="s">:</span><span class="sh">'</span><span class="p">,</span> <span class="n">ebob</span><span class="p">)</span>
            <span class="k">break</span>
</code></pre></div></div> <p><span style="color: red;">Python Modül Fonksiyonu:</span> <code class="language-plaintext highlighter-rouge">numpy.gcd()</code></p> <p>En büyük ortak bölen sayıyı aradığımız için döngü iterasyonunun büyükten küçüğe doğru olması gerekiyor.(2.Satır) Birden fazla ortak bölen olabileceği için en büyük olanı bulduğumuzda döngüyü sonlandırmamız gerekiyor.(6.Satır)</p> <p><img src="/assets/kod/python/python60.webp" alt=""/></p> <p><img src="/assets/kod/python/python61.webp" alt=""/></p> <p>Tek bir “script” dosyası altında toplayalım:</p> <div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">#kodlamaogreniyorum.com, 2020
</span><span class="kn">import</span> <span class="n">numpy</span> <span class="c1">#Karşılaştırmak için
#Modül Kullanımı numpy.lcm(), numpy.gcd()
</span>
<span class="k">def</span> <span class="nf">ekok_bul</span><span class="p">(</span><span class="n">self</span><span class="p">):</span>
    <span class="n">çarpım</span> <span class="o">=</span> <span class="mi">1</span>
    <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">self</span><span class="p">:</span> <span class="n">çarpım</span> <span class="o">*=</span> <span class="n">i</span> <span class="c1">#Dizinin çarpımı
</span>    <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nf">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">çarpım</span><span class="o">+</span><span class="mi">1</span><span class="p">):</span>
        <span class="k">if</span> <span class="nf">sum</span><span class="p">([</span><span class="n">i</span> <span class="o">%</span> <span class="n">j</span> <span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="n">self</span><span class="p">])</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
            <span class="n">ekok</span> <span class="o">=</span> <span class="n">i</span>
            <span class="nf">print</span><span class="p">(</span><span class="sh">'</span><span class="s">Ekok</span><span class="sh">'</span><span class="p">,</span> <span class="n">self</span><span class="p">,</span> <span class="sh">'</span><span class="s">:</span><span class="sh">'</span><span class="p">,</span> <span class="n">ekok</span><span class="p">)</span>
            <span class="k">break</span>

<span class="k">def</span> <span class="nf">ebob_bul</span><span class="p">(</span><span class="n">self</span><span class="p">):</span>
    <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nf">reversed</span><span class="p">(</span><span class="nf">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="nf">max</span><span class="p">(</span><span class="n">self</span><span class="p">))):</span>
        <span class="k">if</span> <span class="nf">sum</span><span class="p">([</span><span class="n">j</span> <span class="o">%</span> <span class="n">i</span> <span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="n">self</span><span class="p">])</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
            <span class="n">ebob</span> <span class="o">=</span> <span class="n">i</span>
            <span class="nf">print</span><span class="p">(</span><span class="sh">'</span><span class="s">Ebob</span><span class="sh">'</span><span class="p">,</span> <span class="n">self</span><span class="p">,</span> <span class="sh">'</span><span class="s">:</span><span class="sh">'</span><span class="p">,</span> <span class="n">ebob</span><span class="p">)</span>
            <span class="k">break</span>

<span class="nf">ekok_bul</span><span class="p">([</span><span class="mi">12</span><span class="p">,</span> <span class="mi">14</span><span class="p">])</span>
<span class="nf">print</span><span class="p">(</span><span class="sh">'</span><span class="s">Modül Çıktısı:</span><span class="sh">'</span><span class="p">,</span> <span class="n">numpy</span><span class="p">.</span><span class="nf">lcm</span><span class="p">(</span><span class="mi">12</span><span class="p">,</span> <span class="mi">14</span><span class="p">))</span>
<span class="n">dizi</span> <span class="o">=</span> <span class="p">[</span><span class="mi">150</span><span class="p">,</span> <span class="mi">24</span><span class="p">,</span> <span class="mi">30</span><span class="p">,</span> <span class="mi">48</span><span class="p">]</span>
<span class="nf">ebob_bul</span><span class="p">(</span><span class="n">dizi</span><span class="p">)</span>
<span class="nf">print</span><span class="p">(</span><span class="sh">'</span><span class="s">Modül Çıktısı:</span><span class="sh">'</span><span class="p">,</span> <span class="n">numpy</span><span class="p">.</span><span class="nf">gcd</span><span class="p">(</span><span class="mi">150</span><span class="p">,</span> <span class="p">[</span><span class="mi">24</span><span class="p">,</span> <span class="mi">30</span><span class="p">,</span> <span class="mi">48</span><span class="p">]))</span>
</code></pre></div></div> <p>Bütün <strong>Python kodlarına</strong> Github sayfam aracılığı ile erişebilirsiniz. Github sayfamın linkine aşağıdan ulaşabilirsiniz. Görüşmek üzere!</p> <p>Github: <a href="https://github.com/TunahanBilgic/kodlamaogreniyorum/tree/main/python">Github Python</a></p> <p>Sitemize destek olmak isteyen sponsorlar için link: <a href="https://patreon.com/tunahanbilgic">Patreon</a></p>]]></content><author><name></name></author><category term="python-ornek-uygulamalar"/><category term="ebob"/><category term="ekok"/><category term="lcm"/><category term="gcd"/><category term="python"/><summary type="html"><![CDATA[python-ornek-uygulamalar]]></summary></entry><entry><title type="html">MATLAB ile EKOK ve EBOB Bulma</title><link href="https://tunahanbilgic.dev/kod/matlab-ile-ekok-ve-ebob-bulma/" rel="alternate" type="text/html" title="MATLAB ile EKOK ve EBOB Bulma"/><published>2020-11-25T02:03:00+00:00</published><updated>2020-11-25T02:03:00+00:00</updated><id>https://tunahanbilgic.dev/kod/matlab-ile-ekok-ve-ebob-bulma</id><content type="html" xml:base="https://tunahanbilgic.dev/kod/matlab-ile-ekok-ve-ebob-bulma/"><![CDATA[<p>Bu yazımızda, MATLAB kullanarak EKOK(En küçük ortak kat) ve EBOB(En büyük ortak bölen) bulan program oluşturacağız. Oluşturduğumuz program, veri olarak girdiğimiz dizinin bütün elemanları arasında hesaplama yapacak. MATLAB’da bulunan hazır fonksiyonlar ile kolay bir şekilde EKOK veya EBOB hesaplayabiliyoruz ancak hazır fonksiyonlar, hesap yaparken iki elemanı veri olarak almaktadır. Buna ek olarak programlama bilgimizi geliştirmek için kendimiz EKOK ve EBOB bulan bir program oluşturacağız. Kodlamaya geçelim:</p> <h1>EKOK:</h1> <div class="language-matlab highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">function</span> <span class="n">ekok</span> <span class="o">=</span> <span class="n">ekok_bul</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
    <span class="k">for</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">1</span><span class="p">:</span><span class="nb">prod</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="c1">%Dizinin çarpımı</span>
        <span class="k">if</span> <span class="nb">mod</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">x</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span>
            <span class="n">ekok</span> <span class="o">=</span> <span class="n">i</span><span class="p">;</span>
            <span class="nb">fprintf</span><span class="p">(</span><span class="s1">'Ekok: %d\n'</span><span class="p">,</span><span class="n">ekok</span><span class="p">);</span>
            <span class="k">break</span>
        <span class="k">end</span>
    <span class="k">end</span>        
<span class="k">end</span>
</code></pre></div></div> <p><span>MATLAB Fonksiyonu:</span> <code class="language-plaintext highlighter-rouge">lcm(A, B)</code></p> <p>Hesaplama yapmak istediğimiz sayıların en küçük ortak katı, maksimum o sayıların çarpımına eşittir. Örnek olarak: verilen iki sayı A ve B olmak üzere; A ve B’nin en küçük ortak katı maksimum “A x B”, verilen üç sayı A, B ve C olmak üzere; A, B ve C’nin en küçük ortak katı maksimum “A x B x C” olabilir. Bu yüzden, döngümüz elimizdeki dizinin çarpımına kadar gitmek zorundadır.(2. Satır) En küçük ortak kat olan sayı, dizideki bütün sayılara kalansız bölünür.(3.Satır) Ancak en küçük ortak kat olan sayının katları da dizideki sayılara kalansız bölüneceği için o sayının katlarına geçmeden döngüyü durdurmamız gerekir.(6.Satır)</p> <p><img src="/assets/kod/matlab/matlab67.webp" alt=""/></p> <p><img src="/assets/kod/matlab/matlab68.webp" alt=""/></p> <h1>EBOB:</h1> <div class="language-matlab highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">function</span> <span class="n">ebob</span> <span class="o">=</span> <span class="n">ebob_bul</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
    <span class="k">for</span> <span class="n">i</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">x</span><span class="p">):</span><span class="o">-</span><span class="mi">1</span><span class="p">:</span><span class="mi">1</span>
        <span class="k">if</span> <span class="nb">mod</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">i</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span>
            <span class="n">ebob</span> <span class="o">=</span> <span class="n">i</span><span class="p">;</span>
            <span class="nb">fprintf</span><span class="p">(</span><span class="s1">'Ebob: %d\n'</span><span class="p">,</span><span class="n">ebob</span><span class="p">);</span>
            <span class="k">break</span>
        <span class="k">end</span>
    <span class="k">end</span>
<span class="k">end</span>
</code></pre></div></div> <p><span>MATLAB Fonksiyonu:</span> <code class="language-plaintext highlighter-rouge">gcd(A, B)</code></p> <p>En büyük ortak bölen sayıyı aradığımız için döngü iterasyonunun büyükten küçüğe doğru olması gerekiyor.(2.Satır) Birden fazla ortak bölen olabileceği için en büyük olanı bulduğumuzda döngüyü sonlandırmamız gerekiyor.(6.Satır)</p> <p><img src="/assets/kod/matlab/matlab69.webp" alt=""/></p> <p><img src="/assets/kod/matlab/matlab70.webp" alt=""/></p> <p>Bütün <strong>MATLAB kodlarına</strong> Github sayfam aracılığı ile erişebilirsiniz. Github sayfamın linkine aşağıdan ulaşabilirsiniz. Görüşmek üzere!</p> <p>Github: <a href="https://github.com/TunahanBilgic/kodlamaogreniyorum/tree/main/matlab">Github MATLAB</a></p> <p>Sitemize destek olmak isteyen sponsorlar için link: <a href="https://patreon.com/tunahanbilgic">Patreon</a></p>]]></content><author><name></name></author><category term="matlab-ornek-uygulamalar"/><category term="ebob"/><category term="ekok"/><category term="gcd"/><category term="lcm"/><category term="matlab"/><summary type="html"><![CDATA[matlab-ornek-uygulamalar]]></summary></entry></feed>