2/25/2013
MATLAB Ek Ders 3:
Programalama
Kitabımız: MATLAB ile Uygulamaları (Ahmet Altıntaş)
Yrd. Doç. Dr. Sevgi Zübeyde GÜRBÜZ
Yrd. Doç. Dr. İsrafil BAHÇECİ
ELE 371 ve ELE 375
Bahar 2013
Programalama
 MATLAB, bir programalama araci olarak
kullanilabailir
 C,Java,Pascal,Delphi
 Dosya olusturma
 *.m dosyalari
 MATLAB ta birbiri ardinca yapilmasini istedigimiz
komutlari text olarak, uzantisi “.m” olan bir dosya
olarak kaydedip, o dosyayi direk calistitrarak elde
ederiz
 *.m fonksiyonlari
 Yukairdaki .m dosyasi gibidir, ek olarak, input-output
ilskisi tanimlanabilir
1
2/25/2013
M-dosyasi
 Matlab’ta yandaki satirlari
test.m olarak kaydedelim.
 >>test
 Commandline’da
calistirdigimizda dosyanin
icindeki satirlari sira ile
calistirir
M=2;
N=4;
D=(M+N-4);
Z=D-2;
X=0:1:10;
Y=X.^2;
figure
plot(X,Y)
test.m
Fonksiyon M- dosyasi
 Bir modulu, m-function
olarak yazilabilir
 Input: m-file komutlarinin
ihtiyaci duydugu inputlar
 Output: m-file icinden
istedgimiz outputlar
 Boylece, workspace
M=2;
N=4;
D=(M+N-4);
Z=D-2;
X=0:1:10;
test.m [X,Y,Z] = my_plot(X,M)
figure
plot(X,Y)
icinde, bagimizsiz bir
fonksiyon work space
olusturulur, ve o work
space, asil workspace’ini
etkilemez
function [a,b,c] = my_plot(f,g)
tmp=f.^2;
figure
plot(f,tmp)
a=f+g;
my_plot.m b=f-tmp;
c=0;
2
2/25/2013
M-dosya kullanimlari
 Bir m-dosyasi diger m-
dosyasini cagirabilir
 Bir m-fonksion doyasi, diger
m-dosyalarini cagirabilir
 M dosyasinin ihtiyac duydugu
parametereler, m-fonksiyon
workspace\inde bulunmali
 Ozellikle normal m-dosyalri
icice cagrldiginda, parametre
isimlerine dikkat edilmeli,
yanlislikla istedigimiz
paramtereler baska sekilde
kullanmiyalim
F=4;
G=3;
test;
[a,t,y]=my_plot(0:2:10,4);
test2;
test4;
F=5;
…
F=19;
G=23;
…
test2.m !!!
F = my_other_fun(G);
…
test4.m
Programalama
 Problem tanimlama
 Problem analizi
 Algoritma gelistirme
 Akis semasi olusturma
 Program yazimi
 Program test etme
 Ornek: ax^2+bx+c =0 denklemi icin kok bulup
ekrana yazdirma
3
2/25/2013
Kok_bul.m
[abc] = input('Kat sayilar>> ','s');
katsayi = str2num(abc);
a=katsayi(1);
b=katsayi(2);
c=katsayi(3);
delta = b^2-4*a*c;
if (delta > 0)
x1=(-b+sqrt(delta))/2/a;
x2=(-b-sqrt(delta))/2/a;
kokler =num2str([x1 x2]);
disp(['Iki gercel kok var: ' num2str(x1) ' ve ' num2str(x2) ]);
elseif (delta <0)
x1 = (-b+1i*sqrt(-delta))/2/a;
x2 = (-b-1i*sqrt(-delta))/2/a;
disp(['Iki sanal kok var: ' num2str(x1) ' ve ' num2str(x2) ]);
else
x1 = -b/2/a;
disp(['Iki katli kok var: ' num2str(x1) ])
end
Matlab Programi Metotlari
 Mantiksal islemler
 Karsilastirma: ==,<=,>=,<,>,~=
 Fonksiyonlar: eq(),ge(),le(), gt(),lt(), ne()
 Mantik: &,|,~
 and(),or(),not(),xor()
 all(),any()
 if … elseif … else … end
 switch () … case
 Donguler
 For, while, do
4
2/25/2013
If…else ve switch
 Istenilen kosullarin sira ile
test edilmesinide kullanilir
 If … else …, belli kosullar
sire ile karsilastirili
 switch(my_param) case…,
ile, my_param icindeki
deger case my_type ile
my_type degeri ile
karsilastirilir.
[abc] = input('Kat sayilar>> ','s');
katsayi = str2num(abc);
a=katsayi(1); b=katsayi(2); c=katsayi(3);
delta = b^2-4*a*c;
if (delta>0)
my_type = 'GERCEK';
elseif (delta < 0)
my_type = 'SANAL';
else
my_type = 'KATLI';
end
switch (my_type)
case 'GERCEK'
x1=(-b+sqrt(delta))/2/a;
x2=(-b-sqrt(delta))/2/a;
kokler =num2str([x1 x2]);
disp(['Iki gercel kok var: ' num2str(x1) ' ve ' num2str(x2) ]);
case 'SANAL'
x1 = (-b+1i*sqrt(-delta))/2/a;
x2 = (-b-1i*sqrt(-delta))/2/a;
disp(['Iki sanal kok var: ' num2str(x1) ' ve ' num2str(x2) ]);
otherwise
x1 = -b/2/a;
disp(['Iki katli kok var: ' num2str(x1) ]);
end
Donguler
 for … end : belli sayida karsilastirma icin kullanilir
 While …end, belli bir kosulu sagliyana kadar
dongu devam eder
mysum1 = 0;
for i=1:10;
mysum = mysum + i;
end
ctr=1;
mysum3 = 0;
while (ctr <= 10)
mysum3 = mysum3 +
ctr;
ctr = ctr+1;
end
myv = [3 1 2 4 5];
mysum2=0;
for th = myv
mysum2 = mysum2 + th;
end
ctr=1;
mysum4 = 0;
while (ctr <= 10)
mysum4 = mysum4 + ctr;
ctr = ctr+1;
if (ctr > 5)
break;
end
end
5
2/25/2013
File input/output
 fid = fopen(‘my_file.txt’,amac);
 amac: ‘r’,’w’,’a’,’r+’,’w+’,’a+’,’W’,’A’
 Bkz: matlab help fopen example
 fclose(fid): dosyayi kapatir
 fprintf(fid,format,A): A daki bilgiyi, format seklinde fid nolu
dosyaya yazar
 Format: %d,%e,%f,%s,%x,%c
 Bkz: matlab help fprintf example
 [a b] = fsscanf(fid,format,boyut)
 Boyut seklinde bir dosyayi, format seklinde okuyup a ya yazar,
okunan veri miktarini b ye yazar
 Dosyanin uygun sekilde olmasi gerekmekte
 Vektorize, bir anda bir cok veri okunabilir
 C = textscan(fid,format): belli bloklar olarak formatlanmis text
dosyasi okuyucusu
 Ornek:cvs dosyalari gibi delimiter olan dosyalar
Strings
 MATLAB’ta charcter dizinleri kullanilabilmekte
 My_text = ‘Ben burdayim’;
 Char(v_positiv_tamsayilar) : ASCII characterlere
cevirir
 Double(s_string): ASCII kodunu sayilara cevirir
 String birlestirme: stringler de birir vektor dur;
 A=[string1 ‘ ile ‘ string2 ‘ti birlestirdim];
 A: yukaridaki stringleri iceren tek bir vektor olur.
 Char(string1,string2): alt alata birlestirir, kolon
sayilarini bosluklara esitler
 Strcat() ile de birlestirme yapilabilir
6
2/25/2013
String tarama
 findstr(string,’pattern’): pattern kelimesini string




icinde arar ve ilk indisi dondurur
Strrep(string,’kelime1’,’kelime2’): string’teki
kelime1 yerine kelime2 yazar
lower, upper: hepsini kucuk /buyuk harf yap
Isletter(): stringin her bir karakteri icin harf ise 1,
degilse 0 donrurur
String/sayi donusumleri
 int2str
 str2int
 str2num
String karsilastirma
 strcmp(string1,string2)
 strncmp(string1,string2,n): ilk n karakter
karsilastirma
 strcmpi, strncmpi: buyuk kucuk harf ayirdetmez
 S = regexp(string,pattern): pattern kelimesin
string icinde tarar ve buldugu her durum icin, ilk
indisleri vektor olarak yazar
 Regexprrep(string,pat1,pat2): bulunan butun pat1
ler yerine pat2 yazar
7
2/25/2013
Veri transferi
 *.mat dosyalari: save ve load islemleri
 save my_file.mat: butun work space’I my_file.mat
icine kaydeder
 save my_params.mat param1 param2 : sadece
param1 ve param2’yi my_params.mat icine kaydet
 load my_file, load my_params
 Figure dosyalari
 GUI yardimi ile grafikleri, istenilen formatta
sakliyabiliriz
 *.fig: matlab tarafindan okunabilen dosylar, figurun tamamini
kaydeder
 *.jpg,*eps, etc: diger resim dosyalari, bu sekilde sadece
pixel bilgileri ve ya vektor grafik oalrak kaydedilir, matlab
datalari geri getirilemez
Ornek:
 …
8
Download

MATLAB Ek Ders 3