Professional Documents
Culture Documents
(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.
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
3 5 A= 7 0
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
1. Dngler:
a. for dngs ok benzer bir ekilde MATLABde bulunmaktadr. Mesela Cde yazlan bir for dngsne bakalm:
}
Bu dng MATLABe yle aktarlabilir:
MATLABi yaratanlar en ok for dnglerinin i++ ile kullanldn fark dng yle de tanmlanabilir:
2. Kontroller
if (i==5)
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) ..
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
%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