DERS 2 : MATLAB e Giriş 2
İkinci derste, basit olarak 2D grafik çizimi (2D plotting)
,Script dosyası ve basit olarak programlamaya(programming) giriş
yapılacaktır.Daha sonraki derste ise bu işlemleri daha da detaylandıracağız.
Bu arada internet üzerinden “MATLAB Primer pdf” şeklinde
arama yaparsanız MathWorks’un kaynağına ulaşabilirsiniz.
2D-Plot
>> help plot
İlk olarak bu komutu Command Window’a girerek nasıl
kullanıldığına bakıyoruz.
Şimdi, sinüs grafiği çizdirelim.İşlemlerimizi yaparken
küçükte olsa algoritmalar kurmak daha düzgün,amaca ulaşabilen ve daha karmaşık
kodları daha kolay yazmak için çok önemlidir.
1.Amaç : sinüs grafiği çizdirmek
2.Girdiler(Inputs) : x (0 ile 2p arasında olsun)
3.Matematiksel denklem : y = sin(x)
4.Çıktı(Output) : y
>> x = 0:pi/100:2*pi; Burada
x, 0’dan başlayıp , pi/100’er pi/100’er artıp, 2 x pi ‘de bitiyor.
>> y = sin(x)
>> plot(x,y) x(yatay)
ekseni x,y(düşey) ekseni y olan grafik çiziyor.
>>xlabel('x')
>>ylabel('sin(x)')
>>title('sinüs fonksiyonu grafiği') label
ve başlık ekleyebilirsiniz…
*** plot fonksiyonu ilk olarak x vektörünün her bir değeri için y
vektörünü oluşturur ve sırasıyla her bir noktayı birleştirir.Yani x ile y
vektörü aynı boyuttadırlar. length(x),length(y) komutlarını kullanarak
boyutlarını bulabilirsiniz.
*** Ayrıca x vektörünün artışını(increment) pi/100 değil de, pi/2
‘şer arttırırsanız x vektörü 5 elemana sahip olacaktır.Bu noktaları
birleştirdiğinde daha sağlıksız sonuç alırız.Yani data fazlaysa,çizim iyileşir
ancak bellekte daha fazla yer depolar.
Grafik Çiziminde Ek Bilgiler
>>plot(x,y,'r--')
Burada,r à red (kırmızı) ve -- à grafiğin çizgi
çizgi basılmasını sağlar.
>>plot(x,y,’g+’,’LineWidth’,2) burada “LineWidth” çizgi kalınlığını 2 olarak ayarlar.
Örnek 1 : y
= cos(t)e-|t|
Grafiğini çizdiriniz.
t ‘nin aralığı 0’dan +4p’ye
olabilir.
Grafik siyah renk olsun.
Çizgi kalınlığı 2

help komutu kullanarak
semilogx, semilogy, loglog, grid, hold,axis,legend,text,abs
fonksiyonlarına bakınız.
Bunlar,ileride detaylı incelenecek…
ÖRNEK 2 : w =
4000 rad/s ve t’nin aralığı -2p’den
+2p’ye olacak şekilde
y1 = cos(wt + p/6)
y2 = cos(wt + p/3) grafiklerini çizdiriniz.Bunu
yapabilmek için w,t,y1 ve y2 ifadelerini
tanımladıktan sonra
>>figure (1) Grafiğin
çizdirileceği figürü açınız.
>>hold on Sonra
bunu yazınız,bu komut aynı figürde çoklu
grafik çizimine ve hold off yazana
kadar her komutu açtığınız figür için yapmanızı sağlar.Bunun için label ve
title tanımlamalarınızı da bunu kullanarak yapabilirsiniz.
>>help grid
ve >>help axis komutlarını
girmeyi unutmayınız.

Aynı Figürde Çoklu Grafik (Multiple Plots)
x =
0:pi/100:2*pi;
y =
sin(x);
plot(x,y)
hold on
y2 = cos(x);
plot(x,y2,':')
Fazladan grafik eklemek için hold fonksiyonun kullanırız.Ve hold
off kullanana kadar istediğiniz kadar çizdirebilirsiniz.
3D plot ve subplot daha sonraincelenecektir.Şimdi çok fazla
detaya girmedik.
Programlama ve Script
Dosyaları(Programming and Scripts)
Command Window’a edit plotting girerseniz,plotting.m olarak kayıtlı
script dosyası açılacaktır.
Daha önceden Command Window’da yaptığımız işlemleri daha
düzgün yapacağız.Eğer işlemlerin sonuna noktalı virgül(;) koyarsanız sonuç
Command Window’da basılmaz,ancak hiçbir şey koymazsanız ekrana basacaktır.
>>edit plotting_ex1 YES,diye
yanıtlıyoruz :)
Aşağıdaki kodları inceleyelim :
% bu dosya
plotting_ex.m olarak kaydedildi
% ilk olarak t aralığı
tanımlayacağız
% sonra y1 =
3*cos(2.*t)
% y2 = 3*y1 + 2
t = -6*pi:pi/100:6*pi;
y1 = 3*cos(2.*t);
y2 = 3*y1 + 2;
%plot çizimi
figure (1) %figür
açtık
hold on
plot(t,y1,'k+','LineWidth',3)
plot(t,y2,'r:')
xlabel('t')
title('y1 ve
y2 ''nin çizimi') %başlık
legend('y1','y2') %önce
ilk çizilen plot,sonra da ikinci çizilen plot'u
%kutu
içinde hangi plotun nasıl
%çizildiğini
gösterir
grid on %figürü
karelere böldük
hold off %
işlemi tamamladık
%şimdi de y1 ve y2
'nin maximum değerlerini bulup yazdıralım
y1_max = max(y1);
y2_max = max(y2);
disp('y1
için en büyük değer ')
disp(num2str(y1_max)) %burada num2str(y1_max)
nümerik ifadeyi string'e çevirdi
disp('y2
için en büyük değer ')
disp(num2str(y2_max))

1.
% operatörünü kullanarak yorum yazabilirsiniz
2.
Command Window’da tek tek komutları girmek
yerine çok daha kullanışlıdır.
3.
num2str string’e
çevirdi.
4.
2 plot’u da aynı figürde çizdiğimizden dolayı x
ekseni ortak kullandık,yoksa matematiksel yorumunda zorluk çekebilirdik.
5.
Son olarak da ,help fonksiyonu nasıl önemliyse
,scriptler’de de yorum yazmak (%.... ) çok önemlidir.
ÖRNEK 3 : Aşağıdaki aşamaları uygula ve yazacağın script
dosyasına kendi yorumlarını da ekle.
a)
Yeni script dosyası aç ve throwBall.m olarak kaydet.
b)
İlk olarak dosyanın üst kısımlarına bazı
sabitler(constants) tanımlaman gerekiyor.
i.
Topun atıldığı andaki, yani ilk yüksekliği 1.5 m
ii.
Yer çekim ivmesi 9.8 m/s2
iii.
Topun atılma hızı 4 m/s
iv.
Topun fırlatılma açısı yere göre 45 derece’dir.
c) Şimdi zaman(time vector) oluşturalım ve,0 ile
1 arasında 1000 elemanlı olsun.
d)x mesafe ve y ise yükseklik,buna göre aşağıdaki denklemleri zamanın fonksiyonu
olarak tanımla.Diğer parametreler ise,(ilk yükseklik h,yerçekimi ivmesi g,topun
ilk hızı v,hız vektörünün açısı theta) ve denklemleri çöz.
e) i. Yüksekliğin ilk defa negatif olduğu indeksi
bulunuz (find kullanınız.)
ii. topun yere çarptığı andaki x
mesafesini bulunuz ve indeksini bulunuz
iii. Şunu yazdırınız : “top x
mesafe sonra yere çarptı.” ii’de
bulduğumuz değer x’tir.
f) Şimdi sıra,plot olarak çizdirmekte
i. yeni figür aç (figure)
ii. mesafe,yükseklik grafiği
çizdir (plot)
iii. label ve başlık ekle.
iv. başka bir grafik çizimi için(hold)
v. yer seviyesini çizdir.Bunu yapabilmek için yatay
bir çizgi olacak ve 0’dan x’in maximum değerine kadar (max)
g) Kodu çalıştır,ve
yaklaşık grafik şunun gibi görünecek,Command Window’a yazdırılan değer yaklaşık
2.5821 olacak.

Bu problem MIT
OpenCourseWare 6.094 Introduction to MATLAB® January Homework 1’den alınmıştır.
Şimdi bazı fonksiyonların kullanımına
bakalım :
input()
komutu : Kullanıcıdan klavye aracılığıyla programcı tarafından girilmesi
istenen değişken istenir ve ilgili değişkene atanır.
>> yas = input(‘Yasinizi Giriniz : ’)
Yasinizi Giriniz : 21
yas =
21
fprintf() komutu : Bir açıklama ifadesiyle birlikte
bir veya birden fazla değerin görüntülenebilmesini sağlar.

PROGRAMLAMA
İf-else yapısı
İf-elseif-else yapısı seçim mekanizması
için kullanılır. Bir mantıksal ifadeyi kontrol ederek bunun sonucuna göre
mümkün seçeneklerden birini icra edebilen bir komuttur.

ÖRNEK 4 : Bir Script dosyasında,ilk olarak kullanıcıdan
0-100 arasında bir integer sayı isteyin.Eğer girdiği
Sayı 50’den büyük ise ,Sayı
50’den büyük
Sayı 50 ise,sayı 50
Sayı 50’den küçük ise ,50’den küçük sayı
girdiniz. Yazdıran bir program yazınız.
FOR
DÖNGÜSÜ
Bir çok uygulamada belirli işlemlerin tekrar tekrar
gerçekleştirilmesi gerekir. Programlamada bu işlemler grubunu çok sayıda tekrar
etmek imkanı sağlayan yapılara ÇEVRİM, DÖNGÜ veya LOOP denir.
Örnek 5 : 1’den 100’ye kadar sayıların toplamını bulan program
toplam
= 0 ;
for x = 1:100
toplam
= toplam + x ;
end toplam
while
Döngüsü
while’da belirtilen
durum gerçekleşmeyinceye kadar içindeki komutları uygular.Yani,while
ifadesi 1 (doğru)ise,while döngüsünün
içine girer,0(yanlış) olunca döngü sonlanır.

Örnek 6 : Ax+b=0 şeklinde verilen 1. derece
denklemin çözümünü veren programı yanda verilen akış diyagramından
yararlanarak MATLAB’de programlayınız.
A=input(‘A
katsayısını giriniz..: ’);
while
A=0
A=input(‘A
katsayısını giriniz..: ’);
end
B=input(‘B
katsayısını giriniz..: ’);
x=-B/A;
fprintf(‘%d \n’,x)
KAYNAKLAR
1.
MIT OpenCourseWare 6.094 Introduction to
MATLAB® January
Homework 1
2.
MATLAB® Primer © COPYRIGHT 1984–2015 by The MathWorks, Inc.
3.
Matlab Ders
Notları- MATLAB’ de Programlama- Doç. Dr.
İrfan KAYMAZ
Hiç yorum yok:
Yorum Gönder