MatLab Mustafa Coşar mustafacosar@hitit.edu.tr http://web.hitit.edu.tr/mustafacosar
Sunum Planı fprintf komutu Clc, clear ve help komutları Koşullu ve Döngü ifadeleri Matlab da Fonksiyonlar Sorular
Ekran Çıkış İşlemleri (Formatlı) fprintf: çıkışı formatlı (biçimlendirilmiş) yaptırmak için kullanılır. fprintf( ekrana basılacak açıklama ve format \n, değer (veri ya da değişken)) Örnek; >>fprintf( \npi sayisi = %5.2f \n, pi) --- Önce bir satır atlar pi sayisi = 3.14 (yazdırılacak değer için toplam 5 hanelik yer ayırır, noktadan sonra 2 hane yazar) Format Tanımı Belirteci Karakter Tanımı \n new line (yeni satır) \t tab (sekme) \b backspace %e Bilimsel (üstel) gösterir %d, %g Tamsayı değeri basar. %f (floating) Reel sayı, aksi belirtilmedikçe virgülden sonra 6 basamak gösterir %c Tekil karakter %s Karakter Katarı
Ekran Çıkış İşlemleri (Formatlı)
karakter= a'; isim='mustafa'; tamsayi=25; ondaliklisayi=pi; fprintf Kullanımına Örnekler >> fprintf('tanımlanan Karakter = %c \n',karakter); Tanımlanan Karakter = a >> fprintf('tanımlanan Karakter Dizisi = %s \n, isim); Tanımlanan Karakter Dizisi = mustafa >> fprintf('tanımlanan Tamsayı = %d \n', tamsayi); Tanımlanan Tamsayı = 25 >> fprintf('tanımlanan Ondalıklı Sayı = %f \n', ondaliklisayi); Tanımlanan Ondalıklı Sayı = 3.141593 >> fprintf('tamsayı = %d ve Ondalıklı Sayı = %f \n', tamsayi,ondaliklisayi); Tamsayı = 25 ve Ondalıklı Sayı = 3.141593
Aşağıdaki 2 Komut Aynı İşi Yapar >> disp('uzgunum! Sifira Bolum Hatasi Var.'); Uzgunum! Sifira Bolum Hatasi Var. >>fprintf('uzgunum! Sifira Bolum Hatasi Var.\n'); Uzgunum! Sifira Bolum Hatasi Var.
disp ve fprintf Arasındaki Farklar disp komutu ekrana çıktı verdikten sonra bir alt satıra otomatik olarak atlar. fprintf komutunu bir alt satıra götürebilmek için ise \n kullanılmalıdır. Ayrıca disp komutu satır veya sütun vektörleri ile matrisleri ekrana kolayca yazdırabilirken aynı işlemi fprintf ile yapabilmek daha çok işlem gerektirmektedir.
4. Matlab da clc, clear ve help Komutları clc komut penceresini temizler. clear bütün değişkenleri ve fonksiyonları bellekten siler. (Bütün değişkenleri çalışma alanından (workspace) çıkarır.) help komutlar ile ilgili yardım penceresini açar. >>help clc >>help clear >>help sqrt Daha detaylı yardım için (komutun kullanımına ait örnekleri de görmek için) doc komutundan faydalanabilirsiniz. >>doc sqrt
>>help clc clc - Clear Command Window This MATLAB function clears all input and output from the Command Window display, giving you a clean screen. clc Reference page for clc See also clear, clf, close, home >>doc clc
6. Matlab da Koşul ve Döngü İfadeleri IF Switch For While
if koşul deyimi Bir mantıksal ifadeyi kontrol ederek bunun sonucuna göre mümkün seçeneklerden birini icra edebilen bir komuttur. IF in Üç şekli vardır IF Şart 1. işlem 2. işlem 3. işlem : END IF Şart 1.işlem; ELSE 2. işlem END IF Şart ELSEIF ELSE END
Uygulama-1: 1 den klavyeden girilen herhangi bir sayı ya kadar tüm sayıların toplamını ve çarpımını hesaplayan bir program yazınız.
Uygulama-2: Dışarıdan girilen x değerlerine göre aşağıdaki fonksiyonun değerini hesaplayan bir program yazınız. 1 < = x < 10 ise F(x) x x 2 x 3 x 4 x 5 10 < = x ise F(x) x x 2 ln(x) 1 log (x) 10 tan(x) x 3 x 4 x 5
Uygulama-3: Girilen iki sayının oranını bulan ve payda sıfır girildiğinde ekrana üzgünüm sıfıra bölüm hatası var mesajı yazdıran program oran pay payda pay = input('payı giriniz: '); payda = input('paydayı giriniz: '); if payda~=0 oran = pay/payda; disp(oran); Else disp('üzgünüm sıfıra bölüm hatası var'); end
Uygulama-4: Klavyeden girilen ay numarasına göre o ayın gün sayısını söyleyen bir program clear ay=input('kaçıncı ayın gün sayısını öğrenmek ist(1-12)= '); if ay==1 ay==3 ay ==5 ay==7 ay==8 ay==10 ay==12 disp( Bu Ay 31 günden oluşur ); elseif ay==2 disp(' Bu Ay 28 günden oluşur '); else disp(' Bu Ay 30 günden oluşur '); end
Uygulama-5: Dışardan girilen bir derse ait quiz, vize ve final notlarını alıp ortalamasını hesaplayan geçme/kalma durumunu ve harfli sisteme göre harf notunu bulan bir program yazınız. Not: Şart Harfli Not --------- ------------ Ortalama >= 90 AA 75 <= Ortalama < 90 BB 60 <= Ortalama < 75 CC 45 <= Ortalama < 60 DD Diğer FF
Switch Koşullu ifadesi Herhangi bir değişkenin ya da işlem sonucunun bir koşula bağlı olarak farklı durumları ifade etmek için kullanılan yapıdır. Switch (değişken veya işlem sonucu) case (durum1) işlemler case (durum2).. işlemler end otherwise isteğe bağlı
Uygulama-6: 1 ile 10 arasında girilen sayıların tek ya da çift olduğunu ekrana yazdıran programı yazınız sayi=input( 1 ile 10 arasında bir sayı giriniz: ); switch (sayi) end case {1,3,5,7,9} disp( Bu sayı Tektir ); case {2,4,6,8,10} otherwise disp( Bu sayı Çifttir ); disp( Girilen Sayı 1 ile 10 arasının değildir );
Uygulama-7: Girilen ay numarasına göre, o ayın gün sayısını veren programı switch komutu kullanarak yazınız. ay = input('bir ay numarası giriniz (1-12)='); switch ay case {1,3,5,7,8,10,12}; disp('bu Ay 31 günden oluşur') case {2} disp('bu Ay 28 günden oluşur') case {4,6,8,9,11}; disp('bu Ay 30 günden oluşur') end
Uygulama-8: Dışardan girilen bir derse ait quiz, vize ve final notlarını alıp ortalamasını hesaplayan geçme/kalma durumunu ve harfli sisteme göre harf notunu switch komutuyla bulan bir program yazınız. Not: Şart Harfli Not --------- ------------ Ortalama >= 90 AA 75 <= Ortalama < 90 BB 60 <= Ortalama < 75 CC 45 <= Ortalama < 60 DD Ortalama < 45 FF
FOR DÖNGÜSÜ Uygulamalarda belirli işlemlerin tekrar tekrar gerçekleştirilmesi gerektiğinde kullanılan yapılara ÇEVRİM, DÖNGÜ veya LOOP denir. Bu yapılardan en önemlisi for yapılarıdır. for döngüsünün genel yapısı for döngü değişkeni = başlangıç : bitiş işlemler end Döngüler, programdaki işlem sayısını önceden belirleyerek ve bu sayıya ulaşıp ulaşmadığını her çevrimde denetleyerek işlemi tekrarlarlar.
Örnek: 1 den 20 ye kadar sayıların toplamını bulan program toplam = 0 ; for x = 1:20 toplam = toplam + x ; Bir sonraki adım end disp (toplam)
Uygulama-9: 1 ile girilen herhangi bir sayı arasındaki sayıların toplamını ve çarpımını hesaplayan bir program yazınız. sayi=input( lütfen bir sayı giriniz = ); toplam=0 ; carpim=1 ; for i=1:sayi end toplam carpim toplam=toplam+i ; carpim=carpim*i ;
Uygulama-10: fprintf('for döngüsü testi başlıyor\n'); for i = 4:-1:1 fprintf('for döngüsü testi. i = %g\n', i); end fprintf('\n Döngünün sonu.\n'); For döngüsü testi başlıyor For döngüsü testi. i = 4 For döngüsü testi. i = 3 For döngüsü testi. i = 2 For döngüsü testi. i = 1 Döngünün sonu.
İçiçe FOR döngüleri Carpim = 1; for i = 1:5 Toplam = 0; for j = 1:5 Toplam = Toplam + j; end Carpim = Carpim * i; end disp(['toplama işleminin sonucu='num2str(toplam)'dır']); disp(['çarpma işleminin sonucu='num2str(carpim)' dır']);
While Döngüsü Önceden belirlenmiş belli bir durum gerçekleşinceye kadar gereken sayıda tekrar edilen ifadeleri içerir. Genel Kullanımı: While durum end ifade_1 ifade_2 ifade_n
Örnek: a=5 while a<10 a=a+1; disp(a); end Uygulama-11: Ekrana adınızı ve soyadınızı 10 kez yazan bir programı FOR ve WHILE döngüsü kullanarak yazınız a=0 while a<10 a=a+1; disp('mustafa Coşar'); end for i=1:10 disp('mustafa Coşar'); end
Break ifadesi FOR ve WHILE döngülerine ilaveten bir program akışını kontrol edebilmenin diğer bir yolu da break ifadesini kullanmaktır. Break ifadesini döngü gövdesi içerisinde kullanmak, döngünün durmasını ve döngüden sonra gelen ilk ifade veya komutun işletilmesini sağlar. Örnek: for j=2:6 disp(j); if j==4 break end end fprintf('j= %g \n', j); disp('döngü sonlandırıldı');
Uygulama-12: Çarpım tablosunu veren bir programı yazınız for a=1:10 for b=1:10 carpim=a*b; fprintf('%d * %d = %d\n', a, b, carpim) end end
Continue ifadesi Genellikle for döngülerinde, program akışı ayrıca continue deyimi ile kontrol edilebilir. continue deyimi işletildiğinde continue deyiminden sonraki bütün herşey ihmal edilir ve döngü değişkeni güncellenerek döngü bir sonraki iterasyona başlar. for i=1:10 if i==4 continue; end fprintf('i=%d\n', i); end
7. Matlab da Hazır Fonksiyonlar Fonksiyon: MATLAB sin, abs, sqrt, ve Log gibi çok önemli fonksiyonları da içine alan çok sayıda elemansal matematik fonksiyon sağlar. Fonksiyon Sembol Örnek Sinüs sin( ) sin sin(pi) Cosinüs cos( ) cos cos(pi) Tanjant tan( ) tan tan(pi) Arksinüs arcsin( ) asin asin(0) Arkkosinüs arccos( ) acos acos(0) Arktanjant arctan( ) atan atan(1) Eksponensiyal e x exp exp(2) Doğal logaritma ln(x) log log(10) 10 tabanlı logaritma log10 log10(10) Kare kök, x sqrt sqrt(25) Mutlak değer, x abs abs(3)
Matlab da Sayı Yuvarlama Fonksiyonları Matlab da ondalıklı sayıları yuvarlama amacıyla sıklıkla kullanılan 4 adet hazır fonksiyonu vardır. Bunlar: 1. fix 2. round 3. ceil 4. floor
fix(x) Kendisine parametre (argüman) olarak aldığı x ondalıklı sayısını 0 (Sıfır) yönünde karşılaştığı ilk tamsayıya yuvarlar.
round(x) Kendisine parametre (argüman) olarak aldığı x ondalıklı sayısını kendisine en yakın tamsayıya yuvarlar.
ceil(x) Kendisine parametre (argüman) olarak aldığı x ondalıklı sayısını pozitif sonsuz yönünde karşılaştığı ilk tamsayıya yuvarlar.
floor(x) Kendisine parametre (argüman) olarak aldığı x ondalıklı sayısını negatif sonsuz yönünde karşılaştığı ilk tamsayıya yuvarlar.
round(x) Bir sayının Tamsayı mı Ondalıklı mı olup olmadığının bulunması Bir sayı tamsayı ise sayı ve onun yuvarlanmışı eşittir. Bir sayı yuvarlanmışına eşit değilse ondalıklı bir sayıdır.
mod Fonksiyonu ile Kalan Bulma mod(x,y) x sayısının y sayısına bölümünden kalanı verir. x=y*bölüm+kalan x=y*fix(x/y)+mod(x,y)
Bir sayının Tekmi-Çiftmi olduğunu bulma işlemi Bir sayı ikiye tam olarak bölünebiliyorsa yani sayının ikiye bölümünden kalan sıfırsa bu sayı çift sayıdır. Bir sayının ikiye bölümünden kalan 1 ise bu sayı tek sayıdır.
rand Fonksiyonu ile Rastgele Sayı Üretimi rand(n,m) fonksiyonu MATLAB de nxm boyutunda ve elemanları rastgele sayılar olan bir matris oluşturur. Oluşturulan bu rastgele sayılar 0 ile 1 arasındadır ve düzgün dağılımlıdır. Üretilmek istenen matris kare bir matris ise yani n satır sayısı, m sütun sayısına eşit ise rand(n,n) yerine sadece rand(n) kullanılabilir. 0 ile 1 arasında rastgele ondalıklı bir skaler sayı üretmek için ise rand(1) fonksiyonunun kullanımı yeterlidir. Rastgele sayılardan oluşan bu matrisin tüm elemanlarını k gibi bir sayı ile çarparak sayıları 0 ile k aralığına çekebiliriz. Ondalıklı sayılardan oluşmuş bir matrisin elemanlarını yuvarlayıp tamsayı yapmak için herhangi bir yuvarlama fonksiyonunu, mesela round fonksiyonunu kullanabiliriz.
Uygulama-13: Aşağıdaki işlemleri komut satırında deneyelim >> a=rand(1,10) >> b=fix(rand(3,5)) >> c=round(40*rand(5,3)) >> d= 40*round(rand(5,3)) >> e=round(10+40*rand(5,3)) >> f=10+40*round(rand(5,3)) >> g=round(50+250*rand(3,4)) >> h=round(1000*rand(1))
Kaynaklar 1. http://slideplayer.biz.tr/slide/2001952/ 2. İnan A., MATLAB Temel Seviye Semineri 3. Küçük B., http://www.duzce.edu.tr/~bayramkucuk/dosyalar/003.pdf Bilgisayar Mühendisliği e-posta: mustafacosar@hitit.edu.tr