9 – Matlab Dosyası Oluşturma, Vektör Örneği ve Temel Grafik Çizimi

Merhaba, bu 9. yazıda, önceki yazının sonunda da belirttiğim üzere ilk olarak Matlab ortamında yazdığımız programları nasıl kaydedeceğimizi göreceğiz. Öncelikle, birkaç satır kod yazalım ve bunun neden gerekli olduğunu söyleyelim. Ardından da nasıl yapacağımıza bakalım.

İlk olarak, 3 adet x,y,z isimli değişkenlerimizi tanımlayalım. İstediğimiz herhangi bir değeri verebiliriz. Daha sonra da z ye x+y değerini verelim. Daha sonra x’in değerini 1 azaltıp z’de değişme olup olmadığına bakalım:

>> x = 3;
>> y = 5;
>> z = 11;
>> z

z =

    11

>> z = x+y

z =

     8

>> x = 2

x =

     2

>> z

z =

     8

Gördüğümüz üzere z’nin değeri x’ten bağımsız. Ve z’nin ilk değerini tekrar kullanma şansımız yok. Bu küçük örnekte pek işe yaramıyor da olsa, programlar büyüdükçe, varsayılan değerleri tekrar tekrar atamak zorlaşacak. Hepsinden önce, yazdığımız programları bir yerde kaydedip istediğimiz zaman çalıştırmak veya üzerlerinde değişiklik yapmak isteyeceğiz. Bu işlemler için Matlab bize m-file(m dosyası) sunuyor. Aslında korkulacak bir şey yok. Uzantısı .m olan dosyaların Matlab dosyası olduğunu bilmemiz ve dosyalarımızı buna göre kaydetmemiz gerekiyor. Şimdi yeni bir m dosyasını nasıl oluşturacağımıza bakalım:

Resimde de görebileceğimiz üzere File=>New=>Script menülerini izleyerek ya da CTRL+N(bu zaten klasiktir) kısayolunu kullanarak bir m dosyası oluşturabiliriz. M dosyası oluşturduğumuzda karşımıza bir editör gelecektir.

Karşımıza çıkan editörden de kısaca bahsedeyim. Kodlarımızı tıpkı komut satırına yazdığımız gibi yazıyoruz. Farklı olarak, burada >> yer almıyor ve biz de eklemiyoruz. Yani not alır gibi yazıyoruz. Deneme amaçlı olarak yukarıda yaptığımız tanımlamaları yapabiliriz:

x = 3;
y = 5;
z = 11;

Kodlarımızı çalıştırmak için, önce bu dosyası kaydetmemiz gerekiyor. İsterseniz yukarıdaki yeşil oynatma butonunu kullanarak, isterseniz klavyeden F5’e basarak dosyayı çalıştırmak için işleme koyabilirsiniz. Çalıştırmadan önce sizden eğer kaydetmediyseniz kaydetmenizi isteyecek, kayıt penceresi açılacaktır. Yok ama ben sadece kaydetmek istiyorum, çalıştırmak istemiyorum derseniz CTRL+S yine klasikler arasında sizi bekliyor.

Bu esnada eğer dosyanızı Matlab’ın yolu(path’i) üzerinde yer almayan bir klasöre kaydederseniz, size change location ve add to path seçeneklerini sunacaktır. Kodların problemsiz işleyebilmesi için add to path seçeneğini öneririm. Tabii isterseniz path içerisinde yer alan klasörleri de deneyebilirsiniz(bu klasörler ezberimde olmamakla birlikte genel olarak Matlab program dosyalarının olduğu klasörler).

Bu işlemleri sorunsuz yaptıysanız program çalıştığında değişkenler kısmında, ya da who veya whos yazarak tanımlanmış değişkenleri görebilirsiniz. Bu konudaki sorularınızı burdan sorarsanız elimden geldiğince yanıtlarım.

Önceki dersimizde, vektörlerle ilgili örnek soru yapacağımızı söylemiştim. Şimdi, vektörlerin işlevlerini biraz daha iyi anlama amaçlı olarak bu dediğimi yapalım. 2x^2+4x+5 fonksiyonunun -5 ile 5 arasındaki 1000 değerdeki sonucunu hesaplayalım ve son olarak da, bu hesaplamayı anlattıktan sonra bu dediğimi grafiğe dökelim.

Öncelikle, x değerlerinin -5 ile 5 arasında değiştiğini biliyoruz. Bunun anlamı da 1000 sayı koyacaksak linspace fonksiyonunun uygun olabileceği. O halde x = linspace(-5,5,1000) ilk satırımızı oluşturacak. Bu arada, bu kodları bir m dosyasına yazıyorum, isterseniz m dosyasından, isterseniz de komut satırından kopyalayarak veya yazarak(öneridir) deneyebilirsiniz. Şimdi de, fonksiyonumuzun sonuçlarını fonk isimli bir değişkende toplayalım. Vektörlerle işlem yapmanın rahatlığını burada göreceğiz. Tüm elemanları tek tek hesaplatmak yerinex değişkenini direk yerine koyacağız. İsterseniz bu kısmı kodları yazıp inceleyelim:

x = linspace(-5,5,1000);
fonk = 2*x.^2+4*x+5;

fonk’in değerini incelerseniz, -5 ile 5 dahil olmak üzere o aralıktaki 1000 sayının bu fonksiyondaki değerlerinin atanmış olduğunu görebilirsiniz. Burada yapılan şey aslında x vektörünün tüm elemanlarının fonksiyon ile işleme sokarak fonk isimli değişkene atanmasıydı. Kodu ve çıktılarını biraz incelerseniz daha iyi oturacaktır.

Şimdi elimizde bir değişkenin aldığı 1000 değer ve bu değerlerin fonksiyonda hesaplanmış sonuçları var. Bunları nasıl grafiğe dökeceğimize bakalım. Burada belirtmem gereken nokta, grafik çizimlerinin çok daha detaylı şekilde yeri geldiğince anlatılacağıdır. Onun için şu an bir giriş yapmakla yetineceğiz. Basit olarak, x ve y eksenlerinden oluşan 2d bir grafiği Matlab ile(ya da Python ile matplotlib yardımıyla) çizerken plot fonksiyonunu kullanıyoruz. Zaten biraz araştırma yaparsanız, matplotlib’de bulunan grafik çizim fonksiyonunun Matlab ile büyük oranda aynı olduğunu, bunun sebebinin ise ikisi arasındaki geçişleri rahatlatmak olduğunu görebilirsiniz. Şimdi plot fonksiyonunu en ilkel hallerinden biriyle nasıl kullanacağımıza bakalım:

plot(x ekseni değişkeni, y ekseni değişkeni)

Elimizde x eksenine yazılacak değişken olarak halihazırda x var. Yine y ekseni için de fonk isimli bir vektör tanımladık. Şimdi isterseniz bu komutu kullanalım ve çıktımızı görelim. Burada çıktıyı paylaşmamakla birlikte, m dosyasının bu halini tümüyle paylaşacağım.

x = linspace(-5,5,1000);
fonk = 2*x.^2+4*x+5;
plot(x,fonk);

Kodu yazdığımızda ekranda bir grafiğin belirdiğini görüyoruz. Burada isterseniz 1000 değer için değil de, 10 değer için de grafiği çizersiniz. Ancak değer sayısı arttıkça detaylar netleşecek ve büyüttüğünüzde alacağınız sonuç o kadar verimli olacaktır.

Şu an elimizdeki bir polinomun grafiğini çizebiliyoruz. Tabii ki burada bu şekilde bir polinom olması gerekmiyor. Sinüs, kosinüs,exp veya aklınıza gelen her türlü tek değişkenli fonksiyonu plot fonksiyonu yardımıyla çizebiliriz. Ancak polinomlarla çalışıyorsak elimizde bir yöntem daha var. Onu da hemen belirtelim.

polyval() fonksiyonu elimizde bir polinomun katsayılar vektörü ve bir de değişkenin değerlerinin bulunduğu vektör varken işimize yarıyor. Yani polinomumuz [2 4 5] şeklinde ifade edilirse( help polyval yazdığımızda bu ifadenin açılımı için bir ifade görebiliriz), bir başka deyişle, sağa 0. derecenin üssü gelecek şekilde yazılırsa ve bu polinom isimli bir vektöre atanırsa polyval fonksiyonu işimizi görür. Kullanımı ise polyval(polinom,değişken değerleri) şeklindedir. Bunu bir değişkene atarsak fonksiyonun sonucunda elde edilen değerleri atamış oluruz. Kısacası, yukarıda yaptığımız işin aynısını polinomlar için farklı bir yolla yapmış oluyoruz. Kodu çalıştırdığımızda karşımıza aynı grafik gelecektir.

x = linspace(-5,5,1000);
polinom = [2 4 5]
fonk2 = polyval(polinom,x)
plot(x,fonk2);

Bu aşamaya kadar grafiklerle ilgili ve vektörlerin kullanımıyla ilgili bir örnek üzerinde dilim döndüğünce açıklamaya çalıştım. Takıldığınız bir nokta olursa, nasıl ulaşacağınızı biliyorsunuz.

 
comments powered by Disqus