You are on page 1of 9

TEMEL MATLAB KULLANIMI ncelikle unu belirterek balamak istiyorum ki, MATLAB denen program kullanmamakta srar edenlerdenseniz

(ki herkes bir sre boyunca kullanmamakta srar eder) bir sabah kalktnzda (ya da bir gece boyunca uykusuz kaldnzda) kendinizi benim bu hesab daha kolay yapmamn bir yolu olmas lazm diye barrken bulabilirsiniz. ler bu raddeye gelmeden nce bilgisayarnza MATLAB yklemeniz size zaman ve uyku kazandracaktr. Bu noktada hemen bir uyarda bulunmak istiyorum; MATLAB ykleyecekseniz kesinlikle documentation (nam- dier help dosyalar) ile birlikte ykleyin. Bu dosyalarda MATLAB kullanmyla ilgili bilgilerin yannda kullandnz komutun ya da toolboxn hangi manta dayand, hangi komutlarla benzerlik gsterdii, matematiksel olarak nasl hesapland gibi son derece yararl bilgiler bulacaksnz. Bu bilgileri grafik pencereden okuyabileceiniz gibi help <komut_ismi> komutuyla da grebilirsiniz.

Grdm kadaryla MATLAB renmekten kanlmasnn en byk sebebi, MATLAB komutlarna yeni bir programlama dili gzyle baklmasdr. Halbuki MATLAB komutlar C komutlaryla %90 orannda benzerlik gsterir, geri kalan %10luk fark da parantez yerine end koy, i++ yerine i=i+1 yaz gibi kyda kede kalm farklardan oluur. Bununla C dilinin en temel farkllklarn u ekilde sralayabiliriz: 1. MATLABde her ey (evet her ey) matristir. olarak MATLABde tanmladnz her eye matris gzyle baklr. En basitinden i=3 Bu ne demek? diyenlerinize hemen aklyorum. Cdeki array mantndan farkl birlikte C dilinde olan pek ok dert (bkz. pointer) MATLAB mantnda yoktur. MATLAB ile

yazdnz zaman bile i deikeni zerindeki ilemleri 1x1lik bir matris gibi yapmanza olanak tanr, ki bu zellik az sonra okuyacanz maddeyle birletiinde MATLABin kullanlabilirliini inanlmaz derecede arttrmaktadr.

2. MATLABde deikenler iin ayrlan hafza esnektir.

Yani C program yazarken kurduumuz aaa dur urada yeni bir deikene ihtiyacm

oldu, hemen main satrnn altna ekleyeyim. tarznda cmlelere gerek yoktur. Daha da gzeli deiken tanmlamaya bile gerek yoktur. Programn ortalarnda bir yerlerde

out=5; dediiniz zaman annda bir tane out deikeni yaratp bu deikene 5 deerini atar. zellikle belirtmezseniz btn deikenler double yaratlr. Bu iki maddeyi birletirdiimizde ortaya yle gzel bir kod kabilmektedir: A = 3; A(2) = 5; A(2,1)=7; imdi bu kodu inceleyelim: lk satrda A adl 1x1lik bir matris yaratr ve bu matrisin tek elemanna 3 deerini atar. kinci satrda bu matrisi 1x2lik olacak ekilde geniletir (halk arasnda vektr

ile doldurur) ve ikinci satrn birinci elemanna 7 deerini atar. Artk A matrisimiz

satrda iki tane, ikinci satrda bir tane eleman olamayaca iin bo kalan yerleri sfr

nc satrda A matrisini 2x2 olacak ekilde geniletir (siz de takdir edersiniz ki ilk

denilen ekil) ve ikinci elemanna 5 deerini atar. Bu noktada A = [3 5] olmutur.

haline gelmitir. Ayn matrisi

3 5 A= 7 0

A=[3 5;7 0];


komutuyla da yaratabilirdik. Yaratacanz matrisler zel matrislerse (sfrlardan ve birlerden oluan, lineer artanazalan vs..) u ekilde de oluturabilirsiniz:

A = [ones (1,2) zeros (1, 4)] A = [1 1 0 0 0 0] A = 1 : 0.2 : 2 A = [1 1.2 1.4 1.6 1.8 2]

1 1 1 A = [ones (3)] A = 1 1 1 1 1 1

Yaratlan tm deikenlerin boyutlar MATLABin ana ekrannda Workspace alt penceresinde ya da Command Windowda whos komutuyla grlebilir. Yaratlan bir

matris clear <matris_ismi> ile silinebilir. Tm matrislerin silinmesi iin sadece clear yazlmas yeterlidir. 3. MATLABde matrislerin elemanlarna teker teker veya oklu erimek ok kolaydr. konuyu biraz daha aalm:

Zaten matris zerine kurulmu olan bir programdan da bunu beklerdik. Gene de bu

eklinde bulunan bir A matrisimiz olsun. Farkl eriim komutlar ve sonular aada
bulunmakta:

1 2 A= 3 4

4 4 6 8 6 9 12 8 12 16 2 3

1 2 B = A B = 3 4

4 4 6 8 6 9 12 8 12 16 2 3

B = A(2,3) B = 6 1 B = A(1: 3, 2) B = 2 3 2 3 B = A(1: 3, 2 : 3) B = 4 6 6 9 B = A(3, 2 : end ) B = [ 6 9 12]

imdi MATLABin kendine zg komutlarna gemeden nce C komutlaryla isimleri ayn


fakat kullanmlar farkl olan komutlara bir gz atalm:

1. Dngler:

a. for dngs ok benzer bir ekilde MATLABde bulunmaktadr. Mesela Cde yazlan bir for dngsne bakalm:

for ( i =1; i<=12; i=i+2) {

}
Bu dng MATLABe yle aktarlabilir:

for i=1:2:12 . end ablon haline getirirsek:

MATLABi yaratanlar en ok for dnglerinin i++ ile kullanldn fark dng yle de tanmlanabilir:

for <deiken_ismi> = <ilk_deer> : <art_deeri> : <kontrol_deeri>

etmi olacaklar ki art deeri girilmedii zaman bu deeri 1 alr. Ksacas

for i=1:5 end

2. Kontroller

if kontrol de MATLABde aynen bulunmaktadr. Nasl ki C programnda if (i==3) { b=4; }


Yazyorsak MATLABde de

if i==3 b=4; end


yazabiliriz. Not: if (i==3) yazmakla if i==3 yazmak arasnda hibir fark yoktur, ancak parantez kullanmanz uzun kodlar okurken ben burada ne yapmtm deme miktarnz

azaltacaktr. 3. Dier a. Comment MATLABde commentler % iareti ile yazlr.

if (i==5)

b=4; % bye 4 ata end


b. Noktal Virgl Kullanm virgl koymadnz satrlarn sonular Command Windowda aynen MATLABde satr sonuna noktal virgl koymanz gerekmez. Ancak noktal

yazlacaktr. Yani aadaki gibi bir m-file yarattnz diyelim:

a=3; b=a+1
Bu m-file altnda Command Windowda u yazy grrsnz: b= Eer programnzn ortalarnda bir yerde bir deikenin deerini Command 10000lik bir for dngsnn iindeki bir ilemin sonuna noktal virgl koymay unutursanz gzlerinizin nnden bir film eridi gibi geen bir Command Windowa sahip olabilirsiniz. Windowdan okumak istiyorsanz bu zellik ok iinize yarayacaktr. Ancak 4

MATLAB VE GRAF K Z M MATLABin en temel zelliklerinden birisi grafik izimidir. armayacamz zere

grafik izimi de matrisler zerinden halledilmektedir. Yani grafii izilecek her ey matris olarak ifade edilmelidir. (plot(sin(x)) gibi basit komutlarla grafik izdirmek isteyenler GNUPlot programna bakabilirler). MATLABdeki temel grafik komutlar unlardr: 1. plot

En temel izim komutudur. ekilde kullanlabilir: (x3,y3) .. eklinde noktalara yerletirerek aralarn dz bir izgiyle birletirir.

a. plot(x,y) x ve y matrislerinin elemanlarn koordinat dzleminde (x1,y1), (x2,y2), b. plot(y) y matrisinin elemanlarn koordinat dzleminde (1,y1), (2,y2), (3,y3) ..

eklindeki noktalara yerletirerek aralarn dz bir izgiyle birletirir.

c. plot(x1,y1,x2,y2) y1 matrisini x1e gre, y2 matrisini de x2ye gre izer.

2. stairs

Sadece stairs(x,y) ve stairs(y) eklinde kullanlabilir. Plottan farkl olarak grafikteki noktalar basamak fonksiyonlar eklinde birletirerek izer.

3. stem

Sadece stem(x,y) ve stem(y) eklinde kullanlabilir. Plottan farkl olarak grafikteki noktalar darbe fonksiyonlar eklinde izer.

4. subplot ve hold on - off Bu komutlar birden fazla grafik ayn ekranda grlmek isteniyorsa kullanlr.

subplot(<satr_says>,<stun_says>,<kanc_grafik_olduu>)
penceresinde st ste izer. Bu zellik hold off ile kapatlr.

eklinde

ifade

edilebilir. hold on komutu ise art arda sralanan grafik izim komutlarn ayn grafik

RNEK ABLONLAR MATLABde bir m-file yazmaya baladnzda bir fonksiyonu izdirirken balang

ilkini yatay eksenin lineer, ikincisini de yatay eksenin logaritmik olduu durumlarda kullanabilirsiniz. 1. Lineer ablon % Lineer Sablon clear; t_min = <baslang_zaman> ; t_max = <biti_zaman> ; steps = <adm_says> ; inc = (t_max t_min) / steps ; %Artis miktari

noktanzn olumas iin iinize yarayacana inandm iki tip ablon var. Bunlardan

for i = 1:steps t (i) = t_min + inc * (i 1) ; y (i) = <f (t) eklindeki fonksiyon> ; end

<izim_komutlar> 2. Logaritmik ablon %Logaritmik Sablon clear; f_min = <balang_frekans> ; f_max = <biti_frekans> ; steps = <adm_says> ; inc = ( f_max / f_min ) ^ ( 1 / steps ) ; %Logaritmik artis miktari

for i = 1:steps f (i) = f_min * inc ^ (i-1) ; H (i) = <H (f) eklindeki fonksiyon> ; end <izim_komutlar>

RNEK PROGRAMLAR

% Ornek Lineer Program clear; t_min = 0; t_max = 1E-3; % 1mslik sre steps = 50; inc = (t_max t_min) / steps ; % Artis miktari

for i = 1:steps t (i) = t_min + inc * (i 1) ; y (i) = sin ( 2*pi*2E3*t(i) ); % 2 kHzlik sins end

subplot (3,1,1); plot (t,y); subplot (3,1,2); stairs (t,y);

subplot (3,1,3); stem (t,y);

rnek Lineer Programn kts:

%Ornek Logaritmik Program clear; f_min = 1; f_max = 10E3; steps = 250; inc = ( f_max / f_min ) ^ ( 1 / steps ) ; %Logaritmik artis miktari

for i = 1:steps f (i) = f_min * inc ^ (i-1) ; s = 2*pi*f(i)*1i ; % Sayilara bitisik yazilan i harfi sqrt(-1) olarak algilanir w = 100*2*pi; H (i) = w / ( s + w ); % 100 Hz kesim frekansli 1. dereceden alcak geciren filtre end

subplot(2,1,1); semilogx (f, 20*log10(abs(H))) ; % X ekseni logaritmik olacak sekilde genlik grafigi subplot(2,1,2); semilogx (f, 180/pi*angle(H)); % X ekseni logaritmik olacak sekilde faz grafigi

rnek Logaritmik Programn kts: