MATLAB/Değişkene Değer Atamak input fonksiyonu klavyeden giriş yapmayı sağlayan bir fonksiyondur. degisken=input( bir deger giriniz: ) şeklinde kullanılır. =input('bir değer giriniz: ') bir değer giriniz: 5 5 Eğer bir karakter değişken olarak atanmak istiyorsa; degisken=input('bir değer giriniz:', 's' ) şeklinde olmalıdır. 26 Matlab programında bir değişiklik yapılmazsa, ondalıklı sayıları virgülden sonra 4 basamak olarak gösterir. format short format long format short e format long e format short g format long g format rat Virgülden sonra 4 basamaklı gösterim Virgülden sonra 4 basamaklı gösterim 5 basamaklı üstel gösterim Virgülden sonra 5 basamak ve üstel gösterim Yuvarlatılmış en uygun gösterim (toplam 5 basamak) Yuvarlatılmış en uygun gösterim (toplam 5 basamak) İki sayının oranı şeklinde gösterim 27
>> format short.23 >> format short e.23e+ >> format long.23232323 >> format long e.2323232e+ >> format short g.23 >> format long g.232323 28 >> format rat 893/87 Diğer bir görüntüleme fonksiyonu disp fonksiyonudur. disp(x) şeklindedir. Bir dizi veya metni görüntüler. Dizinin değişken adı ekrana yazılmaz. X bir karakter ise metin olarak görüntülenir. disp(' ') disp(' A-Deg B-Deg C-Deg') disp(' ===== ===== =====') disp(rand(4,3)) Ekranda görülen; A-Deg B-Deg C-Deg ===== ===== =====.389.2722.445.228.988.938.987.53.466.638.7468.486 29 2
Hesaplanan sonuçları görüntülemenin diğer bir yolu fprintf fonksiyonudur. fprintf(format, değer) şeklinde kullanılır. format sunulacak bilginin şeklini, bu bilgiye ilişkin açıklamaları ve bu açıklamaların nasıl bir şekilde sunulacağını belirleyen ifadelerden oluşur. değer sunulacak bilgiyi içerir. >> x=23.2; >> fprintf('islem sonucu %f bulunmustur. \n', x) Islem sonucu 23.2 bulunmustur. >> x=23.2; >> fprintf('islem sonucu = %f \n', x) Islem sonucu = 23.2 %f gösterilecek değişken gösterimine ait açıklamanın hangi şekilde gösterileceğini ifade eder. \n komut istem ifadesinin (>>) kaç satır boşluktan sonra yazılacağını gösterir. 3 >> x=23.2; >> fprintf('islem sonucu = %5.f \n', x) Islem sonucu = 23.2 % ile f işaretleri arasına ondalık sayılar yazarak, gösterilecek değerin biçimini değiştirmek mümkündür. fprintf('islem sonucu = %5.f \n', x) Alan genişliği Ondalık kısım >> x=23.2; >> fprintf('islem sonucu = %5.f \n', x) Islem sonucu = 23.2 >> x=23.2; >> fprintf('islem sonucu = %25.f \n', x) Islem sonucu = 23.2 3 3
Belirteç fprintf için biçimler Tanımı %e Küçük harf ile üstel gösterim %E Büyük harf ile üstel gösterim %f Kayan noktalı gösterim, aksi belirtilmedikçe virgülden sonra 6 basamak gösterir. %s Karakter dizilerini gösterir. %d Virgüllü sayıları daima un kuvvetiyle gösterir. 32 Bir sonuç fprintf fonksiyonu ile yazıldıktan sonra bir diğeri yazılacaksa bunun komut satırının neresine yazılacağı da bu fonksiyonda belirtilebilir. Bunun için kullanılan karakterler: Karakter Tanımı \b backspace \n Yeni satıra gönderir \r Satır başına döndürür \t Yatay Tab 33 4
=.25; >> b=255.23; >> fprintf('a değeri = %5.2f\r ve b değeri = %5.3f \n', a,b) a değeri =.25 ve b değeri = 255.23 Matris elemanlarının istenilen hanede gösterilmesi için, printmatrix fonksiyonu oldukça kullanılışlıdır (File-exchange sayfasından download edilebilir!) =.25; >> b=255.23; >> fprintf('a değeri = %5.2f\b ve b değeri = %5.3f \n', a,b) a değeri =.2 ve b değeri = 255.23 =.25; >> b=255.23; >> fprintf('a değeri = %5.2f\t ve b değeri = %5.3f \n', a,b) a değeri =.25 ve b değeri = 255.23 Görüntülenecek açıklamalarda tek tırnak( ), yüzde (%) ve ters bölme (\) işaretleri kullanılmak isteniyorsa, arada boşluk bırakmadan ikişer adet kullanılmalıdır. 34 Hesaplanan sonuçları string olarak bir değişkene atamak için sprintf komutu kullanılır. değişken=sprintf(format, değer) şeklinde kullanılır. =.25; >> sonuc=sprintf('a degeri = %5.2f',a) sonuc = a degeri =.25 =.25; >> sonuc=fprintf('a degeri = %5.2f',a) a degeri =.25 sonuc = 7 Gösterilen ifadenin kaç karakterden oluştuğunu ifade eder 35 5
Değişkendeki karakter dizisini sayısal bir değere dönüşümü için sscanf komutu kullanılır. değişken=sscanf(karakter dizisi, biçim) şeklinde kullanılır. ='.728'; >> b=sscanf(a,'%f') b =.728 36 MATLAB/Diziler (Arrays) Sayılar : Sayı dizileri (numeric array) Karakterler : Karakter dizileri (character array) Örnek: c=999 (numeric array) d='yildiz Teknik Universitesi' (character array) f=[999 2] (numeric, matrix) g=[d ' Insaat Fakultesi'] (character, matrix) Not: Numeric ile character dizileri bir matriste bir arada bulunamaz! Yani, bir matris hem sayı hem de bir kelimeyi aynı anda içeremez! Hücreler : Hücre dizileri (cell array) Yapılar : Yapı dizileri (structure array) 37 6
Karakterler dizisi veya yalnızca karekter/sözcük (string), iki tek tırnak arasındaki ifade edilen, gerçekte ASCII kod tablosunda sayısal kodlarla belirtilen ilk 27 karakterden oluşan karakter dizileridir (char array). Karakter uzunluğu, dizideki karakter sayısıdır. Her bir karakter bellekte byte (8 bit) yer kaplar. >> ders='bilgisayar bilimleri' ders = bilgisayar bilimleri Burada verilen ders değişkeninde her bir harf ASCII kod tablosundaki sayısal bir koda sahiptir. >> kod=double(ders) kod = 98 5 8 3 5 5 97 2 97 4 32 98 5 8 5 9 8 4 5 38 Tam tersi olarak ASCII karşılığı verilen bir dizinin karakter karşılığını bulmak için char fonksiyonu kullanılır. >> char(kod) ans = bilgisayar bilimleri Çok Boyutlu Dizi Gösterimleri >> x=''; =[ders,' ders kodu ',x] bilgisayar bilimleri ders kodu 39 7
Karakter dizilerinin karşılaştırılması strcmp: İki dizinin aynı olup olmadığını belirler. strcmpi: iki dizinin harf durumu (büyük harf-küçük harf) dikkate alınmadan aynı olup olmadığını belirler. strncmp: iki dizinin ilk n karakterinin aynı olup olmadığını belirler. strncmpi: ilk dizinin harf durumu (büyük harf-küçük harf) dikkate alınmadan ilk n karakterinin aynı olup olmadığını belirler. 4 ='matematik'; >> b='mathematik'; >> c='matematik'; >> e='matematik'; >> x=strcmp(a,b) ='matematik'; >> b='mathematik'; >> c='matematik'; >> e='matematik'; >> x=strcmpi(a,b) ='matematik'; >> b='mathematik'; >> c='matematik'; >> e='matematik'; >> x=strncmp(a,b,4) ='matematik'; >> b='mathematik'; >> c='matematik'; >> e='matematik'; >> x=strncmpi(a,c,) >> x=strcmp(a,e) >> x=strcmpi(a,c) >> x=strncmp(a,b,2) >> x=strcmp(a,c) >> x=strncmp(a,c,) 4 8
Dizilerin tek tek karşılaştırılması: Karakter dizileri aynı boyutlu veya bir elemandan oluşması koşuluyla karakter eşitlik karşılaştırılması için ilişkisel operatörler (>, >=,<, <=, ==, ~=) kullanılabilir. >> x='matlab'; >> y='matema'; >> x==y ans = Büyük-Küçük Harf Dönüşümleri: upper: Dizideki tüm harfleri büyük harfe dönüştürür. lower: Dizideki tüm harfleri küçük harfe dönüştürür. >> upper('matlab') ans = MATLAB >> lower('matlab') ans = matlab 42 9