Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

MATLAB.

Benzer bir sunumlar


... konulu sunumlar: "MATLAB."— Sunum transkripti:

1 MATLAB

2 MATLAB MATLAB, bilim adamları ve mühendislere, matrislere dayalı problemleri Fortran ve C gibi dillerden farklı olarak program yazmaksızın çözmede kullanılmak üzere bir sayısal hesaplama kütüphanesi (MATris LABoratuvarı (MATrix LABoratory)) olarak tasarlanmıştır. Daha sonraları ise birçok toolbox eklenerek geliştirilmiştir. MATLAB 1970’lerin sonunda Cleve Moler tarafından yazılmıştır. Cleve Moler aynı zamanda “The MathWorks” firmasının da kurucusudur. MATLAB bir yorumlayıcıdır (interpreter). Bir derleyiciye (compiler) ihtiyaç duyan programlama dillerinden farklı olarak bir MATLAB programı her çalıştırıldığında satır satır makina diline çevrilir.

3 MATLAB Programının Tipik Kullanım Alanları
Algoritma geliştirme ve kod yazmada (programlama), Matematiksel hesaplama (nümerik ve sembolik) yapmada, Lineer cebir, istatistik, Fourier Analizi, filtreleme, optimizasyon, sayısal integrasyon vb. konularda hazır matematik fonksiyonlara ulaşabilmede, 2D ve 3D grafikler çizmede, Modelleme ve simülasyon yapmada, Grafiksel arayüz oluşturmada, Veri analizi ve kontrolü gerçekleştirmede.

4 MATLAB Programlama Ortamının Tanıtımı
MATLAB PROGRAMLAMA ORTAMI 1. Başlat Menüsü (Start) 2. Komut Penceresi (Command Window) 3. Çalışma Alanı (Workspace) 4. Çalışma Dizini (Current Folder) 5. Komut Geçmişi (Command History) 6. Metin Düzenleyicisi (Editor) !! MATLAB programlama ortamını ilk açılıştaki haline getirmek için Desktop->Desktop Layout->Default komutunu çalıştırınız. !!

5

6

7

8

9

10

11

12

13

14 Komut Penceresi: MATLAB ile iletişim kurulan ana penceredir
Komut Penceresi: MATLAB ile iletişim kurulan ana penceredir. MATLAB yorumlayıcısı, kullanıcıdan gelecek komutları kabul etmeye hazır olduğunu gösteren “ >> ” biçiminde bir simge görüntüler. Örneğin, 4*25+6*52+2*99 gibi basit bir matematiksel işlemi yapmak için >> 4*25+6*52+2* ifadesini yazıp ENTER tuşuna basarız. ans= 610 Komut Satırında Yanlışların Düzeltilmesi: Klavyede yer alan ok tuşları komut satırında yapılan yanlışlıkların düzeltilmesine imkan verir. Bunlar yukarı “↑” aşağı “↓” sol “←” sağ “→”. Yukarı tuşu yardımıyla bir önceki satır tekrar görüntülenerek sağ ve sol tuşları ile yanlış yazılı yere imleç taşınarak düzenleme gerçekleştirilir. Sonucun Ekranda Görüntülenmesini Gizleme: Bir deyim yazıp, ENTER tuşuna basınca sonuçlar ekranda otomatik olarak görüntülenir. Buna karşılık, deyimin sonuna “ ; ” ilave edilecek olursa yapılan hesaplamalar ekranda görüntülenmez.

15 MATLAB’DE DEYİMLER VE BİLEŞENLERİ
MATLAB komut penceresinden doğrudan çalıştırılabilen ya da bir MATLAB dosyası içerisine kaydedilebilen ve MATLAB tarafından yorumlanabilen her şey MATLAB deyimidir. MATLAB deyimleri değişkenler, rakamlar, operatörler ve fonksiyonlar kullanılarak oluşturulurlar. Değişkenler: Deyimler içerisinde sayısal değerlerin yerini alan ifadelerdir. MATLAB bir değişken ile karşı karşıya geldiğinde, otomatik olarak bu değişken oluşturulur ve yeteri kadar bellek ayrılır. Eğer değişken daha önceden tanımlı ise MATLAB onun içeriğini değiştirir ve gerekirse yeni bellek ayırır. Örneğin, >> x=50 komut satırından işletildiğinde MATLAB “x” adında bir değişken oluşturur ve 50 değerini bu değişkene atar. Diğer bilgisayar dillerinde olduğu gibi MATLAB’in de değişken isimleri konusunda bazı kuralları vardır.

16 Değişken Tanımlama Kuralları
1. Değişken isimleri daima bir harf ile başlamalıdır. İlk harfi başka harfler, rakamlar ve alt çizgiler ( _ ) izleyebilir. Örneğin 1sayi uygun bir değişken ismi değilken, sayi_1 kullanılabilir bir değişken adıdır. 2. Değişken isimleri noktalama işaretleri ve boşluk(lar) barındırmamalıdır. sayi.1 veya sayi 2 (2 den önceki boşluğa dikkat) şeklinde tanımlanan değişken adları bu kural ihlaline 2 güzel örnektir. 3. Değişken isimleri içerisinde Türkçemize özgü küçük veya büyük “ç, ğ, ı, ö, ş, ü” karakterleri kullanılmamalıdır.   4. Değişken isimlerinin küçük ve büyük harf kullanımına duyarlı olduğu unutulmamalıdır. orta, Orta, ORTA veya orTa adlı değişkenler MATLAB için farklı değişkenlerdir. 5. Değişken isimleri en fazla 63 karakter içerebilir ve bundan fazlası MATLAB tarafından dikkate alınmaz.

17 DEĞİŞKENLERİN İSİMLENDİRİLMESİ
Değişkenler ve daha sonraki bölümlerde göreceğimiz fonksiyonlar muhakkak kullanım amaçları dikkate alınarak ve anlamlı bir şekilde isimlendirilmelidirler. Örneğin kullanıcıdan klavye yoluyla alınacak ve ortalamaları hesaplanacak üç sayı a, b, c veya x, y, z gibi jenerik değişken isimleriyle değil sayi1, sayi2 ve sayi3 gibi anlamlı isimlerle temsil edilmelidir. Bir zorunluluk olmasa bile yazılan bir programın anlaşılabilirliğini artırmak adına değişkenler ve fonksiyonlar adlandırılırken bazı notasyonlardan faydalanılır.

18 Rakamlar MATLAB’de negatif bir sayıyı temsil için o sayının önünde eksi (-) işareti vardır. Bir sayının önüne artı (+) işareti koyulması veya hiçbir işaret koyulmaması o sayının pozitif olduğunun delilidir. Ondalıklı sayılarda ayraç olarak nokta (.) ve 10 sayısının kuvvetini temsilen e harfi kullanılır. Karmaşık sayıların sanal kısımları MATLAB’de son takı olarak i harfini kullanır. Bu bilgiler ışığında MATLAB yorumlayıcısının anlayacağı birkaç rakama örnek olarak 6, -175, , 2.54e2, 7i veya 5+7i verilebilir.

19 Aritmetik Operatörler: MATLAB, deyimler içerisinde aşağıdaki aritmetik operatörleri ve öncelik kurallarını kullanır. İşlem Operatör Örnek Toplama, a+b + 2+3 Çıkarma, a-b - 5-2 Çarpma, a*b * 3*4 Bölme, a/b / 15/7 Üs alma, ab ^ 2^3 Parantez a*(b+c) ( ) 2*(3+5) Aritmetik Operatörlerin Öncelik Sıraları: Tek bir matematiksel deyim içinde birden fazla işlem bir arada bulunabildiğine göre hangi işlemin öncelik hakkına sahip olduğunun bilinmesi yerinde olacaktır. MATLAB’de işlemlerin öncelik listesi aşağıda verilmiştir. Öncelik İşlem 1. Parantez (İçten Dışa Doğru) 2. Üs Alma (Soldan Sağa Doğru) (2^2^3=???) 3. Çarpma ve Bölme (Soldan Sağa Doğru) 4. Toplama ve Çıkarma (Soldan Sağa Doğru)

20 MATLAB’in Kullanıma-Hazır Bazı Matematiksel Fonksiyonları

21 Örnekler: Uygulama : Matematiksel Yazılım MATLAB de Yazılım
ab-c+d-6+da a*b-c+d-6+d*a b+c3-d/8-b2c b+c^3-d/8-b^2*c a=1, b=2, c=3, d=4, e=5, f=6 iken ??? Uygulama : işlemini MATLAB dilinde kodlayınız.

22 Lütfen Aşağıdaki Komutları Komut Penceresinden Çalıştırın:
clc VE clear KOMUTLARI clc komutu komut penceresini temizler. clear komutu bütün değişkenleri ve fonksiyonları bellekten siler. (Bütün değişkenleri çalışma alanından (workspace) çıkarır.) Lütfen Aşağıdaki Komutları Komut Penceresinden Çalıştırın: >>help clc >>help clear >>help abs >>help sqrt Daha detaylı yardım için (komutun kullanımına ait örnekleri de görmek için) doc komutundan faydalanabilirsiniz. >>doc sqrt

23 MATLAB’ DE DEĞİŞKEN TÜRLERİ VE DEĞER ATAMALARI
Herşey matris? MATLAB değişkenlerine değer olarak aşağıdakilerden herhangi birisi atanabilir: Matris Satır Vektörü Sütun Vektörü Karakter Dizisi (Katar) (String) Skaler

24 (İKİ BOYUTLU) MATRİSLERİN DEĞİŞKENLERE DEĞER OLARAK ATANMASI

25 (TEK BOYUTLU) SATIR VEKTÖRLERİNİN DEĞİŞKENLERE DEĞER OLARAK ATANMASI

26 (TEK BOYUTLU) SÜTUN VEKTÖRLERİNİN DEĞİŞKENLERE DEĞER OLARAK ATANMASI

27 KARAKTER DİZİLERİNİN DEĞİŞKENLERE DEĞER OLARAK ATANMASI

28 SKALERLERİN DEĞİŞKENLERE DEĞER OLARAK ATANMASI

29 ANS DEĞİŞKENİ

30 Ondalıklı Sayı Formatı
Bir işlemin sonucu, varsayılan (default) olarak 4 ondalık ile gösterilir. Ondalık hane sayısı format fonksiyonu ile değiştirilebilir. format veya format short : 4 ondalık format bank: 2 ondalık format long: 15 ondalık format rat: Ondalık sayıları rasyonel sayı olarak gösterir. UYGULAMA 1 : >>a=22/5 i yukarıdaki formatlar için test ediniz. UYGULAMA 2 : Ayrıca aşağıdaki komutlar dizisini çalıştırınız. >>format rat >>a=22/5 >>b=1/3 >>c=a+b >>format >>format >>pi >>format long

31 MATLAB PROGRAMLARINA KLAVYEDEN
VERİ AKTARIMI "input" komutu yardımıyla bir MATLAB programı içerisinde değerlendirilmek üzere kullanıcıdan klavye yoluyla bir veri alınır ve bu veri bir değişkene atanır.

32 input KOMUTU İLE KLAVYEDEN SAYISAL VERİ TEMİNİ
>> sayi1=input('Lutfen 1. Sayiyi Giriniz= ') Tek tırnaklar arasına nasıl bir bilgi girmesi gerektiği hususunda kullanıcıya verilecek uyarı mesajı yazılır. >> sayi1=input('8')

33 input KOMUTU İLE KLAVYEDEN METİNSEL VERİ TEMİNİ
>> isim=input('Lutfen Isminizi Giriniz = ', 's' )

34 disp VE fprintf KOMUTLARI İLE EKRANA BİLGİ YAZDIRMA
Bir önceki dersimizde input komutu ile klavye üzerinden MATLAB programlama ortamına nasıl veri aktarılacağını öğrendik. Bu dersimizde ise disp ve fprintf komutları yardımıyla ekrana nasıl bilgi yazdırılacağını öğreneceğiz.

35 disp KOMUTU İLE EKRANA METİN YAZDIRMA

36 disp KOMUTU İLE EKRANA SAYISAL DEĞER YAZDIRMA

37 disp KOMUTU İLE EKRANA METİNLERİ VE SAYISAL DEĞERLERİ BİRLİKTE YAZDIRMA
MATLAB’in num2str fonksiyonu kendisine parametre olarak aldığı bir sayıyı bir karakter dizisine (string) çevirir. (22 sayısı '22' olur.)

38 fprintf KOMUTU İLE EKRANA BİLGİ YAZDIRMA
GENEL KULLANIM fprintf('Ekrana Basilacak Aciklama %X \n', deger); Burada %X Kısmında Kullanabileceğimiz Seçenekler : %c : deger in tek bir karakter olduğunu gösterir. %s : deger in bir karakter dizisi (string) olduğunu gösterir. %d : deger in bir tamsayı olduğunu gösterir. %f : deger in bir ondalıklı sayı olduğunu gösterir. %g : deger i mümkün olan en kompakt forma sokar. Diğer yandan : \n : İmleci bir alt satırın başına götürür. (n, newline) \t : İmleci bir TAB kadar sağa kaydırır.

39 fprintf Kullanımına Örnekler

40 Aşağıdaki 2 Komut Aynı İşi Yapar
disp('Uzgunum! Sifira Bolum Hatasi Var.'); fprintf('Uzgunum! Sifira Bolum Hatasi Var.\n');

41 disp ve fprintf ARASINDAKİ 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.

42 MATLAB’DE PROGRAMLAMA
MATLAB’de programlama genel olarak iki yolla yapılır: Komut satırında (inline) programlama m-dosyaları ile (m-files) programlama Düzyazı (script) m-dosyaları ile programlama Fonksiyon (function) m-dosyaları ile programlama m-dosyaları oluşturabilmek için ise bir metin düzenleyicisine (editor) ihtiyaç vardır.

43 Düzyazı M-Dosyaları ile Programlama
Bir düzyazı (senaryo dosyası) (script file) özel bir görevi yerine getirmek için gerekli MATLAB komutlarının saklandığı bir metin dosyasıdır. Başka bir ifadeyle; bir hesaplamayı gerçekleştirmek için yazılacak birçok komut dizisi, komut penceresinden tek tek girmek yerine bir dosyada saklanır ve daha sonra bu dosya çalıştırılarak bu komutlar icra edilir. Bu dosyaların MATLAB’in Çalışma Dizini (Current Folder) altında "DosyaAdi.m" şeklinde saklanmaları gerekir. DOSYA ADLARI TÜRKÇE KARAKTERLER VE BOŞLUKLAR İÇERMEZLER.!!!!!!!! MATLAB DOSYALARI İSİMLENDİRİLİRKEN PASKAL NOTASYONUNDAN FAYDALANILIR. MATLAB programlama ortamı, m-dosyalarının oluşturulmasını kolaylaştıran akıllı bir metin düzenleyicisine (text editor) sahiptir. m-dosyaları Windows’un Notepad i gibi herhangi bir metin düzenleyicisi ile de yazılabilirler. Bir düzyazı m-dosyası oluşturmak için “Current Folder” penceresinde boş bir alana sağ tıklayıp “New File>Script” yolu takip edilmelidir.

44 Programı yazma işlemi bittikten sonra ve programı çalıştırmadan önce muhakkak kaydediniz.

45 İLİŞKİSEL OPERATÖRLER
İlişkisel operatörler, işlenenleri arasındaki eşitlik, eşitsizlik, büyüklük veya küçüklük türünden ilişkileri belirleyen operatörlerdir. == Eşit Mi? ~= Eşit Değil Mi? > Büyük Mü? >= Büyük veya Eşit Mi? < Küçük Mü? <= Küçük veya Eşit Mi?

46 İlişkisel operatörler sonuç olarak 1 (BİR) (true) veya 0 (SIFIR) (false) değerlerini üretirler.

47 Eşitlik testinde 2 adet "==" işareti kullanılır
Eşitlik testinde 2 adet "==" işareti kullanılır. Oysa değişken atamalarında kullandığımız eşittir "=" 1 tanedir. MATLAB komut penceresinde 3=5 yazdığımızda program hata verir. Oysa 3==5 yazdığımızda bu “3, 5'e eşit midir?" anlamına gelir, karşılaştırma yanlıştır ve MATLAB bu durum için 0 (Sıfır) sonucunu üretir.

48 İLİŞKİSEL OPERATÖRLERİN ÖNCELİK SIRALARI
İlişkisel operatörler aritmetik operatörlerden daha düşük bir işlem önceliğine sahiptirler. Örneğin komut penceresinde 3+4<7-5 şeklinde çalıştırılacak bir MATLAB deyimi arka planda önce 7<2 formuna dönüştürülür ve ilişkisel test (küçüklük testi) daha sonra gerçekleştirilir. Benzer şekilde i+j==10 gibi bir eşitlik testi, öncelikle hesaplanan i+j aritmetik işleminin sonucu ile 10 sayısı arasında gerçekleştirilir. Yukarıdaki deyimler, karışıklığa meydan vermemek için (3+4)<(7-5) ve (i+j)==10 formlarına sokulabilirler.

49 MANTIKSAL OPERATÖRLER MANTIKSAL MATLAB OPERATÖRLERİ
Mantıksal operatörler de ilişkisel operatörler gibi sonuç olarak 1 (BİR) (true) veya 0 (SIFIR) (false) değerlerini üretirler. MANTIKSAL MATLAB OPERATÖRLERİ İŞLEVLERİ a&&b VE (AND) a||b VEYA (OR) ~a DEĞİL (NOT)

50 MANTIKSAL OPERATÖRLERİN
DOĞRULUK TABLOLARI A B A && B 1 A B A || B 1 1 ~A A

51 >> (k>6) && (m<8) ans =

52 İlişkisel ve mantıksal operatörler her zaman bool tipinde (yani 1 (true) veya 0 (false) değerinde, başka bir ifadeyle sadece iki değerli) bir sonuç geriye döndürürler. Dolayısıyla if ve while deyimleri ile birlikte karar verme amacıyla kullanılabilirler.

53 if Deyiminin Üç Farklı Kullanım Şekli vardır:
if Şartlı Deyimi Bir karşılaştırma ifadesini veya mantıksal bir ifadeyi test ederek bunun sonucuna göre mümkün seçeneklerden birini icra edebilen bir komuttur. if Deyiminin Üç Farklı Kullanım Şekli vardır: if koşul işlem(ler) end if koşul işlem(ler) else end if koşul1 işlem(ler) elseif koşul2 işlem(ler) else end koşul dediğimiz şey bir karşılaştırma ifadesi (a>b gibi) ya da bir mantıksal ifadedir (a&&b gibi).

54 UYGULAMA Klavyeden girilen iki sayının oranını bulan ve fprintf komutuyla ekrana basan bir MATLAB düzyazı m-programı yazınız. (Programınız payda sıfır girildiğinde disp komutuyla ekrana “Uzgunum! Sifira Bolum Hatasi Var.” mesajını yazdırmalıdır.) clc; %Komut penceresini temizle clear; %Degiskenleri sil pay = input('Lutfen Payi Giriniz: '); payda = input('Lutfen Paydayi Giriniz: '); if payda==0 disp('Uzgunum! Sifira Bolum Hatasi Var.'); else oran=pay/payda; fprintf('Oran = %f \n',oran); %disp(['Oran = ' num2str(oran)]); end Programınızı en az kaç kez çalıştırmalısınız?

55 Örnek: Kullanıcıdan klavye yoluyla alınan x ve y değerlerine göre aşağıdaki sonuçlardan birini hesaplayan bir MATLAB programını bir m-dosyası içine yazınız ve komut penceresinden dosya adı ile çalıştırınız. x>y ise sonuc= (x-y) x=y ise sonuc=(x+y)7 x<y ise sonuc=x*y x=input('Lutfen x Degerini Giriniz : '); y=input('Lutfen y Degerini Giriniz : '); if x>y sonuc=sqrt(x-y); elseif x==y sonuc=(x+y)^7; else sonuc=x*y; end disp(sonuc); Uygulama2.m Programınızı en az kaç kez çalıştırmalısınız? m-dosyalarını oluşturduğunuz MATLAB metin editörünün program yazma stiline müdahale etmeyiniz !!!!! >>Uygulama2

56 UYGULAMA Girilen ay numarasına göre gün sayısını hesaplayan MATLAB programını yazınız. Programınızı en az kaç kez çalıştırmalısınız? ay=input('Bir Ay Numarasi Giriniz (1-12)= '); if ay==1 || ay==3 || ay==5 || ay==7 || ay==8 || ay==10 || ay==12 disp('Bu Ay 31 Gunden Olusur. '); elseif ay==2 disp('Bu Ay 28 Gunden Olusur.'); elseif ay==4 || ay==6 || ay==9 || ay==11 disp('Bu Ay 30 Gunden Olusur.'); else disp('Yanlis Bir Ay Numarasi Girdiniz.'); end

57 switch Şartlı Deyimi ayNo = input('Bir Ay Numarasi Giriniz (1-12)= ');
switch ayNo case {1,3,5,7,8,10,12} disp('Bu Ay 31 Gunden Olusur.'); case 2 disp('Bu Ay 28 Gunden Olusur.'); case {4,6,9,11} disp('Bu Ay 30 Gunden Olusur.'); otherwise disp('Yanlis Bir Ay Numarasi Girdiniz.'); end

58 PROGRAMLARIMIZI ÇALIŞTIRMA
Yazdığımız programlar ya hiç çalışmazlar ya da çalışırlar ama beklediğimiz sonuçları üretmezler. Yazdığımız bir program çalışmaz ise eğer bize bunun nedenlerini komut penceresine hatalı bölümlere ait satır ve sütun bilgilerini basarak bildirir. Ayrıca MATLAB bizlere programlarımızı yazdığımız editörün sağ tarafında turuncu çizgiler şeklinde muhtemel hatalar hakkında ipuçları da verir.

59 HATA AYIKLAMA (DEBUGGING)
m-dosyası editörünün hata ayıklamaya (debugging) yarayan fonksiyonlarını ve calışma alanı (workspace) penceresini kullanarak çalışan programınızdaki (!! BEKLEDİĞİNİZ GİBİ ÇALIŞMAYAN !!) hataları bulabilirsiniz. Bunun için herhangi bir program satırına kesme noktası (breakpoint) koymalı ve programınızı F10 tuşu ile satır satır işletmelisiniz.

60 HATA AYIKLAMA Hata Ayıklama modundan komut satırında return komutunu işleterek çıkabilirsiniz. Ayrıca m-dosyasının içerisindeki kesme noktasını üzerini tıklayarak kaldırmalısınız. K>>return >>

61 MATLAB’İN SAYI YUVARLAMA FONKSİYONLARI
MATLAB’in ondalıklı sayıları yuvarlama amacıyla sıklıkla kullanılan 4 adet hazır fonksiyonu vardır. Bunlar: fix round ceil floor

62 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.

63 round(x) Kendisine parametre (argüman) olarak aldığı x ondalıklı sayısını kendisine en yakın tamsayıya yuvarlar.

64 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.

65 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.

66 BİR SAYININ TAMSAYI VEYA ONDALIKLI SAYI OLUP OLMADIĞININ ARAŞTIRILMASI
Bir sayı tamsayı ise sayının kendisi sayının yuvarlanmışına eşittir. Bir sayı yuvarlanmışına eşit değilse ondalıklı bir sayıdır.

67 mod FONKSİYONU İLE 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)

68 BİR SAYININ ÇİFT SAYI VEYA TEK SAYI OLUP OLMADIĞININ ARAŞTIRILMASI
Bir sayı ikiye tam olarak bölünebiliyorsa yani sayının ikiye bölümünden kalan sıfırsa bu sayı bir çift sayıdır. Bir sayının ikiye bölümünden kalan 1 ise bu sayının bir tek sayıdır.

69 rand FONKSİYONU RASTGELE SAYI ÜRETİMİ
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.

70 AŞAĞIDAKİ MATLAB DEYİMLERİ KOMUT PENCERESİNDE ÇALIŞTIRILDIKLARINDA NASIL ÇIKTILAR ÜRETİRLER?
>> 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))

71 zeros FONKSİYONU İLE SADECE 0’LAR İÇEREN BİR MATRİSİN OTOMATİK OLARAK OLUŞTURULMASI
zeros(n,m) fonksiyonu nxm boyutunda (n satırlı ve m sütunlu) ve her bir elemanı 0 olan bir matris üretmek amacıyla kullanılır. Üretilmek istenen matris kare bir matris ise yani n satır sayısı, m sütun sayısına eşit ise zeros(n,n) yerine sadece zeros(n) kullanılabilir. >> zeros(1,3) >> zeros(3,1) >> zeros(4,4) >> zeros(4) >> zeros(3,5) zeros(3,5) deyimi acaba fix(rand(3,5)) deyimi ile aynı sonucu üretir mi?

72 ones FONKSİYONU İLE SADECE 1’LER İÇEREN BİR MATRİSİN OTOMATİK OLARAK OLUŞTURULMASI
ones(n,m) fonksiyonu nxm boyutunda (n satırlı ve m sütunlu) ve her bir elemanı 1 olan bir matris üretmek amacıyla kullanılır. Üretilmek istenen matris kare bir matris ise yani n satır sayısı, m sütun sayısına eşit ise ones(n,n) yerine sadece ones(n) kullanılabilir. >> ones(1,3) >> ones(3,1) >> ones(4,4) >> ones(4) >> ones(3,5) ones(3,5) deyimi acaba ceil(rand(3,5)) deyimi ile aynı sonucu üretir mi?

73 DÖNGÜLER Birçok uygulamada bazı işlemlerin tekrar tekrar gerçekleştirilmesi gerekir. Bizlere bu imkanı sağlayan programlama yapılarına döngü denir. MATLAB’de döngü oluşturmak amacıyla kullanılan for ve while adında 2 tekrarlama deyimi vardır.

74 DÖNGÜ OLUŞTURMA KURALLARI
1- Döngü değişkeninin başlangıç değeri belirlenir. 2- Döngü değişkeninin bitiş değeri belirlenir. 3- Döngü değişkeninin bitiş değerine ulaşıp ulaşmadığı test edilir. 4- İstenen işlem gerçekleştirilir. 5- Döngü değişkeni, döngü içinde adım miktarı kadar artırılır yada azaltılır.

75 for DÖNGÜSÜ for döngü değişkeni = başlangıç:artış miktarı:bitiş
komutlar end for döngü değişkeni = başlangıç:bitiş komutlar end artış miktarı otomatik olarak 1 atanır. döngü değişkeni sayaç olarak da adlandırılır.

76 UYGULAMA 1 sayısı ile klavyeden girilen herhangi bir sayı arasındaki ardışık sayıların toplamını for döngüsü kullanarak hesaplayan ve ekrana basan bir düzyazı MATLAB programı yazınız. n sayısı 0 veya negatifse hangi toplam elde edilir? n=input('Lutfen Bir Sayi Giriniz : '); toplam=0; %Toplamada Etkisiz Eleman for i=1:n toplam=toplam+i; %fprintf('Toplam = %d \n',toplam); end fprintf('Toplam = %d \n',toplam);

77 for i=5:1 end for i=1:-1:5 end Yandaki for döngüsü kaç kere işletilir?

78 while DÖNGÜSÜ while koşul işlem_1 işlem_2 işlem_n end
koşul denilen şey sonucu BİR veya SIFIR olan bir eşitlik testi, karşılaştırma işlemi veya mantıksal bir test olabilir.

79 UYGULAMA Ekrana adınızı ve soyadınızı 10 kez yazan bir MATLAB programını while döngüsü kullanarak oluşturunuz. i=1; %sayac while i<=10 disp('Deniz Dal'); i=i+1; end % for Dongusu ile Cozum for i=1:10 disp('Deniz Dal'); end

80 UYGULAMA 1 sayısı ile klavyeden girilen herhangi bir sayı arasındaki ardışık sayıların çarpımını while döngüsü kullanarak hesaplayan ve ekrana basan bir düzyazı MATLAB programı yazınız. Bu satır çözümden çıkarılırsa ne olur? n=input('Lutfen Bir Sayi Giriniz : '); carpim=1; %Carpmada Etkisiz Eleman i=1; while i<=n carpim=carpim*i; i=i+1; %fprintf('Carpim = %d \n',carpim); end fprintf('Carpim = %d \n',carpim); %Faktoriyel ?????? Komut penceresi kontrolünü kaybettiğinizde (mesela programınız sonsuz bir döngünün içerisine girdiyse) CTRL+C tuş kombinasyonunu kullanabilirsiniz.

81 UYGULAMA Asağıdaki while döngüsü kaç kere işletilir? devamEt=1;
i=0; %sayac while devamEt disp('Deniz Dal'); i=i+1; end Yandaki programı ekrana 10 kere “Deniz Dal” yazacak şekilde nasıl modifiye edersiniz??????

82 break DEYİMİ for i=1:10 if i==4 break; end fprintf('i=%d\n', i);
for veya while döngülerinde program akışını kontrol edebilmenin bir yolu break deyimini kullanmaktır. break deyimini döngü gövdesi içerisinde kullanmak, döngünün aniden sonlandırılmasını ve döngüden sonra gelen ilk ifade veya komutun işletilmesini sağlar. for i=1:10 if i==4 break; end fprintf('i=%d\n', i);

83 continue DEYİMİ for i=1:10 if i==4 continue; end fprintf('i=%d\n', i);
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);

84 Döngülerin Matrislerde Kullanımı
Matrisler çoğu programlama dilinde dizi yada array olarak adlandırılır. Arraylar aynı anda ve aynı türden birden çok sayı, harf yada karakteri hafızada tutmak için kullanılır. Sabit bir matris tanımlamak için komut satırına; Matris=[1,2,5] yazılması yeterli idi. Ancak klayyeden girilen değerleri tutmak istediğimizde mutlaka döngülerden yararlanırız.

85 Matrislere Değer Girme
1*5 lik matrise klavyeden değer girişi aşağıdaki gibidir. for i=1:5 matris(i)=input(‘Sayı giriniz’); End

86 Matrisleri yazdırma Önceki slaytta girilen matrisi yazdırmak için iki yol vardır. 1. disp komutuyla; disp(matris) 2. fprintf komutuyla; for i=1:5 fprintf(‘%d’,matris(i)); End

87 İç İçe for Döngüleri Özellikle 2 boyutlu matris işlemlerinde sıkça kullanılır. Örneğin 3*3 lik bir matrisi ekrana fprintf ile yazdırmak istediğimizde aşağıdaki döngü yapısını kullanmalıyız. matris=[1,2,3;1,2,3;1,2,3]; for i=1:3 for j=1:3 fprintf('%d',matris(i,j)); end fprintf('\n');

88 Örnek 3*3 lük matrisin tüm elemanlarının toplamı yazan matlab programı topla=0; for i=1:3 for j=1:3 dizi(i,j)=input('sayı gir'); topla=topla+dizi(i,j); end disp(dizi); disp(topla);

89 UYGULAMA Çarpım tablosunu ekrana basacak bir MATLAB programı.
for i=1:10 for j=1:10 carpim=i*j; fprintf('%d*%d=%d\n', i, j, carpim); end disp(' ');

90 Örnek 1*5 lik matrisin en büyük ve en küçük elemanını bulma. topla=0; matris=[8,12,2,15,6]; enb=matris(1); enk=matris(1); for i=2:5 if matris(i)>enb enb=matris(i); elseif matris(i)<enk enk=matris(i); end disp(matris); disp(enb); disp(enk);

91 Örnek 1*5 lik matrisi büyükten küçüğe sıralama matris=[8,12,2,15,6]; disp(matris) for i=1:4 for j=i:5 if matris(i)>matris(j) depo=matris(i); matris(i)=matris(j); matris(j)=depo; end disp(matris);

92 FONKSİYONLAR Fonksiyonlar da bilgisayar programlarıdır. Bilgisayarlar yardımıyla çözülmeye çalışılan problemler fonksiyonlar sayesinde yönetilmesi daha kolay, küçük parçacıklara bölünürler. Bu metoda “Böl ve Yönet” ya da “Divide and Conquer” adı verilir. Her fonksiyon: Kendine özgü bir isme sahiptir. GENELLİKLE kendine, üzerinde işlem yapacağı bir argüman (parametre) ya da argümanlar (parametreler) alır. GENELLİKLE geriye bir değer döndürür. (skaler, vektör ya da matris.)

93 FONKSİYON M-DOSYALARI Bir fonksiyon m-dosyasının iki bileşeni vardır:
1 – Fonksiyonun imzası veya prototipi (İlk satırda tanımlanır.) 2 – Fonksiyonun tanımı (yapması gereken iş) (İkinci satırdan başlar ve devam eder.)

94 M-Fonksiyon Yapısı function cikis_ifadesi1, 2,…, n =fonksiyon_adi (giris_ifadesi1, 2, …n) M-Fonksiyonlar kullanılırken dikkat edilecek hususlar: 1- Kullanıcılar kendi fonksiyonlarını yazmak için m-fonksiyonlarını kullanabilirler. 2- Function alt programı ve ana program şeklinde iki program yazılarak bu iki program ayrı ayrı kaydedilir. 3- Alt programdaki fonksiyon_adı, m-dosyasına verilen isimle aynı olmalıdır. 4- Ana programdan alt program, function adı kullanılarak çağrılır. 5- Alt programdan da ana programa geçiş yapılabilir fakat genelde tercih edileni tersidir. 6- Parametre aktarımı olması durumunda alt ve ana programda eşit sayıda parametre ve giriş değişkeni olmalıdır.

95 function uzaklik = uzak(x1,y1,x2,y2)
function cikis_ifadesi1, 2,…, n =fonksiyon_adi (giris_ifadesi1, 2, …n) Örnek: İki nokta arasındaki uzaklığı bulan programı m-fonksiyon (alt program) kullanarak yazınız. x1=1.noktanın x koordinati; x2=2.noktanın x koordinati y1=1.noktanın y koordinati; y2=2.noktanın y koordinati FUNCTION ALT PROGRAMI (uzak.m): function uzaklik = uzak(x1,y1,x2,y2) uzaklik=sqrt((x2-x1)^2+(y2-y1)^2); fprintf(‘iki nokta arasindaki uzaklık=%f’,uzaklik); Bu function alt programı uzak.m olarak kaydedilir. ANA PROGRAM: sonuc = uzak(3,4,1,2); % uzak.m alt programını çağırıyor

96 Adım adım gerçekleştirilen işlemler:
Ana program herhangi bir isimle kaydedilir ve koşturulur. Program, function adına (uzak) geldiği zaman alt program çağrılır ve ax, ay, bx, by parametreleri sırasıyla x1, y1, x2, y2 giriş değişkenlerine aktarılır. Function alt programında hesaplama gerçekleştirilir. Function’daki çıkış değişkeni olan uzaklik alt programda kullanılmakta ana programda aynı değer sonuc değişkeninde saklanır. Alt programdan ana programa parametre aktarımı zorunlu değildir. İstenirse değişkenlerin değerleri alt programda da girilebilir ve sonuç alt programda yazdırılabilir.

97 Uygulama: Yukarıdaki örneği ana programdan alt programa parametre
aktarımı yapmadan yeniden yazınız. (Değişkenlerin girilmesi, sonucu hesaplama ve yazdırma işlemi alt programda yapılacaktır) FUNCTION ALT PROGRAMI: function uzaklik = uzak x1=3; y1=4; x2=1; y2=2; uzaklik=sqrt((x2-x1)^2+(y2-y1)^2); fprintf(‘iki nokta arasindaki uzaklık=%f’, uzaklik); ANA PROGRAM: uzak; % uzak.m alt programını çağırıyor

98 DOSYA YÖNETİMİ Şu ana kadar bir programda hesaplanan veya elde edilen veriler RAM’de saklanacak şekilde tanımlanmıştı. Yani, bilgisayar kapatıldığında veya MATLAB programı sona erdirildiğinde veriler de kaybolmaktaydı. Oysa pek çok uygulamada elde edilen veriler daha sonra kullanılmak üzere saklanması gerekir. Bunun için verilerin bir dosyaya yazılması gerekmektedir.

99 MATLAB ’de VERİ GİRİŞ-ÇIKIŞ FONKSİYONLARI
Dosya açma: fopen fopen komutu bilgi kaydetmek için veri dosyası açar veya oluşturur. Yazım formatı: İfade = fopen(‘dosya adı’,’izin’) Burada: ifade-> dosya değişkeni dosya adı->verilerin kaydedileceği dosyanın adı izin-> dosyanın kullanım izni : r,w,.., vs.

100 İzin Tipleri: Tipler Açıklama ‘r’
Dosyayı sadece okumaya açar (yazmaya izin vermez) ‘r+’ Dosyayı yazmaya ve okumaya açar ‘w’ Varolan bir veri dosyasının içindekini siler, dosya yoksa oluşturur ve dosyayı yazmaya açar ‘w+’ Varolan bir veri dosyasını yazmak için açar, dosya yoksa oluşturur ve dosyayı okumaya ve yazmaya açar ‘a’ Varolan bir veri dosyasını yazmak için açar, dosya yoksa oluşturur ve girilecek bilgileri dosya sonuna ekler ‘a+’ Varolan bir veri dosyasını okumak ve yazmak için açar, dosya yoksa oluşturur ve girilecek bilgileri dosya sonuna ekler

101 Dosya kapama: fclose Dosya yazma ve/veya okumaya açılan dosyanın MATLAB ’den ilişkisini kesmeye (dosyayı kapamaya) yarayan komuttur. Kullanımı: Sonuc=fclose(ifade)

102 Dosyaya bilgilerin kaydedilmesi: fprintf
Verilerin ekrana yazılmasında kullanılan fprintf fonksiyonu, aynı zamanda fopen komutuyla açılmış dosyaya yazmakta da kullanılır. Kullanımı: fprintf (ifade=‘%format%format%format….%format’,değişken1, değişken2,değişken3, …….)

103 Örnek M=[1 2 3 4]; a=fopen('veri.dat','w');
Aşağıda verilen M dizisini (vektörünü) bir dosyaya kaydeden bir MATLAB programı yazınız For döngüsü ile: M=[ ]; a=fopen('veri.dat','w'); fprintf (a,'%d %d %d %d',M); fclose(a); M=[ ]; a=fopen('veri.dat','w'); for i=1:4 fprintf(a,'%d ',M(i)); end fclose(a);

104 Örnek A=[1 5 11 ; 2 4 5]; a=fopen('veri.dat','w+'); for i=1:2
Aşağıda verilen matrisi “veri.dat” dosyasına kaydeden bir MATLAB programı yazınız. A=[ ; ]; a=fopen('veri.dat','w+'); for i=1:2 for j=1:3 fprintf(a,'%d ',A(i,j)); end fclose(a); veri.dat isimli dosyayı silmeden A dizisini bu sonuna eklemek için hangi ‘izin’ kulanılmalıdır?

105 Örnek Dosyadan bilgilerin okunması: fscanf
fscanf: Formatlanmış verileri içeren dosyadan değerleri okuma komutudur ve yazılımı: [değişken, sayi] = fscanf (ifade,’format’,alan) Burada; değişken: okunan değerlerin atandığı değişken sayi : okunan data sayısı alan : inf ile verilerin tamamını okunması sağlanır Örnek clear all clc a=fopen ('veri.dat', 'r' ); [b,sayi]=fscanf(a,'%d ',inf); fclose(a); b Aşağıda verilen vektörü bir dosyadan okuyup b değişkenine atayan MATLAB programı veri.dat


"MATLAB." indir ppt

Benzer bir sunumlar


Google Reklamları