SİSTEM ANALİZİ Ders otları yaıda yardımcı referas kayaklar: System Aalysis ad Sigal Processig, 1998, Philip Debigh A Itrductio to Radom Vibratios, Spectral & Wavelet Aalysis, 3 rd ed., 1993 Logma Scietific & Techical, David E. Newlad Sigals ad Systems 97 (Alai V. Oppeheim) A Course i Digital Sigal Processig by Boaz Pot 97 Aalog ad Digital Sigal Processig by Ashok Ambers Matlab for Egieers, - 9, 99, (Adria Byra & Moshe Breier) MATLAB, Programmig for Egieers (Stephe Chepma) 1. GİRİŞ İşaret İşlemede temel MATLAB kullaımı >> a=; (;) eklemezse eter a basıldığıda Matlab, ekrada a = şeklide çıkış verir. Değişkee değer atama bir işlemi soucu şeklide de olabilir: >> parmaklarim = * 2; Diziler >> x = [1.3 17.2 14.7 18.1; 12.3 13.6 14. 16.2; 18.1 2.2 18.2 2.6]; Buradaki (;) matris yazarke alt satıra geçişi ifade eder. >> x 1.3 17.2 14.7 18.1 12.3 13.6 14. 16.2 18.1 2.1 18.2 2.6 >> size(x) 3 4 19 karaktere kadar değişke ismi kullaılabilir. İlk karakter harf olmak zorudadır, büyük küçük harf ayırımı vardır. >> x = [1 3 7] Satır vektörü 1 3 7
>> x = [1; 3; ; 7] Sütu vektörü 1 3 7 >> clear Hafızayı boşaltır. >> clc Sadece komut peceresii temizler. >> clf Resmi temizler (clear figure). Bir vektörü oluşturulması: >> x = [*pi.1*pi.2*pi.3*pi.4*pi.*pi] x =.3142.6283.942 1.266 1.78 >> x = (3 : 6) x = 3 4 6 >> x = (:.1 :.) * pi Bu ifade x = [*pi.1*pi.2*pi...*pi] ile ayı soucu verir. ( ve. sıırlar,.1 adım büyüklüğü olmak üzere) >> x = lispace(,.*pi, 6) Adım büyüklüğü bilimiyorsa lispace komutu kullaılabilir, üstteki komut ile ayı souç alıır. (: başlagıç,.*pi: bitiş, 6: elema sayısı) >> t = lispace(, *pi, 1) Adım Büyüklüğü = π / (1-1) =.1 π >> y = si(t); >> a = [1 3 ]; >> b = [2 4 6 8 1]; >> c = [a b a] c = 1 3 2 4 6 8 1 1 3 >> a = zeros(3, ) 3 Sıfırlar Matrisi a = >> c = oes(1, 7) 1 7 Birler Matrisi (birim vektör)
c = 1 1 1 1 1 1 1 >> oes(size(d)) Öcede üretilmiş bir matrisi boyutuda sıfır/bir matrisi üretir. >> zeros(size(d)) Zero paddig diye aıla işlem. Elimizdeki matrisi değerii değiştirmede 2 = (belirli bir sayıya) tamamlamak içi ile doldurmak. >> g(4:6)= (8 2 7) 4 te 6 ya kadar ola elemaları verice boşlukları ile dolduruyor. g = 8 2 7 >> g(1) = 7 de 1 a kadar ola elemaları yapıyor. g = 8 2 7 >> f(7) = 7 elemalı sıfır vektörü f = >> f(7) = 1 7 elemalı birim vektör f = 1 1 1 1 1 1 1 >> x = (3: 1); 3. elemaı çağırma >> x(3) >> y = x(2:6) Sub-vector (alt vektör) mevcut vektörü (x) bir kısmıı başka bir vektöre atayabiliriz. y= 4 6 7 8 >> z = x(6:-2:2) 8 6 4 (6. elemada 2. elemaa doğru -2 eksilterek) Dizi Matematiği Matlab te işlem öcelik sırası aşağıdaki gibidir: Güç alma Çarpma ve Bölme (eşit öcelikli, hagisi öce geliyorsa o işlem yapılır) Toplama ve Çıkarma (eşit öcelikli, hagisi öce geliyorsa o işlem yapılır) 4/3 * 2 = (4/3) * 2 4 + 3/4 = 4 + (3/4)
>> y = [9 7 4]; >> z = y * 2 3^2 9 1 >> x = lispace(, 1, 6) x= 2 4 6 8 1 >> y = lispace( 1 6) y=.2.4.6.8 1 >> z = x + y 2.2 4.4 6.6 8.8 11. >> z = x.* y z =.4 1.6 3.6 6.4 1. (.) elema elema çarpım uygulamasıı sağlar, bölme öüde de kullaılabilir. (.) olmasaydı satır-sütu sayısı uyuşmazlığı yüzüde hata verirdi. >> z = x./ y NaN 1 1 1 1 1 (NaN = ot a umber) >> z = x.\ y (x/y y\x) NaN.1.1.1.1.1 >> z = x.^2 4 16 36 64 1 Elema İdeksleme ve Zama İdeksleme x = [8 6 4], = (:2) i değeri x i sırasıı (ideksii) verir plot(,x) (x i ye göre çizer) >> x = [23 41 67 81], = (1996:1999) x = 23 41 67 81 = 1996 1997 1998 1999
Bir vektörü ve ideksii uzatılması Sayısal işaret işlemede ideksi de dikkate alarak bir diziyi her iki ucuda uzatmak çokça yapıla bir işlemdir. Mesela bir dizi ve ideksi aşağıdaki gibi olsu, >> x = [8 2 7], =(3 : ); diziyi ideksi -2 de 8 e uzayacak şekilde sıfırla destekleyelim. >> = (-4 : 1); Buu e kolay yolu diziyi ve ideksii elle girmektir: >> xx =[ 8 2 7 ], =(-2:8) Bu giriş ekrada şöyle bir çıktı verir: xx = 8 2 7 = -2-1 1 2 3 4 6 7 8 Uzu vektörlerle çalışıldığıda daha pratik yollar gereklidir. Şimdi ayı işlemi MATLAB i yeteekleride yararlaarak yapalım. (1)-(1) ile x i solua gelecek sayısıı buluruz (yai 3-(-2)=). Sol tarafı sıfırla uzatılmış x dizisi: >> xx = [zeros(1,(1)-(1)) x] xx = 8 2 7 Şimdi de xx i sağda i uzuluğua geliceye kadar uzatalım: >> xx(legth()) = xx = 8 2 7 Başta elle elde edile diziye ulaşılır. Lieer Cebir ve Matris İşlemleri >> A= [1 2 3; 4 6; 7 8 9], B=[9 7 ; 8 6 4; 3 2 1] A = B = 1 2 3 4 6 7 8 9 9 7 8 6 4 3 2 1
Matrisleri boyutları: >> size(a), size(b) as = 3 3 as = 3 3 Girile adresteki elemaları çağrılması: >> A(3,2), B(1,3) 8 Matrisleri ya yaa ve alt alta birleştirilmesi: >> C=[A,B], D=[A;B] C = 1 2 3 9 7 4 6 8 6 4 7 8 9 3 2 1 D = 1 2 3 4 6 7 8 9 9 7 8 6 4 3 2 1 >> size(c) >> size(d) 3 6 6 3 Matrislerde istee alt-vektörleri çekilip alıması: >> A(1,:) A ı birici satırıı alır. (:) Tüm elemaları ifade eder. 1 2 3 >> C(:,2) as = 2 8 >> A*B % (ormal matris çarpımı [karşılıklı satır-sütu]) as = 34 2 16 94 7 46 14 11 76
>> A.*B (elemaları karşılıklı çarpımıı yapar) as = 9 14 1 32 3 24 21 16 9 Örek: 3 bilimeyeli 3 deklem. x, y ve z i buluması: 2x + 3y + 4z = x + 2y + 3z = 1 8x 2y z = -1 >> A= [2 3 4; 2 3; 8-2 -], B=[; 1; -1] A = 2 3 4 2 3 8-2 - B = 1-1 AX = B x = [x y z] x = A -1 B >> X = iv(a) * B X = 1.1429-9. 7.4286 x,y ve z bilimeyeleri sırasıyla 1.1429, -9 ve 7.4286 olarak buluur. plot ve stem Komutları plot girile oktaları grafiğii eterpolasyo la birleştirirke, stem ayrık olarak çizer. >> t= :.1:6; >> y= si(2*pi*1*t); >> subplot (2, 1, 1) >> plot(t,y) >> subplot (2, 1, 2) >> t= :.12:6; y= si(2*pi*1*t); stem(t,y,'r') >> stem(t,y)
1 t= :.1:6; y= si(2*pi*1*t); plot(t,y), grid ) (V l ik ge. -. -1 1 2 3 4 6 zama (s) t= :.12:6; y= si(2*pi*1*t); stem(t,y,'r'), grid 1 ) (V l ik ge. -. -1 1 2 3 4 6 zama (s) Matlab özellikle bir çok bilim ve mühedislik dalı içi hazırlamış zegi alet kutu larıyla büyük kolaylıklar sağlar. Bularda bazıları Sigal Processig, Filter Desig, Image Processig, Wavelet, Cotrol Systems, Robust Cotrol Commuicatios, Data Acquisitio Statistical, Fiacial, Neural Network, Fuzzy Logic, System Idetificatio, Symbolic Math, İlgili alet kutularıda yararlaılarak elde edilmiş birkaç örek grafik aşağıya alımıştır: İleri yol trasfer foksiyou aşağıdaki gibi verile bir egatif birim geri beslemeli kotrol sistemii ele alalım. K( s + 3)( s + 4)( s + 8) G ( s) = 2 s ( s + 2)( s + 1)
>> pay = [2*(cov([1 3],(cov([1 4],[1 8]))))]; >> payda = [cov([1 ],(cov([1 2],[1 1])))]; Bu sisteme ait açık-çevrim trasfer foksiyou: >> sis1 = tf(pay,payda) Trasfer fuctio: 2 s^3 + 3 s^2 + 136 s + 192 -------------------------------- s^4 + 17 s^3 + 3 s^2 sisteme ait kapalı-açık çevrim trasfer foksiyou: >> sis2 = [1]; >> gbsistem = FEEDBACK(sis1,sis2) Trasfer fuctio: 2 s^3 + 3 s^2 + 136 s + 192 -------------------------------------- s^4 + 37 s^3 + 33 s^2 + 136 s + 192 Başka bir sistemi kök yer eğrisii çizelim: >> um=[1]; deum=[cov(cov([1 2],[1 4]),[1 6])]; rlocus(um,deum) x i s A a ry g i a Im 1 8 6 4 2-2 -4 System: sys Root Locus Gai: 48 Pole:.19 + 6.63i.84.72.6.46 Dampig:.3 -.24.16 Overshoot (%): 1 Frequecy (rad/sec): 6.63.92 System: sys Gai: 193.98 Pole: -1 Dampig: 1 Overshoot (%): Frequecy 14 (rad/sec): 12 1 1 8 6.98 4 2-6.92-8.84.72.6.46.3.16-1 -16-14 -12-1 -8-6 -4-2 2 Real Axis
Basit bir RC devresiyle kurula bir alçak geçire filtrei frekas aalizi: 1 kω v i.1 µf v o um=[1]; deum=[1e-4 1]; bode(um,deum), grid Bode Diagram B ) (d e d itu M ag -1-2 -3-4 g ) e (d e P has -4-9 1 2 1 3 1 4 1 1 6 Frequecy (rad/sec) Ayrıca SIMULINK kullaarak çok daha kullaımı ve geliştirmesi kolay uygulamalar gerçekleştirebiliriz:
1 1 [ ] x. -4-2 2 4 6 8 1 12 14 1 2 [ ] x. -4-2 2 4 6 8 1 12 14 4 2 [ ] *x 1 [ ] x 2-4 -2 2 4 6 8 1 12 14 Covstem.m Fial1.m