Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

MATLAB ve Temelleri Doç.Dr. Ahmet GÖKDOĞAN. MATLAB Tanıtım MATLAB NEDİR? MATLAB®(MATrix LABoratory – Matris Laboratuarı), temel olarak teknik ve bilimsel.

Benzer bir sunumlar


... konulu sunumlar: "MATLAB ve Temelleri Doç.Dr. Ahmet GÖKDOĞAN. MATLAB Tanıtım MATLAB NEDİR? MATLAB®(MATrix LABoratory – Matris Laboratuarı), temel olarak teknik ve bilimsel."— 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. 1970’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: o Komut Penceresi o Programlama (M-file  *.m) o Grafik (Figure  *.fig) o Grafik Arayüzlü Programlar (GUI  *.fig) o Simulink (Model  *.mdl) ve Blockset Modülleri o Toolbox (Araç Kutusu) Modülleri (Symbolic, Fuzzy, Neural, Statistic vb.) o Microsoft Excel  Matlab o Matlab Web-Server o 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 4096 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 = 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: 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) MANTIKSAL İŞLEÇLER İşleçSembolÖrnek Not (Değil) ~~ (A < B) and (ve) &A < B & C < D or (veya) |A < B | C < D İLİŞKİSEL İŞLEÇLER İşleçSembolÖrnek Küçüktür A > B Büyük eşittir >=A >= B Eşittir ==A == B Eşit değildir ~=A ~= B

9 Öncelik Sırası Öncelikİşleç 1 (En yüksek)Parantez ( ) 2^ 3Mantıksal not ( ~ ) 4Çarpma, bölme 5Toplama, çıkarma 6İlişkisel işleçler (,>=,==, =~) 7Mantı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. ) KomutAçıklamaÖrnek format veya format short 4 ondalık >> 290/7 ans = format long 15 ondalık >> 290/7 ans = format short e 4 ondalık + bilimsel >> 290/7 ans =4.1429e+001 format long e 15 ondalık + bilimsel >> 290/7 ans = e+001 format short g Sabit 5 hane >> 290/7 ans = format long g Sabit 15 hane 290/7 ans = format bank 2 ondaklık >> 290/7 ans = format rat Rasyonel Sayı Gösterimi >> 290/7 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ĞRUYANLIŞ MyVar1212MyVar 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 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ÖrnekTrigonometrikYuvarlama 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) ans = ceil(x) Sonsuza doğru yuvarlama >> ceil(11/5) ans = 3 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) ans = 2 abs(x)>> abs(-24) ans = 24 asind(x), acosd(x), atand(x), acotd(x) >> asind(0.5) ans = 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) ans = rem(x,y) x/y de kalan >> rem(13,5) ans = 3 log10(x)>> log10(1000) ans = 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 18

19 Ö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 20

21 Uygulamalar 21 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] 23

24 Diziler Belli bir kurala göre sıralı giden diziler 1)İ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) 24 x= y= z=

25 Diziler Belli bir kurala göre sıralı giden diziler 2)İ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. 25

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]

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= 0 27

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 29

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

31 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 Programlama Koşullu Yapılar, Tekrarlı Yapılar

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

34 Örnek ornek.m a=input(‘a yı giriniz’); b=input(‘b yi giriniz’); if a

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

36 Örnek ornek.m a=input(‘a yı giriniz’); b=input(‘b yi giriniz’); if 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 Koşullu ifade 1 doğruysa çalıştırılacak komutlar Sonraki 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 … if koşullu ifade 1 komutlar elseif koşullu ifade 2 komutlar elseif koşullu ifade 3 komutlar … komutlar elseif koşullu ifade n komutlar else komutlar end …

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 komutlar} case değer3 e eşit ise komutlar} … otherwise (opsiyonel) komutlar } 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 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

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 Ö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ı for index = değerler komutlar : end for k = f:s:t komutlar : end Bazı komutlarının belli sayıda tekrarlanması için kullanılır. 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. for k=1:3:10 x = k^2 end >> x = 1 x = 16 x = 49 x = 100

45 Örnek 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) -5 V(k)=V(k)^3; end V

47 while-end yapısı while koşul ifadesi komutlar : end 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. 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 while x<=15 x=2*x end x = 1 x = 2 x = 4 x = 8 x = 16

48 Örnek 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 … for … for … break end for … break end … 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 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: a)fopen komutunu kullanarak dosyayı açma b)fprintf komutu ile verileri açık olan dosyaya yazma c)fclose komutu ile dosyayı kapatma Adım a) fid = fopen(‘dosya_adi’,’izin şekli’) İzin şekliAnlamı ‘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) EtiketTanı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 x = linspace(-pi,pi,10); y = [x; x.^3/10; cos(x); sin(x)]; fprintf('%5.2f %+5.2f %-5.2f %05.2f',y); >> ornek

55 fprintf komutu – flags (dönüşüm karakterleri) Dönüşüm Karakterleri %cTek karakter %dTamsayı gösterim (işaretli) %eKüçük e harfi kullanarak üstel (bilimsel) gösterim %EBüyük E harfi kullanarak üstel (bilimsel) gösterim %fSabit-nokta gösterimi %ge veya f gösterimlerinin kompakt hali (gereksiz sıfırları göstermez) %GE veya f gösterimlerinin kompakt hali (gereksiz sıfırları göstermez) KarakterTanı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 Çıkış formatını düzenlemede kullanılan ve ekrana yazılmayan bazı karakterler.

56 Örnek >> ornek 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);

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 58 Aşağıda verilen M dizisini (vektörünü) bir dosyaya kaydeden bir MATLAB programı yazınız 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); For döngüsü ile:

59 Örnek 59 Aşağıda verilen matrisi bir dosyaya kaydeden bir MATLAB programı yazınız A=[ ; 2 4 5]; 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. 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. [degisken, sayi] = fscanf (dosya_id, ‟ format ‟,hacim)

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

62 Örnek Yanda verilen veri.dat dosyasından verileri okuyup A değişkenine atayalım. a=fopen ('veri.dat', 'r' ); A=fscanf(a,'%d '); fclose(a); A veri.dat SONUÇ A = Columns 1 through Columns 14 through 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. veri.dat a=fopen ('veri.dat', 'r' ); A=fscanf(a,'%d ‘,[3,4]); fclose(a); A SONUÇ >> A A = a=fopen ('veri.dat', 'r' ); A=fscanf(a,'%d ‘,[4,3]); fclose(a); A SONUÇ >> A A =

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


"MATLAB ve Temelleri Doç.Dr. Ahmet GÖKDOĞAN. MATLAB Tanıtım MATLAB NEDİR? MATLAB®(MATrix LABoratory – Matris Laboratuarı), temel olarak teknik ve bilimsel." indir ppt

Benzer bir sunumlar


Google Reklamları