Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

MATLAB ve Temelleri Doç.Dr. Ahmet GÖKDOĞAN.

Benzer bir sunumlar


... konulu sunumlar: "MATLAB ve Temelleri Doç.Dr. Ahmet GÖKDOĞAN."— Sunum transkripti:

1 MATLAB ve Temelleri Doç.Dr. Ahmet GÖKDOĞAN

2 MATLAB Tanıtım MATLAB NEDİR?
MATLAB®(MATrix LABoratory – Matris Laboratuarı), temel olarak teknik ve bilimsel hesaplamalar için yazılmış yüksek performansa sahip bir yazılımdır ’lerin sonunda Cleve Moler tarafından yazılan Matlab programının tipik kullanım alanları: Matematiksel (nümerik ve sembolik) hesaplama işlemleri Algoritma geliştirme ve kod yazma yani programlama Lineer Cebir, İstatistik, Fourier Analizi, Filtreleme, Optimizasyon, Sayısal İntegrasyon vb. konularda matematik fonksiyonlar 2D ve 3D grafik çizimi Modelleme ve simülasyon (benzetim) Grafiksel arayüz oluşturma Veri analizi ve kontrolü şeklinde özetlenebilir.

3 MATLAB Tanıtım MATLAB, matematik-istatistik, optimizasyon, işaret ve görüntü işleme, kontrol tasarımları, yöneylem çalışmaları, tıbbi araştırmalar, finans ve uzay araştırmaları gibi çok çeşitli alanlarda kullanılmaktadır. MATLAB, kullanıcıya hızlı bir analiz ve tasarım ortamı sağlar. Matlab programını C/C++ diline dönüştürebilir, 20. dereceden bir denklemin köklerini bulabilir, 100x100 boyutlu bir matrisin tersini alabilir, Bir elektrik motorunu gerçek zamanda kontrol edebilir, Bir otobüsün süspansiyon simülasyonunu yapabilirsiniz, …

4 MATLAB Tanıtım Matlab programı altında kullanabileceğimiz temel araçlar: Komut Penceresi Programlama (M-file  *.m) Grafik (Figure  *.fig) Grafik Arayüzlü Programlar (GUI  *.fig) Simulink (Model  *.mdl) ve Blockset Modülleri Toolbox (Araç Kutusu) Modülleri (Symbolic, Fuzzy, Neural, Statistic vb.) Microsoft ExcelMatlab Matlab Web-Server Paralel Programlama

5 Komut Penceresi (Command Window)
↑ ile önceki komutlar, ↓ ile sonraki komutlar çağrılabilir. Bir komut bir satıra sığmaz ise … ve Enter ile yeni satırdan devam edilebilir. (Toplam karakter) Komut sonuna ; konursa, komut çalıştırılır ancak sonuç komut penceresinde gözükmez. % sembolü: Yorum (açıklama) yazmak için kullanılır. Bu sembolden sonraki işlemler çalıştırılmaz. Command History Window (Komut Geçmişi Penceresi) » komut istemidir (command prompt) Komutlar bu işaretten sonra yazılır. Komutlar Enter ile çalıştırılır. Aynı satırda komutlar arasına virgül (,) veya noktalı virgül (;) konarak birkaç komut yazılabilir. Komut sırası soldan sağa doğrudur.

6 İfadeler Matematiksel ve metinsel gösterimler ile işlemler ifadelerle sağlanır. Sayılar (Numbers) İşleçler (Operators) Değişkenler (Variables) Fonksiyonlar (Functions) Matlab’de ifadeler genellikle değişken = ifade veya sadece ifade formundadır. Örnek olarak >> x=4*sqrt(5) x = 8.9443 ifadesinde x değişken , 4 ve 5 sayı , * işleç , sqrt ise fonksiyondur. Bir ifade = işareti ile bir değişkene atanmamış ise Matlab otomatik olarak sonucu, ans (answer) adı verilen özel bir değişkende saklar.

7 İşleçler İşlem yapmayı sağlayan sembollerdir. İşleç Açıklama Örnek ‘ ’
Metin Girişlerinde kullanılır. ‘ortalama’ Transpoz işlemi A’ ( ) İşlem sırasını belirler, fonksiyon parametrelerini girmek için kullanılır. 2*(3-4) veya sin(x) [ ] Dizi – Matris gösteriminde kullanılır . [2 3 ; 5 6] = Değişkene değer atamada kullanılır. x = 3

8 İşleçler Üçe Ayrılır: İLİŞKİSEL İŞLEÇLER İşleç Sembol Örnek Küçüktür
< A < B Küçük eşittir <= A <= B Büyüktür > A > B Büyük eşittir >= A >= B Eşittir == A == B Eşit değildir ~= A ~= B MANTIKSAL İŞLEÇLER İşleç Sembol Örnek Not (Değil) ~ ~ (A < B) and (ve) & A < B & C < D or (veya) | A < B | C < D ARİTMETİK İŞLEÇLER İşleç Sembol Örnek Toplama + 5+3 Çıkarma - 5-3 Çarpma * 5*3 Sağ Bölme / 5/3 Sol Bölme \ 5\3=3/5 Üs Alma ^ 5^3 (125)

9 Öncelik Sırası Öncelik İşleç 1 (En yüksek) Parantez ( ) 2 ^ 3
Mantıksal not ( ~ ) 4 Çarpma, bölme 5 Toplama, çıkarma 6 İlişkisel işleçler (<,<=,>,>=,==, =~) 7 Mantıksal and ( & ) 8 (En düşük) Mantıksal or ( | )

10 Sayı Gösterim Biçimleri – format Komutu
Farklı sayı gösterim biçimleri seçilebilir. Bir işlem sonucu varsayılan (default) olarak 4 ondalık ile gösterilir. Yardım için, help format (tüm komutlarla ilgili yardım için help komutu kullanılır.) Komut Açıklama Örnek format veya format short 4 ondalık >> 290/7 ans = format long 15 ondalık ans = format short e 4 ondalık + bilimsel ans =4.1429e+001 format long e 15 ondalık + bilimsel ans = e+001 format short g Sabit 5 hane ans = format long g Sabit 15 hane 290/7 ans = format bank 2 ondaklık ans = 41.43 format rat Rasyonel Sayı Gösterimi ans = 290/7

11 Değişkenler Değişkenler, ifadelerin adlarını taşıyan belirteçlerdir.
Değişken adları, bir harf ile başlar ve onu takiben herhangi sayıda harfler, rakamlar veya altçizgiden ( _ ) oluşabilir. Değişken adları maksimum 63 karakter uzunluğunda olabilir. Değişken adı, 63 karakteri geçtiğinde ilk 63 karakterlik kısmı ad olarak kabul edilir. Değişken adlarında küçük (ç ı ö ü ğ ş ) veya büyük (Ç İ Ö Ü Ğ Ş) Türkçe karakterleri kullanılmaz. Küçük-büyük harf duyarlılığı vardır: x ve X veya bor ve BOR, farklı değişken adlarıdır. DOĞRU YANLIŞ MyVar12 12MyVar My_Var12 _MyVar12 MyVar12_ My-Var12

12 Önceden Tanımlı Değişkenler ve Anahtar Kelimeler
Önceden tanımlı değişkenler ve anahtar kelimeler değişken ismi olarak kullanılamazlar. break, case, switch, classdef, continue, else, elseif, end, for, function, global, if otherwise, return, catch, try, while ans, pi eps (yaklaşık, 2.22e^-16) inf, NaN,

13 Değişken İşlemleri Bir değişkeni silmek için clear variable_name komutu kullanılır. Çalışma düzleminden (workspace) tüm değişkenleri silmek için clear komutunu kullanılır. clc komutu ile çalışma alanı (workspace) temizlenir. (Değişkenler SİLİNMEZ.) Değişkenler, skaler, vektör, matris veya metin (string) olabilir. Değişken örnekleri: - a=1; b=-3.2e3; c=22/5; - text1=’Alp Kara’; - vector=[1 2 3]; - matris=[1 2 3;-1 0 1];

14 Fonksiyonlar Fonksiyonlar olmak üzere üçe ayrılır.
built-in (yerleşik) fonksiyonlar abs(mutlak değer), sqrt(karekök), max(maksimum), sin(sinüs), vb. m-file şeklindeki fonksiyonlar sinh, gamma, factorial, vb. Kullanıcı tanımlı (user-defined) fonksiyonlar olmak üzere üçe ayrılır. Fonksiyon adları da küçük-büyük harf duyarlıdır. Örneğin sin yerine Sin veya SIN şeklinde fonksiyon adının kullanımı hata verir. Tüm fonksiyon işlemleri parantezler () arasında yapılır. Örneğin, sin30 değil sin(30) gibi. >> help elfun (elementer fonksiyonlar) veya >> help specfun (özel fonksiyonlar) veya >> help elmat (elementer matrisler ve matris işlemleri) komutları ile tüm temel fonksiyonları görebilirsiniz.

15 Yerleşik Temel Matematik Fonksiyonları
Elementer Örnek Trigonometrik Yuvarlama sqrt(x) >> sqrt(81) ans = 9 sin(x), cos(x), tan(x), cot(x) >> sin(pi/6) ans = round(x) En yakın tamsayı yuvarlama >> round(17/5) ans = 3 nthroot(x,n) >> nthroot(32,5) ans = 2 sind(x), cosd(x), tand(x), cotd(x) >> sind(30) ceil(x) Sonsuza doğru yuvarlama >> ceil(11/5) exp(x) >> exp(5) ans = asin(x), acos(x), atan(x), acot(x) >> asin(0.5) ans = fix(x) Sıfıra doğru yuvarlama >> fix(13/5) abs(x) >> abs(-24) ans = 24 asind(x), acosd(x), atand(x), acotd(x) >> asind(0.5) floor(x) -Eksi Sonsuza doğru yuvarlama >> floor(-9/4) ans = -3 log(x) >> log(1000) ans = sinh(x), cosh(x), tanh(x), coth(x) >> sinh(1) rem(x,y) x/y de kalan >> rem(13,5) log10(x) >> log10(1000) ans = 3.000 sign(x) >> sign(5) ans = 1 factorial(x) >> factorial(5) ans = 120

16 Script (senaryo, m-dosyaları) Dosyaları
Matlab’de bütün komutlar komut penceresinde çalıştırılır. Ancak birbiriyle ilişkili birkaç komut çalıştırılmak istenirse bunları komut penceresi yerine bir script dosyası (senaryo dosyası) oluşturarak bu dosyayı çalıştırmak daha doğrudur. Bir script dosyası = Matlab komutlar dizisi Bu dosyaların MATLAB‟ın çalıştığı dizinde "file_name.m" uzantısıyla saklanmaları gerekir. Kaydedilecek dosyalara m uzantısı MATLAB tarafından otomatik olarak verilir. Bir script dosyası çalıştırıldığında, Matlab dosyadaki komutları sırasıyla çalıştırır. Script dosyası komutları düzenleme imkanı verir ve tekrar tekrar çalıştırılabilirler. Aynı zamanda m-dosyası (mfile) olarak da adlandırılırlar. Senaryo dosyalarının (m - dosyalarının) oluşturulması ve yazılması için MATLAB bir metin hazırlayıcısı metin editörü (komut penceresinin üst kısmında yer alan “New M- file” düğmesi tıklanarak veya “File” menüsünden “New/M-file” ibaresini seçerek etkin hale getirilebilir. ) sunmaktadır. Bu senaryo dosyaları Windows‟da Notepad gibi herhangi bir metin hazırlayıcısında da yazılabilirler. % sembolü ile açıklama metinleri yazılabilir.

17 M-dosyalarının Kullanılmasında Dikkat Edilecek Hususlar
M-dosyası çalışma klasörü olarak tanımlanan klasörde bulunmalıdır. M-dosyasına isim verilirken kesinlikle Türkçe karakter kullanılmamalıdır. M-dosyasına isim verilirken MATLAB‟in hazır komutları (pi, exp, sin ve vs.) verilmemelidir.

18 Örnek

19 variable_name = input(‘text’)
Örnek Girilen değerler için noktanın düzleme uzaklığını hesaplayan script dosyasını yazınız. (Kullanıcıdan değer almak için input komutunu kullanın.) variable_name = input(‘text’)

20 Çözüm

21 Uygulamalar Ekrandan girilen x ve y değerlerine göre aşağıdaki fonksiyonun değerini hesaplayan bir program yazınız. Kenar uzunlukları dışarıdan girilen bir dikdörtgenin alanını ve çevresi hesaplayan bir program yazınız. Ekrandan dairenin yarıçapını isteyerek alanını ve çevresini hesaplayan programı m-dosyası kullanılarak hazırlayınız.

22 Matrisler ve Matris İşlemleri

23 Diziler Liste şeklinde dizi oluşturma
Variable_Name = [ Vektör Elemanları] Satır Vektör: x = [ ] veya x = [ 1, 5, 7, -3, 6, 4, 5, 8 ] Sütun Vektör: Elemanlar arasına ; konularak, x = [ 1; 5; 7; -3; 6; 4; 5; 8 ] veya elemanlardan sonra enter tuşuna basarak girilebilir. x=[2 3 5]

24 Diziler Belli bir kurala göre sıralı giden diziler
İlk eleman, artım miktarı, son eleman ile belirlenen diziler: Variable_Name = [ m:q:n] veya Variable_Name = m:q:n m=dizinin ilk elemanı, q=artım miktarı (yazılmazsa 1 alınır), n=dizinin son elemanı >> x=[1:2:10] veya >> x=1:2:10 >> y=1.5:-0.1:0 >> z=10:20 (q=1) x= y= z=

25 Diziler Belli bir kurala göre sıralı giden diziler
İlk eleman, son eleman ve terim sayısı ile belirlenen diziler: Variable_Name = linspace(xi, xf, n) xi=ilk eleman, xf=son eleman, n=eleman sayısı (Bu değer girilmezse, varsayılan olarak 100 kabul edilir.) x=(0,10,20)  [0,10] aralığını 20 eşit parçaya böler. x=(-3,3)  [-3,3] aralığını 100 eşit parçaya böler. x=(49.5,0.5)  [49.5,0.5] !!! aralığını 100 eşit parçaya böler.

26 Matrisler Matris Oluşturma
Variable_name=[elements of 1th row; elements of 2th row; … ; elements of nth row] A = [0 2 3; 4 7 6; 1 9 8] B = [1:5; 2:6; 3:7; 4:8; 5:9] 0 2 3 4 7 6 1 9 8

27 Dizi Adresleme V bir vektör ise V(n) ile vektörün n inci elemanına erişilir. >> V=[ ] >> V(1)  >> ans= 4 >> V(4)  >> ans 12 A bir matris ise A(m,n) ile matrisin m inci satır n inci sütun elemanına erişilir. >> A=[ ; ; ] >> A(3,2)  >> ans=

28 Dizi Adresleme – Kolon Operatörü (:)
Vektörler V(:) – Vektörün tüm elemanlarını ifade eder. (Yani, V ile aynıdır) V(m:n) – Vektörün m ile n arasındaki elemanlarını ifade eder. >> V=[ ]; >> U=V(3:6) >> U =

29 Dizi Adresleme – Kolon Operatörü (:)
Matrisler A(:,n) – Matrisin n inci sütunundaki tüm elemanlar A(m,:) – Matrisin n inci satırındaki tüm elemanlar A(:,m:n) – Matrisin m ve n arasındaki (m ve n dahil) tüm sütun elemanları A(m:n,:) – Matrisin m ve n arasındaki (m ve n dahil) tüm satır elemanları A(m:n, p:q) – Matrisin m ve n satırları ile p ve q sütunları arasındaki tüm elemanlar

30 Klasik Matris İşlemleri
Eleman Bazlı İşlemler Toplama Amxn + Bmxn Çıkarma Amxn – Bmxn Çarpma Amxn * Bnxp Elemanter Çarpma Amxn .* Bmxn Üs Alma Anxn ^k Elemanter Üs Alma Anxn .^k Ters inv(Amxn) veya A^-1 Sol Bölme AX=BX=inv(A)*BX=A\B Elemanter Sol Bölme Amxn ./ Bmxn Sağ Bölme XC=DX=D*inv(C)X=D/C Elemanter Sağ Bölme Amxn .\ Bmxn

31 Eleman Bazlı İşleçler fonksiyonunun x=1,2,…,8 için değerlerini hesaplayınız. fonksiyonunun x=1,3,5,7,9,11 için değerlerini hesaplayınız. Matlabde yerleşik matematik fonksiyonları eleman bazlı çalışırlar.

32 Koşullu Yapılar, Tekrarlı Yapılar
Programlama Koşullu Yapılar, Tekrarlı Yapılar

33 if … end yapısı Önceki komutlar … Önceki komutlar if koşullu ifade
Koşullu ifade doğruysa çalıştırılacak komutlar true false Doğruysa çalıştırılacak komutlar Sonraki komutlar Sonraki komutlar

34 Örnek ornek.m a=input(‘a yı giriniz’); b=input(‘b yi giriniz’);
if a<b disp(‘a, b den küçüktür’) end

35 if … else … end yapısı Önceki komutlar … Önceki komutlar
if koşullu ifade else end Önceki komutlar if koşullu ifade false true Koşullu ifade doğruysa çalıştırılacak komutlar Yanlışsa çalıştırılacak komutlar Doğruysa çalıştırılacak komutlar Koşullu ifade yanlışsa çalıştırılacak komutlar Sonraki komutlar Sonraki komutlar

36 Örnek ornek.m a=input(‘a yı giriniz’); b=input(‘b yi giriniz’);
if a<b fprintf(‘%1$f, %2$f den küçüktür’,a,b) else fprintf(‘%2$f, %1$f den küçüktür yada eşittir’,a,b) end ornek.m A = rand(1,10); limit = .75; B = A > limit; % B, mantıksal değerlere sahip bir vektör if any(B) fprintf(‘A nın > %4.2f: olan elamanları \n', limit); disp(find(B)) else disp(‘Bütün değerler limit değerden küçüktür.') end

37 Örnek Kenar uzunlukları girilen bir üçgenin dik üçgen olup olmadığını belirleyen programı yazınız. ucgentest.m a=input('Birinci Kenar='); b=input('İkinci Kenar='); c=input('Üçüncü Kenar='); test1 = a^2 == b^2 + c^2; test2 = b^2 == a^2 + c^2; test3 = c^2 == a^2 + b^2; dikucgen=test1 | test2 | test3; if dikucgen disp('Kenar uzunlukları dik üçgene aittir'); else disp('Kenar uzunlukları dik üçgene ait değildir'); end >> ucgentest Birinci Kenar=3 İkinci Kenar=4 Üçüncü Kenar=5 Kenar uzunlukları dik üçgene aittir Kullanıcıdan a,b,c kenar uzunlukları alınıyor. Kenar uzunluklarının dik üçgen olup olmadığının kontrolü için mantıksal test1, test2, test3 değişkenleri oluşturuluyor. Üç testten en az birinin sağlanıp sağlanmadığı belirleniyor. En az biri sağlanırsa dikucgen 1(true), aksi halde dikucgen 0 (false) değerini alır.

38 if … elseif … else … end yapısı
if koşullu ifade 1 elseif koşullu ifade2 else (opsiyonel) end Önceki komutlar if koşullu ifade 1 komutlar elseif koşullu ifade 2 elseif koşullu ifade 3 elseif koşullu ifade n else end Koşullu ifade 1 doğruysa çalıştırılacak komutlar Koşullu ifade 1 yanlış ve Koşullu ifade 2 doğruysa çalıştırılacak komutlar Koşullu ifade 1 yanlış ve Koşullu ifade 2 yanlışsa çalıştırılacak komutlar Sonraki komutlar

39 Örnek ornek.m a=input(‘Bir sayı giriniz: ’); if a>0
disp(‘Sayı pozitiftir.’) elseif a<0 disp(‘Sayı negatiftir.’) else disp(‘Sayı sıfırdır.’) end

40 switch - case yapısı … switch koşul değişkeni case değer1 komutlar }
case değer2 ye eşit ise case değer3 e eşit ise otherwise (opsiyonel) komutlar } end sayi=input(‘Bir sayı giriniz'); switch sayi case -1 disp(‘Eksi bir') case 0 disp(‘Sıfır’) case 1 disp(‘Artı bir’) otherwise disp(‘Hiçbiri’) end koşul değişkenin değeri değer1 ise çalıştırılacak komutlar koşul değişkenin değeri değer2 ise çalıştırılacak komutlar koşul değişkenin değeri değer3 ise çalıştırılacak komutlar koşul değişkenin değeri case deki hiçbir değere eşit değilse çalıştırılacak komutlar

41 Örnek x = [12, 64, 24]; plottipi = 'pie3'; switch plottipi case 'bar'
bar(x) title(‘Çubuk Grafik') case {'pie','pie3'} pie3(x) title(‘Pasta Grafik') legend(‘Birinci',‘İkinci',‘Üçüncü') otherwise warning(Beklenmeyen bir grafik türü. Grafik oluşturulamadı'); end

42 Switch blokunda ilk uyuşan değer dikkate alınır.
Örnek sonuc = 52; switch(sonuc) case 52 disp(‘Sonuç 52 dir.') case {52, 78} disp(‘Sonuc 52 veya 78 dir.') end Ekran görüntüsü ne olur? Sonuç 52 dir. Switch blokunda ilk uyuşan değer dikkate alınır.

43 Tekrarlı Yapı

44 for-end yapısı Bazı komutlarının belli sayıda tekrarlanması için kullanılır. for index = değerler komutlar : end for k = f:s:t komutlar : end f: başlangıç değeri s: artim miktarı t: bitiş değeri İlk olarak k=f için for-end arasındaki komutlar çalıştırılır. Daha sonra k=f+s, k=f+2s, … için for-end arasındaki komutlar çalıştırılarak k=t olana kadar devam eder. f=t ise döngü sadece bir kez çalıştırılır. f > t ve s > 0 veya f < t ve s < 0 ise döngü çalışmaz. >> x = 1 x = 16 49 100 for k=1:3:10 x = k^2 end

45 Örnek 𝑘=1 𝑛 −1 𝑘 𝑘 2 𝑘 serisinin değerlerini girilen bir n değeri için hesaplayan komutları yazınız. n=input(‘Terim sayısını giriniz' ); S=0; for k=1:n S=S+(-1)^k*k/2^k; end fprintf(Seri toplamı : %f olarak elde edildi.',S) MATLAB de döngüler yavaş çalışır. Aynı işlemi döngü kullanmadan yapabilir miyiz? n=input(‘Terim sayısını giriniz' ); k=1:n s=(-1).^k.*k./2.^k; S=sum(s); fprintf(Seri toplamı : %f olarak elde edildi.',S)

46 Örnek Kullanıcı tarafından girilen bir dizinin elemanlarından 3 veya 5 ile bölünebilen pozitif elemanlarının iki katını alan matlab programını yazınız. V=input(‘Bir dizi giriniz: ’) n=length(V); for k=1:n if V(k)>0 & (rem(V(k),3) = = 0 | rem(V(k),5) = = 0) V(k)=2*V(k); elseif V(k) < 0 & V(k) > -5 V(k)=V(k)^3; end V

47 while-end yapısı Döngü sayısının önceden bilinmediği tekrarlı yapılar için kullanılır. Bir koşul ifadesi sağlandığı sürece döngü tekrar ettirilir. Koşul ifadesi sağlanmadığında döngü sonlandırılır. while koşul ifadesi komutlar : end Koşul ifadesi en az bir değişken içermelidir. Koşul ifadesindeki değişkenlerden en az biri while-end arasındaki komutlarda yeni bir değer almalı. Aksi halde, sonsuz döngü durumu olacaktır. (Sonsuz döngü durumunda programı sonlandırmak için ctrl+c veya ctrl+break tuşları kullanılır.) x = 1 2 4 8 16 x=1 while x<=15 x=2*x end

48 Örnek 𝑒 𝑥 = 𝑘=1 ∞ 𝑥 𝑘 𝑘! olduğunu biliyoruz. Buna göre serinin terimlerini toplayarak değerini hesaplayan, bu işlemi eklenen terimin mutlak değeri den büyük olduğu sürece yapan ve en fazla 30 terim ekleyen programı yazınız. 𝑒 𝑥 x=input('x değerini giriniz: ' ); n=1; an=1; S=an; while abs(an) >= & n <= 30 an=x^n/factorial(n); S=S+an; n=n+1; end fprintf('exp(%f) = %f',x,S) fprintf('\n Kullanılan terim sayısı: %i',n)

49 break ve continue komutları
break komutu bir döngüyü (for veya while) sonlandırmak için kullanılır. İçi içe döngüler varsa, break komutunun kullanıldığı döngüyü sonlandırır. Bir script veya fonksiyon dosyasında, döngü dışında bir break komutu kullanılırsa, break komutundan sonraki komutlar çalıştırılmadan dosyanın çalıştırılması durdurulur. break komutu genellikle bir koşullu yapı içinde kullanılır. for break end continue komutu bir döngüde (for veya while) var olan döngü adımı sonlandırarak bir sonraki döngü adımına geçmek için kullanılır. continue komutu genellikle bir koşullu yapı içinde kullanılır.

50 Giriş – Çıkış Fonksiyonları
Veri Yazma - Okuma Giriş – Çıkış Fonksiyonları

51 Veri Giriş - Çıkış Fonksiyonları
Biliyoruz ki matlab, eğer komutlardan sonra noktalı virgül (;) işareti konulmadığında komut sonucunu komut penceresinde gösterir. Matlab’de, bu otomatik gösterime ilave olarak veri çıkışı için iki komut daha vardır. disp ve fprintf disp komutu verileri ekrana yazmada, fprintf komutu ise hem ekrana hem de bir dosyaya yazmada kullanılır. Komutlar komut penceresinde, script dosyası içinde veya fonksiyon dosyası içinde kullanılabilir. Bu komutlar script dosyası içinde kullanıldığında sonuçlar komut penceresinde gösterilir.

52 Dosyaya veri yazma fprintf komutu komut penceresine veri yazmanın yanında, bir dosyaya veri yazmak için de kullanılır. Bir dosyaya veri yazma işlemi şu üç adımın yapılması gerektirir: fopen komutunu kullanarak dosyayı açma fprintf komutu ile verileri açık olan dosyaya yazma fclose komutu ile dosyayı kapatma Adım a) fid = fopen(‘dosya_adi’,’izin şekli’) İzin şekli Anlamı ‘r’ Dosyayı okuma için açar (varsayılan)(dosya mevcut olmalı) ‘w’ Dosyayı yazma için açar (Dosya varsa içeriğini siler, yoksa yeni dosya oluşturur.) ‘a’ Dosyayı yazma için açar (Dosya varsa içeriği korur ve dosyanın sonuna yazar, yoksa yeni dosya oluşturur.) ‘r+’ Dosyayı okuma ve yazma için açar (dosya mevcut olmalı) ‘w+’ Dosyayı okuma ve yazma için açar (dosya yoksa yeni oluşturur, varsa içeriği siler) ‘a+’ Dosyayı okuma ve yazma için açar (dosya yoksa yeni oluşturur, varsa içeriği korur) Adım b): fprintf(fid, ‘metin … %f … metin …’, degisken yada degiskenler) Adım c) fclose(fid)

53 Dosyaya Verilerin Kaydedilmesi
Bir metin veya veriyi ekrana veya dosyaya yazmak için fprintf komutu kullanılır. fprintf(‘Ekrana yazılacak metin’) VEYA fprintf (‘%format %format %format….%format’,değişken1, değişken2,değişken3,…)

54 fprintf komutu – flags (etiketler)
Tanım Örnek – (Eksi işareti) Alan içindeki sayıyı sola hizalar %-5.2d + (Artı işareti) Sayının önündeki işaret karakterini (+ veya -) daima yazar %+5.2d 0 (sıfır) Sayı alandan daha kısa ise 0 ekler. %05.2d >> ornek x = linspace(-pi,pi,10); y = [x; x.^3/10; cos(x); sin(x)]; fprintf('%5.2f %+5.2f %-5.2f %05.2f',y);

55 fprintf komutu – flags (dönüşüm karakterleri)
Çıkış formatını düzenlemede kullanılan ve ekrana yazılmayan bazı karakterler. Dönüşüm Karakterleri %c Tek karakter %d Tamsayı gösterim (işaretli) %e Küçük e harfi kullanarak üstel (bilimsel) gösterim %E Büyük E harfi kullanarak üstel (bilimsel) gösterim %f Sabit-nokta gösterimi %g e veya f gösterimlerinin kompakt hali (gereksiz sıfırları göstermez) %G E veya f gösterimlerinin kompakt hali (gereksiz sıfırları göstermez) Karakter Tanım \b  Geriye doğru silme (Backspace) \n  Yeni satır \r  Satırbaşı \t  Yatay tab \\  Ters bölü işaretini yazma \'' or '‘ (two single quotes) Çift tırnak veya tek tırnağı yazma %%  Yüzde karakterini yazma

56 Örnek x = linspace(-pi,pi,10); y = [x; x.^3/10; cos(x); sin(x)];
fprintf('%3.2f \t %5.4f \t %5.4f \t %5.4f\n',y); >> ornek

57 Örnek – Dosyaya Yazma x = linspace(-pi,pi,10);
y = [x; x.^3/10; cos(x); sin(x)]; dosya_1=fopen(‘mat.txt’,’w’); fprintf(dosya_1'%5.4f \t %5.4f \t %5.4f \t %5.4f\n',y); fclose(dosya_1);

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

59 Örnek Aşağıda verilen matrisi bir dosyaya 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);

60 Dosyaya Verilerin Okunması
Formatlanmış verileri içeren dosyadan değerleri okumak için fscanf komutu kullanılır. [degisken, sayi] = fscanf (dosya_id,‟format‟,hacim) degişken : okunan değerlerin atandığı değişken sayi : okunan veri sayısı hacim : okunacak eleman sayısı inf yazılırsa dosyayı sonunda kadar okur (yazılmazsa varsayılan değerdir) N yazılırsa en fazla N tane eleman okunur. [M,N] yazılırsa MxN tane eleman okunur ve MxN tipli matris olarak değişkene atar. N inf olabilir ancak M olamaz.

61 Örnek Aşağıda verilen vektörü bir dosyadan okuyup b değişkenine atayan MATLAB programını yazınız. veri.dat clear all clc a=fopen ('veri.dat', 'r' ); [b,sayi]=fscanf(a,'%d ',inf); fclose(a); b

62 Örnek Yanda verilen veri.dat dosyasından verileri okuyup A değişkenine atayalım. SONUÇ A = Columns 1 through 13 Columns 14 through 18 veri.dat a=fopen ('veri.dat', 'r' ); A=fscanf(a,'%d '); fclose(a); A a=fopen ('veri.dat', 'r' ); A=fscanf(a,'%d ‘,10); fclose(a); A SONUÇ >> A A =

63 Örnek Yanda verilen veri.dat dosyasından verileri okuyup A değişkenine atayalım. SONUÇ >> A A = a=fopen ('veri.dat', 'r' ); A=fscanf(a,'%d ‘,[3,4]); fclose(a); A veri.dat SONUÇ >> A A = a=fopen ('veri.dat', 'r' ); A=fscanf(a,'%d ‘,[4,3]); fclose(a); A

64 Örnek Yanda verilen veri.dat dosyasından verileri okuyup A değişkenine atayalım. SONUÇ >> A A = a=fopen ('veri.dat', 'r' ); A=fscanf(a,'%d ‘,[2,inf]); fclose(a); A veri.dat


"MATLAB ve Temelleri Doç.Dr. Ahmet GÖKDOĞAN." indir ppt

Benzer bir sunumlar


Google Reklamları