Değişken atama Kullanıcıdan veri girişi istendiğinde kullanılır 1. Bir değişkene değer atama (örn: a=4 gibi) 2. Klavyeden veri girme 3. Bilgisayar belleğinde saklanan verileri bir dosyadan okumak
1. Bir değişkene değer atama >>x=2; >>y=34.2; >>isim= Ahmet ; veya >>x=2; y=34.2; >>isim= Ahmet ;
2. Klavyeden veri girme "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. 4 farklı şekilde yapılabilir. I. Input II. Klavyeden girme III. Menu fonksiyonu IV.pause komutu
I. Input Eğer klavyeden değer girilmek istenirse input komutu kullanılır. En genel hali; Değişkenadı=input( ifade ) şeklindedir. Bu komutla kullanıcıdan değer girmesi beklenir.» num=input( Pozitif bir sayı giriniz: ') Pozitif bir sayı giriniz: 5 num = 5 Yukarıdaki örnekte komut yazıldıktan sonra ekrana kullanıcıdan pozitif bir sayı isteyen cümle gelecek. Kullanıcı örneğin 5 değerini girdiğinde num değişkene 5 değerini atayacaktır.
>> a=input('') 4 a = 4 >> a=input('a= ') a= 4 a = 4 İnputkomutu 3 farklı şekilde girilebilir >> a=input('değer atayınız a= '); değer atayınız a= 3
input KOMUTU ĐLE KLAVYEDEN SAYISAL VERĐ GĐRME >> sayi1=input('lutfen 1. Sayiyi Giriniz= ') >> sayi1=input('8') Tek tırnaklararasınanasılbir bilgi girmesi gerektiği hususunda kullanıcıya verilecek uyarı mesajı yazılır.
input KOMUTU ĐLE KLAVYEDEN METĐNSEL VERĐ GĐRĐŞĐ >> isim=input('lutfen Isminizi Giriniz = ', 's')
II. Klavyeden Girme Keyboard & return komutu İşletilen programların kodlarına ve içeriklerine dışarıdan müdahale edebilmek için kullanılır. Böylece programın isletilmesi durdurulur, fonksiyonun kontrol edilebilmesini sağlar, değişkenler üzerinde inceleme ve değişiklik yapılabilir. Bu komutun aktif olduğu K>> seklindeki özel bir komut istem sembolü ile belirtilir. Bu özellikten çıkıp programın akısına devam edebilmek için, return komutu girilir ve enter tuşuna basılır. Bu özellik sayesinde çalışma alanında üretilen sonuçlara anında ulaşabilmek mümkün olmaktadır. Return den önce program ya da değişken yazılabilir.
Örnek: Aşağıdaki örnekte M-File ve komut icra satırları verilmiştir. Bu program komut satırında çalıştırılırsa aşağıda gösterildiği gibi icra edilir Birinci sayıyı giriniz: 4 İkinci sayıyı giriniz: 2 K>> c=10 c = 10 K>> return d = 80 K>> return
Örnek:Aşağıdaki dosyayı yazarak çalıştırın. A=10; B=16; X=A+B; Y=X/2; Keyboard Z=A-B % %Y değerini kontrol et ve yazmayı bitir % return komutu kalan programı çalıştırır.
> A=10; B=16; X=A+B; Y=X/2; keyboard% Y değerini kontrol et Z=A-B K>> A A = 10 K>> Z??? Error using ==> keyboard Undefined function or variable 'Z'. K>> Y Y = 13 K>> return Z = -6
III. menu fonksiyonu i=menu( title, option1, option2,..) >>i=menu('select your favorite name','ahmet','mehmet','ali'); if i==1 disp('ahmet is your friend') elseif i==2 disp('mehmet is your brother') elseif i==3 disp('ali is your father') else disp('no selection is done') end ahmet is your friend 12
IV. pause komutu pause komutu programın geçici olarak dondurulmasını sağlar. Devam etmek için klavyeden herhangi bir tuşa basabilirsiniz veya belirtilen süre sonunda kendiliğinden devam eder. pause Fonksiyonu klavyeden herhangi bir tuşa basıncaya kadar geçici durdurma yapar. yapar. pause(k) Fonksiyonu n saniye kadar geçici durdurma for i=1:10 i pause(2) end 13
Okuma ve Dosyaya Kaydetme Dosyadan veri almada kullanılan bir çok fonksiyon vardır. 1. load fonksiyonu: Diskte saklı bir dosya içindeki değişkenleri tekrar belleğe yükler. load load( dosyaismi ) % matlab.mat (default) dosyasını yükler %verdiğiniz dosya isminde yükler load( dosyaismi, x, y, z )%sadece x, y, z değişkenlerini verdiğiniz dosyaya yükler load dosyaismi x, y, z % sadece x, y, z değişkenlerini verdiğiniz dosyaya yükler Not: 1. Dosya isminin yanında uzantısını yazmazsanız.mat uzantılı olarak kaydeder. 2. Load fonksiyonu sadece sayısal veri içeren dosyalarda kullanılır
Okuma ve Dosyaya Kaydetme ÖRNEK: Aşağıdakileri yazın ve abc.txt dosyası olarak kaydedin 1 3 4 5 77 8 0 9 >>load abc.txt %Dosyayı workspace e yükler >>abc 1 3 4 5 77 8 0 9 Şayet biz değişken ismini değiştirmek istersek aşağıdaki komutu yazmamız gerekir. >>test=load ( abc.txt ) % şimdi veriler abc.txt, test olarak kaydedilir.
Okuma ve Dosyaya Kaydetme 2. save function: Değişkenleri kaydeder save save( dosya ismi ) save( dosya ismi, x, y, z ) save dosya ismix, y, z Not:- %Workspace dekibütün verileri matlab.mat olarak kaydeder %Verileri veriğiniz dosya isminde kaydeder %dosyaya sadece x, y, z değişkenlerini yükler %dosyaya sadece x, y, z değişkenlerini yükler 1. Dosya isminin yanında uzantısını yazmazsanız.mat uzantılı olarak kaydeder. 2. Değişkenleri içinde bulunulan directory den başka bir directory ye kaydetmek için, dosyanın tüm adı belirtilmelidir
Okuma ve Dosyaya Kaydetme 3. textread fonksiyonu: Şayet bir text dosyası sayı içeriyorsa dosya önce fopen komutu ile çağrılmalı sonra textreadkomutu ile okunmalıdır. fid=fopen( abc.txt, r ) % abc.dat dosyasını okumak için açar textreadkomutu ayrılmış değişkenleri okumada kullanılabilir. [a, b, c, d]=textread( abc.txt, %f %c., N) (N okunacak satır sayısıdır. N yoksa dosyanın tümü yani son satırına kadar okunur) gibi [isim, çeşit, a, b, c]=textread( abc.txt, %s%s%f%f%f ) %s: dizge tanımı %f:kayan noktalı sayı formatıdır
Okuma ve Dosyaya Kaydetme Matlab dedosyaların içindeki metnin okunması için textreadfonksiyonu bulunmaktadır. Örneğin, aşağıda koordinat.txt dosyasındaki verilerin okunması istensin: Bunun için, fonksiyonu kullanılır. nokta, nokta isimlerini içeren bir hücre dizisi; x, x koordinat vektörü ve y, y koordinat vektörü olarak atanır.
Okuma ve Dosyaya Kaydetme fopen, program çıktılarının yazdırılacağı dosyayı açar, fprintf yazdırır ve fclose ise yazdırma işlemini sonlandırır. Örneğin, bir a kenarı programda hesaplatılmış olsun. Bu programın a çıktısını, kenar.txt isimli bir dosyaya yazdırmak için, aşağıdaki kodlar düşünülür; a=150.0234234; fid=fopen('kenar.txt','w'); fprintf(fid,'%s%1.4f','kenaruzunlugu=',a); fclose(fid); w bu dosyanın üzerine yazılacağını gösterir. (a mevcut metnin altına yaz demektir)
Okuma ve Dosyaya Kaydetme
Program Çıkışı ve Sonuç Gösterme 2. disp fonksiyonu >>A=[1 2; 3 4]; >>disp(a) 1 2 3 4 % değişkenleri gösterir >>disp( En büyük sayı: ) En büyük sayı: % mesajı gösterir
Giriş-Çıkış Fonksiyonları 1.Dosya açma kapama fonksiyonları 2.Formatlı giriş-çıkış fonksiyonları
Giriş-Çıkış Fonksiyonları 1. Dosya açma-kapama fonksiyonları fopen fonksiyonu: komutu bilgi kaydetmek için veri dosyası açar veya oluşturur. Yazım formatı: fid=fopen( dosya ismi, izin_kodu) burada fid=file id izin_kodu = erişim modunu belirten bir karakter dizisidir [fid] = fopen(dosya ismi, izin_kodu, format) burada format = dosyadaki verilerin türünü açıklar
Giriş-Çıkış Fonksiyonları fid= fopen('bil_prog.txt','wt'); Yapısı ile.txtdosyası çalışılmakta olan klasör içine açılır. Örneğin, bil_prog.txt. Eğer istenilirse farklı bir adrese de ilgili txdosyası açılabilir. Burada wt txtdosyasının hem yazma hem de okuma için açıldığını belirtir. Ayrıca fid yerine fid1, fid_1 veya fid_sonuclar gibi farklı ifadeler kullanılabilir.
Giriş-Çıkış Fonksiyonları >> fid_banu= fopen('deneme_5.txt','wt'); >> fprintf(fid_banu, 'd666666666eneme %i \n',4); >> fclose(fid_banu); >> >> fprintf('d666666666eneme %i \n',4); d666666666eneme 4 >> % ekrana yazar d666666666eneme 4
Giriş-Çıkış Fonksiyonları clear all; clc fid= fopen('deneme_1.txt','wt'); fid1= fopen('sonuclar.txt','wt'); % fid yani deneme 1 e yazar for i=1:10 fprintf(fid,' deneme %i \n',i); end % fid1 yani sonuclar.txt ye yazar for i=1:10 fprintf(fid1,' deneme %i \n',i^2); end % ekrana yazar for i=1:10 fprintf(' deneme %15.4f \n',i^3); end fclose(fid); fclose(fid1); deneme 1.0000 deneme 8.0000 deneme 27.0000 deneme 64.0000 deneme 125.0000 deneme 216.0000 deneme 343.0000 deneme 512.0000 deneme 729.0000 deneme 1000.0000 >> Ekran Çıktısı
Giriş-Çıkış Fonksiyonları clear all; clc fid= fopen('deneme_1.txt','wt'); fid1= fopen('sonuclar.txt','wt'); % fid yani deneme 1 e yazar for i=1:10 fprintf(fid,' deneme %i \n',i); end % fid1 yani sonuclar.txt ye yazar for i=1:10 fprintf(fid1,' deneme %i \n',i^2); end % ekrana yazar for i=1:10 fprintf(' deneme %15.4f \n',i^3); end fclose(fid); fclose(fid1);
Giriş-Çıkış Fonksiyonları clear all; clc fid= fopen('deneme_1.txt','wt'); fid1= fopen('sonuclar.txt','wt'); % fid yani deneme 1 e yazar for i=1:10 fprintf(fid,' deneme %i \n',i); end % fid1 yani sonuclar.txt ye yazar for i=1:10 fprintf(fid1,' deneme %i \n',i^2); end % ekrana yazar for i=1:10 fprintf(' deneme %15.4f \n',i^3); end fclose(fid); fclose(fid1);
Giriş-Çıkış Fonksiyonları
Giriş-Çıkış Fonksiyonları fopen fonksiyonunun diğer kullanımları fids=fopen( all ) burada fids=bütün açık dosyaların dosya İd sini vektör olarak gösterir [dosyaismi, izin_kodu, format] = fopen(fid)
Giriş-Çıkış Fonksiyonları fclose fonksiyonu: Yapısı ile.txt dosyası kapatılır. Dosya kapatılmadığı sürece tüm her şey satır satır txt dosyasına yazılır. Dosya fclose ile kapatılırsa yazma işlemi yapılamaz. Aynı dosya tekrar açılırsa içindekiler silinerek program tekrar üst satırdan itibaren yazmaya başlar.
Giriş-Çıkış Fonksiyonları 2. Formatlıgiriş-çıkış fonksiyonları:çıkışın formatlı olarak yazdırıldığı komutlardır. i. fprintf fonksiyonu
Giriş-Çıkış Fonksiyonları i. fprintf fonksiyonu: fprintf(fid, format, değişkenadı) Örnek: x = 0:.1:1; y = [x; exp(x)]; fid = fopen('exp.txt','w'); fprintf(fid,'%6.2f %12.8f\n', y); fclose(fid); Şimdi exp.txt isimli dosyayı açıp verilere bakalım 0.00 1.00000000 0.10 1.10517092 0.20 1.22140276 0.30 1.34985881 0.40 1.49182470 0.50 1.64872127 0.60 1.82211880 0.70 2.01375271 0.80 2.22554093 0.90 2.45960311 1.00 2.71828183 Note: 1. Burada%6.2f. Her zaman % işareti ile başlar 6 = eşitlikten sonra 6 boşluk bırakır 2 = virgülden sonraki basamak sayısı f = sabit nokta (ondalık)
Giriş-Çıkış Fonksiyonları fprintf('ekrana Basılacak Açıklama %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: degerinbir tamsayıolduğunu gösterir. %f : deger in bir ondalıklı sayı olduğunu gösterir. (.6) %g: degeri mümkün olan en kompakt forma sokar. %e: degerineksponansiyelolduğunu gösterir. Diğeryandan : \n : İmleci bir alt satırın başına götürür.(n, newline) \t: İmlecibir TAB kadar sağa kaydırır.
Giriş-Çıkış Fonksiyonları format ın genel yazım şekli; %a.be veya %+a.be % + = always print with sign character (+ or -) veya %-a.be %-= left justified veya %0a.be % pad zeros in starting Burada; a = alan genişilği b = virgülden sonraki basamak sayısı e = karakter(%c tekil karakter, %s karakter dizisi, %d işaretli ondalık sayı, %e eksponansiyel(sayıyı üstel şekilde gösterir), %f sabit nokta (ondalık) Not: 1. '%6.2f %12.8f\n aralarında boşluk yoktur 2. \n yeni satır anlamına gelir
Giriş-Çıkış Fonksiyonları X = 4; Y = 56.23; Z = 'Merhaba Dünya' ; Q = 'c'; fprintf(' Tam sayı örneği... X = %d\n', X); fprintf(' Ondalıklı sayı örneği... Y = %f\n', Y); fprintf(' String (katar) örneği... Z = %s\n', Z); fprintf(' Char (karakter) örneği... Q = %c\n', Q);
Yukarıdaki kullanımda %5.3f ifadesi floatformatında üç haneli şekilde yazmaya yarar. İfadenin bir alt satıra geçmesi için \n kullanılır. Burada kullanılan 5 ise arttırıldıkça sayı sağa doğru kayar.
fprintf Kullanımına Örnekler
Ödev 7: Verileri klavyeden (keyboard) yazıp oluşturacağınız bir formülü hesaplayan, sonuçları da txt dosyası olarak yazdıran bir Matlab programı hazırlayın. Ödev, 21 Nisan 2014 tarihine kadar Arş. Gör. Ufuk KANDİL eteslim edilmelidir.