HOŞ GELDİNİZ
LİNKLER  
  Ana Sayfa
  FIKRA
  OYUNLAR
  Kur'an-ı Kerim
  Etkileyici sözler
  ARADIGINIZ HER ŞEY
  Sizden Gelenler
  KOU ögrenci not görüntüleme
  Anketler
  BİLGİSAYAR DERSİ
  BAĞLAMA KURSU
  MATLAB
  Fon müzkleri
  ÖZEL
  MÜZİK
  Türkü ve Hikayeleri
  CHAT
  Sarkı Mesajları
  İletişim
  Turkiye Hava Durumu
  sevgi ve ask sözleri
  TV İZLE ve RADİO DİNLE
  msn,faceboook
  Kütüphaneler
  gazeteler
  siir dinletisi
  bilgi yarişmasi
  HÜDAVERDİ :D
  KEMAL SUNAL SABAN
  KOMİK VİDEOLAR
  ÜYELİK
  SAHADAN.COM
  MAÇKOLİK.COM
  İDDAA.COM
  sohbet odası
  ÇANAKKALE
  DUNYANIN YEDI HARİKASI
  telefon sakaları
MATLAB
[ ]

Köşeli parantezler, vektörleri ve matrisleri biçimlendirmek için kullanılır. Örneğin [6.9,9.64, sqrt(-1) ] elemanları virgüllerle (veya boşluklarla) ayrılmış üç elemanlı bir vektördür. Buna karşılık [11 12 13;21 22 23], iki satır ve üç sütundan ibaret 2x3 lük bir matrisi gösterir. Burada noktalı virgül ”;”matris oluşturulmasında bir satırı sona erdirip bunu izleyen satırın oluşmasını sağlar. Böylece mxn boyutundaki bir matrisi kolayca oluşturmak mümkündür. Vektör ve matrisler [ ] köşeli parantez içinde gösterilir. Örneğin bir A matrisinin satır sayısı B matrisinin satır sayısına eşit ve B nin satır sayısı ve A nın sütun sayısı artı B nin sütun sayısı C nin sütun sayısına eşit ies [A B; C] biçiminde yeni bir matris oluşturmakta mümkündür.

A=[ ]

Biçiminde bir bildirim boş bir matrisi A değişkenine atar.


( )

MATLAB içinde normal parantez çeşitli amaçlarla çeşitli yerlerde kullanılır. Olağan yoldan; aritmetik deyimlerin üstünlüğünü belirtmek ve fonksiyon argümanlarını (arguments) kapatmak için kullanılır. Daha genel anlamda da vektör ve matrislerin indislerini kapatmak için kullanılır. Eğer X ve V bir vektör ise X(V) de bir vektördür ve



[ X( V(1) ), X( V(2) ) , . . . . . , X( V(N) ) ]



şeklinde gösterilir. V’nin elemanları en yakın tamsayıya yuvarlatılarak indisler olarak kullanılır. Eğer bu tür bir indisin değeri 1 den küçük veya X’in boyutundan küçük olacak olursa hata ortaya çıkar. Bazı örnekler verecek olursak; X(3) X vektörünün 3’ncü elamanını gösterir.

X( [1 2 3] )

ve benzer şekilde

X( [sqrt(2), sqrt(3), 4*atan(1)] )



X vektörünün ilk üç elemanını göstermek için kullanılır. Eğer X’in N adet elemanı varsa

X( N:-1:1 )

komutu yukarıdaki işlemi ters çevirir. Benzer şekilde dolaylı indisleme matrislerde de kullanılır. Örneğin V’nin M elemanı ve W’nun N elemanı mevcut olsun. Bu durumda A(V,M) A’nın elemanlarından oluşmuş MxN boyutlu bir matrisdir. Burada !’nın indisleri V ve W nun elemanlarıdır. Örnek olarak;


A( [1,5],: ) =A( [5,1] ),: )



İfadesi A matrisinin 1 ve 5’nci satırları arasında yer değiştirme sağlar.

.

Kesir ayırma işareti. 314/100, 3.14 ve .314e1 aynı anlama gelir. Nokta işareti aynı zamanda eleman elemana çarpma ve bölme işleminde de kullanılır. Kullanılış biçimleri; .*, .^, ./, . veya .’. şeklindedir. Örneğin, C=A./B elemanları c(i,j)=a(i,j)/b(i,j) olan bir matrisdir.






...

Bir tek satıra sığmayan ifadelerin bir alttaki satırda devam ettiğini gösterir.



,

Matris indislerini ve fonksiyon argümanlarını ayırmak için kullanılır. Virgül işareti aynı zamanda bir satıra birden fazla bildirim yazılması halinde bildirim komutlarını ayırmak için de kullanılır.


;

Noktalı virgül bir bildirimde elde edilen sonuçların program icrası sonunda ekranda görüntülenmesini önlemek için kullanılır. Ayrıca köşeli parantezler içinde matrislere ait satırları sona erdirmek için de kullanılır.


%

Yüzde işareti açıklama satırları için kullanılır. Başında % işareti bulunan satırlar icra edilmez. Bir çizgi üzerinde bulunan % işareti, çizginin mantıksal bir sonu olduğunu gösterir.


!

‘!’ işaretini izleyen herhangi bir yazı DOS komutu işlemi görür. Böylece MATLAB içinde DOS komutlarını çalıştırma imkanı sağlanır.



:

Sütun işareti; indislerde, FOR iterasyonlarında ve muhtemelen her yerde kullanılabilinir. Belli başlı kullanım biçimleri aşağıda olduğu gibidir.


J:K, J den başlayarak 1 er 1 er K ya kadar artan bir dizi oluşturur. Ve [ J, J+1 ... , K] aynı anlama gelir.

J:K da J>K ise boş bir vektörü sonuçlandırır.

J:I:K J ile başlayan I aralığında artarak K’ ya kadar giden bir dizi oluşturur ve


[ J, J+1, J+2I, . . ., K]

ifadesi ile aynı anlama gelir.

J:I:K ifadesinde I>0 ve J>K veya I<0 ve J<K olacak olursa boş bir matris sonuçlanır.

Sütun işareti aynı zamanda vektörlerin ve matrislerin seçilen satırlarını, sütunlarını ve elemanlarını ayırmak için de kullanılır. Bu durum aşağıdaki örneklerle de gösterilmiştir.

A(:) Tek bir sütun olarak A nın tüm elemanlarıdır. Atanan bir bildirimin sol tarafında A(:) önceki biçimini koruyarak A yı doldurur.

A( : , J ) A’nın J’inci sütunu ile aynıdır.

A( : , J+1) A’nın J’den itibaren birer birer artarak K ya kadar giden elemanlarını gösterir ve A(J), A(J+1), ..., A(K) ile aynıdır.

A( :, J : K) Benzer şekilde A( : , J), A( :, J+1), ... ,A( :, K ) ile aynıdır.






¢

Tırnak işareti matrislerin transpozesini almayı sağlar. X’ , X matrisinin karmaşık eşlenik transpozesini ve X.’ İse eşlenik olmayan transpozesini sonuçlandırır. Ayrıca ‘ANY TEXT’ şeklindeki aktarım işlemlerinde karakterler için elemanları ASCII kodlarında bir vektörü göstermek için kullanılır.


+

Toplama, X+Y iki matrisin toplamını alır. Bu toplamın gerçeklenebilmesi için matrislerin aynı boyutlarda olması gerekir. Yalnızca matrislerden birisi skalar olduğunda toplam gerçeklenebilir. Bir skalar herhangi bir şeye eklenir.


-

Çıkarma, X-Y X matrisinden Y matrisini çıkarır. Burada da toplama işlemindeki benzer koşulların gerçeklenmesi gerekir.


*

Matrisyel çarpım işlemcisi. X*Y X ve Y matrislerinin matris çarpımını gösterir. Herhangi bir skalar (1x1elemanlımatris) herşey ile çarpılabilinir. Aksi takdirde X matrisinin sütun sayısı Y matrisinin satır sayısına eşit olmalıdır.


*

Eleman elemana çarpım işlemcisi. X.*Y eleman elemana çarpma işlemini gösterir. Birisi skalar olmadıkça, X ve Y matrislerinin eleman sayıları eşit olmalıdır. Yalnız bir skalar her şey ile çarpılabilinir.






Matrisyel soldan bölme işlemcisi. AB B matrisinin A matrisine bölümünü gösterir ki bu da hemen hemen inv(A)*B işlemi ile aynıdır. Yalnız hesaplama biçimleri farklıdır. Eğer A NxN elemanlı bir matris ve B de N elemanlı Sütun vektörü ise X=AB ifadesi Gaussian eliminasyonu yoluyla hesaplanan A*X=B denklemi için bir çözümdür. Eğer A matrisi kötü bir şekilde ölçeklendirilmiş veya hemen hemen tekil ise bir uyarı mesajı alınır. Aeye(A) ifadesi A’nın tersini sonuçlandırır. Eğer A mxn olacak şekilde m x n elemanlı bir matris ve B de m elemanlı sütun vektörü ise X=AB en küçük kareler cinsinden altında ve üstünde saptanan sistem denklemlerinin, A*X=B bir çözümdür.



.

Skalar veya eleman elemana soldan bölme işlemcisi. A.B deyimi; elemanları B( i, J)A(i, J) olan bir matrisdir. Yalnız burada A ve B ‘nin aynı boyutta olması gerekir.


/

Matrisyel sağ bölme işlemcisi. B/A B matrisinin A matrisine bölümünü gösterir ki bu da hemen hemen B*inv(A) ile aynıdır. Yalnız hesaplama yöntemleri bakımından farklılık gösterir. Diğer bir biçimi ile B/A=(A’’B) dır.







./

Eleman elemana bölme işlemcisi. B./A eleman elemana bölme işlemini gösterir. Bu durumda A ve B matrisinin aynı boyutta olması gerekir. Yalnız birini skalar olması halinde buna gerek yoktur. Çünkü bir skalar herşey ile bölünebilir.

3./A ile 3 ./A aynı işlem olmadığına dikkat etmek gerekir. Çünkü birinci ifadede nokta 3 rakamının kesir işaretini gösterdiğinden matris bölme işlemini yaptırır ve ikinci ifade de ise nokta eleman elemana bölme işlemini işaret eder.




^

Matrisyel kuvvet alma işlemcisi. Z=X^y ifadesi y’nin skalar olması halinde X’in Y’inci kuvvetini aldırır. Eğer y birden büyük bir tam sayı ise kuvvet alma işlemi tekrarlı çarpma yolu ile hesaplanır. y’nin diğer değerleri için hesaplama özdeğerler ve özvektörler yolu ile gerçeklenir. Z=x^Y ifadesinde x’in Y’inci kuvvetinin alınmasında eğer Y bir matris ve x bir skalar ise hesaplama işlemi özdeğerler ve özvektörler kullanılarak yapılır. Z=X^Y de X ve Y’nin her ikisinin de matris olması halinde hata oluşur.


^

Eleman elemana kuvvet alma işlemcisi. Z=X.^Y ifadesi eleman elemana kuvvet alma işlemini gösterir. Ancak birinin skalar olması halinde bu koşul aranmaz. Çünkü bir skalar ile işlem görebilir.


<

...den küçük bağıntı işlemcisi. “<=” ...den küçük veya eşittir işlemcisi. C=A<B bildirimi A ve B matrisleri arasında eleman elemana karşılaştırma yapar ve aynı boyutta bir matrisi sonuçlandırır. C matrisinin elemanları; bağıntının gerçek olması halinde bir ve gerçek olmaması halinde de sıfır olarak atanır. A ve B matrisleri aynı boyutta olmalıdır. Yalnız birinin skalar olması halinde bu şarta gerek yoktur. Çünkü bir skalar ile karşılaştırılabilir. Diğer bağıntı işlemcileri; >, >= , = = , ~ = şeklindedir.


>

...den büyük bağıntı işlemcisi. “>=” ...den veya eşittir işlemcisi.



=

Bildirimleri atamak için kullanılır.


= =

Mantıksal eşittir bağıntı (relational) işlemcisi.


&

Mantıksal AND (ve): C=A & B bildiriminde; A ve B matrislerinin her ikisi de sıfırdan farklı elemanlara sahip olduğunda 1 ve sadece bir tanesi sıfır elemana sahip olduğunda da sıfır elemanlı bir matris sonuçlandırır. A ve B aynı olduğunda da sıfır elemanlı bir matris sonuçlandırır. A ve B nin aynı boyutta matrisler olması gerekir. Yalnız birinin sıfır olması halinde bu koşula gerek yoktur.



|

Mantıksal OR (veya): C=A | B bildirimi A ve B matrisleri sıfırdan farklı elemana sahip olduğunda, 1 ve her ikisinden birisi sıfır olduğunda sıfır elemanlı bir matris sonuçlandırır.


~

Mantıksal tamamlayıcı (complemet) NOT (değil) işlemcisi ~ = : Eşit değildir işlemcisi. B~= bildiriminde; A matrisi bir sıfır elemanına sahip olduğunda 1 ve sıfırdan farklı elemanlara sahip olduğunda 1 ve sıfırdan farklı elemanlara sahip olduğunda da sıfır elemanlı bir matrisi sonuçlandırır.






ÖRNEKLER
 
ABS:   İşaretin genlik spektrumunu görmemize yarar. Başka bir şeyle karşılaştırılarak ölçülemeyen değerdir.
ABS(X):   X’in elemanlarının ölçülemeyen değeridir. X karmaşık olduğunda, ABS(X) X’in elemanlarının kompleks büyüklükleridir.
 
 
1.                  MATLAB kullanarak *.wav dosyası olarak kaydedilmiş bir ses işaretinin frekans spektrumunu ve genlik spektrumunu bulunuz.
 
      x=wavread('c:MTUMT1.wav');
>> subplot (2,1,1);
>> plot(x)
>> title('x[t]');
>> y=fft(x);
>> subplot(2,1,2);
>> plot(abs(y));
>> title('Genlik Spektrumu');     
 2.                  Zaman ekseninde sonlu işareti dürtü yanıtı ile çarpıp, filtreden geçiren programı yazınız.
 
     y=wavread('c:MTUMT2.wav');
>> subplot(1,3,1);
>> plot(x)
>> h=[0,0067 0,1250 0,3653 0,1562 0,0083];
>> z=conv(y,h);
>> subplot(1,3,2)
>> plot(z,'s')
>> d=fft(z);
>> subplot(1,3,3)
>> plot(abs(d))
 
3.                  MATLAB kullanarak zaman ekseninde sonlu işaretin genliğini ve fazını bulunuz.
 
     x=wavread('c:MTUMT3.wav');
>> subplot(3,1,1)
>> plot(x)
>> spec=fft(x);
>> subplot(3,1,2)
>> mag=abs(spec);
>> plot(mag)
>> subplot(3,1,3)
>> ph=angle(spec);
>> plot(ph)
4.         MATLAB kullanarak giriş işareti ve dürtü yanıtı verilen LZD’ sistemin çıkışını 
            ve frekens spektrumunu ve genlik spektrumunu bulunuz.         
 
     n=-10:10;
>> x=[0 0 0 0 1 2 0 -1 0 0 0];
>> subplot(4,1,1)
>> stem(x)
>> subplot(4,1,2)
>> h=[0 0 0 0 0 3 2 1 0 0 0];
>> stem(h)
>> y=conv(x,h);
>> subplot(4,1,3)
>> stem(y,'r')
>> subplot(4,1,4)
>> z=fft(y);
>> stem(abs(z))
  1.       MATLAB kullanarak sıfır ve kutuplarını belirlediğimiz bir sistemin frekans  
            yanıtını bulunuz.
 
      p=[0.5;0.45+0.5i;0.45-0.5i];
>> z=[-1;i;-i];
>> zplane(z,p);
>> k=1;
>> [num,den]=zp2tf(z,p,k);
>> [h,w]=freqz(num,den);
>> subplot(2,1,1)
>> plot(w,abs(h));
>> title('Genlik');
>> subplot(2,1,2);
>> plot(w,angle(h));
>> title('faz');
  1. Kesim frekansı fk=5 kHz hamming pencereleme yöntemi kullanılarak      
            tasarlanacak 20. derece alçak geçiren bir FIR süzgeç tasarlayınız.
 
                 [y,fs,bits]=wavread('c:MTUMT2.wav');
>> y1=fir1(20,0.907,hamming(21));
>> subplot(2,1,1);
>> z=conv(y,y1);
>> plot(z),
>> t=fft(z);
>> subplot(2,1,2);
>> plot(abs(t));
 
  1. MATLAB kullanarak frekans örneklemesi yöntemiyle ideal bir alçak geçiren
     süzgeçten yola çıkıp Ωc=п/2 kesim frekansı olan 4. dereceden alçak geçiren bir
     FIR süzgeç tasarlayınız.
 
     F=[0 0.2 0.4 0.6 0.8 1.0];
>> A=[1 1 1 0 0 0];
>> h=fir2(4,F,A);
>> subplot(4,1,1)
>> plot(h)
>> subplot(4,1,2);
>> x=fft(h);
>> plot(abs(x));
>> mag=abs(x);
>> subplot(4,1,3);
>> plot(mag)
>> ph=angle(x);
>> subplot(4,1,4)
>> plot(ph)
  1.  Kesim frekansı fk=3 kHz olan ve Blackman penceresi kullanarak tasarlanacak
      derece alçak geçiren bir FIR süzgeç tasarlayınız.
 
     [y,fs,bits]=wavread('c:MTUMT3.wav');
>> x=fir1(10,0.544,blackman(11));
>> z=conv(x,y);
>> subplot(1,2,1);
>> plot(z)
>> title('z[n]');
>> t=fft(z);
>> subplot(1,2,2)
>> plot(abs(t))
>> title('Genlik');
 
  1. Kesim frekansı fk=10 kHz olan ve Hamming pencereleme yöntemi kullanılarak
            tasarlanacak 20.derece alçak geçiren bir FIRsüzgeç tasarlayınız.
 
                 [y,fs,bits]=wavread('c:MTUMT2.wav');
>> y2=fir1(20,0.4535,hamming(21));
>> z1=conv(y,y2);
>> subplot(1,2,1)
>> plot(z1)
>> title('z1[n]');
>> t1=fft(z1);
>> subplot(1,2,2)
>> plot(abs(t1))
>> title('Genlik')
 
10.       MATLAB kullanarak dürtü değişmezliği ile bir Butterworth süzgeci       
      tasarlayınız. Süzgecin geçirme bandı kesim frekansı Ωg=0.2 olsun ve geçirme   
      bandında genlik yanıtı en çok –0.915 dB’ ye düşebilsin. Süzgecin söndürme
      bandı kesim frekansı Ωs=0.4 olsun ve söndürme bandında genlik yanıtı
-20 dB’nin altında bulunsun.
 
      [n,wn]=buttord(0.2,0.4,-0.915,-20);
>> [b,a]=butter(n,wn,'s');
>> [bz,az]=impinvar(b,a,1/pi);
>> [h,w]=freqz(bz,az);
>> subplot(1,2,1)
>> plot(w,abs(h))
>> subplot(1,2,2)
>> plot(x)
>> x=angle(h);

*******************************************************************
Angle
 
Faz açısıdır.
ANGLE ( H ) : Kompleks elamanlı matrislerin faz açılarını radyana çevirir.
 
 
 
 
Örnek 1:
z = 3 + 4i sayısının modülünün ve açısını bulunması.
 
z = 3 + 4i ;
 abs ( z )
           ans =
                    5
angle (z)
           ans =
                  0.9273
 
Örnek 2:
Z =
1.0000 - 1.0000i   2.0000 + 1.0000i   3.0000 - 1.0000i   4.0000 + 1.0000i
1.0000 + 2.0000i   2.0000 - 2.0000i   3.0000 + 2.0000i   4.0000 - 2.0000i
1.0000 - 3.0000i   2.0000 + 3.0000i   3.0000 - 3.0000i   4.0000 + 3.0000i
1.0000 + 4.0000i   2.0000 - 4.0000i   3.0000 + 4.0000i   4.0000 - 4.0000i
 
P = angle(Z)
P =
 
   -0.7854    0.4636   -0.3218    0.2450
    1.1071   -0.7854    0.5880   -0.4636
   -1.2490    0.9828   -0.7854    0.6435
    1.3258   -1.1071    0.9273   -0.7854
 
Örnek 3:
Bir dizinin FFT sini hesaplamak.
 
t = ( 0 : 99 ) / 100;                           % zaman vektörü
x = sin ( 2*pi*15*t ) + sin ( 2*pi*40*t );   % işaret
y = fft ( x )                                                   % DFT hesabı
p = unwrap ( angle(y) )                               % fazın hesaplanması
 
 
 
Örnek 4:
H (s) = ( 0.2s2 + 03s + 1 ) / ( s2 + 0.4s +1 ) olarak verilen transfer fonksiyonun frekans cevabının bulunması.
 
a = [ 1 0.4 1 ] ;
b = [ 0.2 0.3 1 ] ;
w = logspace ( -1 ,1 ) ;
 freqz ( b, a, w )
h = freqz ( b, a, w );
mag = abs (h) ;
phase = angle (h) ;
 
 
 
Örnek 5:
Butterworth süzgecinin grup ve faz gecikmesinin çizdirilmesi.
 
[ b, a ] = butter (10, 200 / 1000 ) ;
gd = grdelay ( b, a, 128 ) ;
[ h, f ] = freqz ( b, a, 128, 2000 ) ;                         %süzgecin karakteristiğini belirtiyor.
pd = - unwrap ( angle( h ) ) * ( 2000 / ( 2*pi ) ) ./ f;
plot ( f, gd, ‘-‘ , f , pd, ‘—‘ )
axis ( [ 0 1000 –30 30 ] )
 
 
Örnek 6:
Transfer fonksiyonu H (z) = 1/ ( 1-0.4z-1-0.05z-2 ) olarak verilen nedensel bir sistemin frekans yanıtının bulunması.
 
b = [1 0 0 ] ;                                               % payın katsayıları
a = [ 1 -0.4 –0.5] ;                                    % paydanın katsayıları
w = -pi:2*pi/300:pi ;                                  % ( -π,π ) aralığında frekans değerleri tanımlar.
Hf = freqz( b, a, w );                                  % frekans yanıtının hesaplanması
subplot( 2, 1, 1 )
plot ( w, abs(Hf) );                                     % frekans yanıtının genliğini çizdirir.
subplot( 2, 1, 2 )
plot ( w, angle (Hf) );                                 % frekans yanıtının fazını çizdirir.
 
Örnek 7:
Dürtü değişmezliği ile Butterworh süzgeci tasarımı. Süzgecin geçirme bandı kesim frekansı Ωg = 0.2 olsun ve geçirme bandında genlik yanıtı en fazla –0.915 dB’ ye düşsün. Söndürme bandı kesim frekansı Ωs = 0.4 olsun ve söndürme bandı genlik yanıtı –20 dB’ nin altında bulunsun.
 
[ n, wn ] = buttord( 0.2, 0.4, -0.915, -20 )
wc = 2*tan(wn/2)                                                        % ayrık zamanlı kesim frekansını sürekli
                                                                                         zaman karşılığına çevirir.
 [b, a] = butter(n, wc, ‘s’)                                          % sürekli zamanlı Butterworh süzgeci
                                                                                       oluşturulması.
[bz,az] = bilinear(b,a,1/pi)                                        % sürekli zaman süzgeç fonksiyonu      
                                                                                       Bilineer dönüşüm ile ayrık zamana
                                                                                       Dönüştürülür.
[h,w] = freqz(bz,az);                                                 % süzgecin frekans yanıtının buluması.
plot( w, abs(h) )
plot( w, angle(h) )
            
Örnek 8:
Bir ses dosyasının okutularak fourier dönüşümü alınarak genlik ve fazının çizdirilmesi.
 
y = wavread( ‘c:matlabworkspeech_dft’);
spec = fft(y);
mag = abs(spec);
subplot( 2, 1, 1 )
plot(mag);
ph = angle(spec);
subplot( 2, 1, 2 )
plot(ph);

***************************************************************************
REAL
 
 Real komutu  Karmaşık bir  sayı veya işaretin  gerçek kısmı ifade eder. x herhangi bir karmaşık ifadeyi göstermek üzere real(x) biçiminde kullanılır. İstediğimiz ifadeyi real komutunda parantez içinde belirttiğimizde ifadenin gerçek kısmını elde ederiz.
En basit biçimde,
 
Örnek 1
EDU» real(2+3*i)
 
ans =
      2
 2+3i ifdesinin gerçek kısmı 2’dir.
 
 
Örnek 2
 
Karmaşık sayılardan oluşan 3x3’lük bir matrisin gerçek kısmı.
 
EDU» x=[3+2*i  1-3*i   4+2*i
   2+6*i  4-1*i  -3-3*i
   7+3*i -1-2*i  -3+2*i]
 
x =
    3.0000 + 2.0000i   1.0000 - 3.0000i   4.0000 + 2.0000i
   2.0000 + 6.0000i   4.0000 - 1.0000i  -3.0000 - 3.0000i
   7.0000 + 3.0000i  -1.0000 - 2.0000i  -3.0000 + 2.0000i
 
EDU» real(x)
 
ans =
      3     1     4
     2     4    -3
     7    -1    -3
 
Örnek 3  
 
3x4’lük bir matrisin gerçek ve imajiner  kısmı.
EDU» x=[1+3*i    2-1*i      -5-7*i
                 2+4*i    0+5*i       0-3*i
                 5-4*i     2+2*i         2
                   -2      -2-2*i          0]
x =
   1.0000 + 3.0000i   2.0000 - 1.0000i  -5.0000 - 7.0000i
   2.0000 + 4.0000i        0 + 5.0000i        0 - 3.0000i
   5.0000 - 4.0000i   2.0000 + 2.0000i   2.0000         
  -2.0000            -2.0000 - 2.0000i        0  
EDU» r=real(x)                                   %gerçek kısmı
r =
     1     2    -5
     2     0     0
     5     2     2
    -2    -2     0
EDU» i=imag(x)                                  %imjiner kısmı
i =
     3    -1    -7
     4     5    -3
    -4     2     0
     0    -2     0
EDU» y=r+i*j                                     %  a+jb şeklinde toplamı aldığımızda yeniden x’i verir
y =
   1.0000 + 3.0000i   2.0000 - 1.0000i  -5.0000 - 7.0000i
   2.0000 + 4.0000i        0 + 5.0000i        0 - 3.0000i
   5.0000 - 4.0000i   2.0000 + 2.0000i   2.0000         
  -2.0000            -2.0000 - 2.0000i        0       
 
 
Örnek 4  
 
 
 
Transfer fonksiyonu             
 
 
İçin kutup-sıfır grafiğini çizdirelim.
EDU» a=[1 -0.75 0.90 -0.25];
EDU» b=[0.25 0.36 0.36 0.25];
EDU» [z,p,k]=tf2zp(b,a);
EDU» zplane(z,p) 
 
şimdi bu kutup ve sıfırların karmaşık kısımlarını yok edip sadece gerçek kısımlarını alip transfer fonksiyonunu bulalım.
EDU» z=real(z);
EDU» p=real(p);
EDU» zplane(z,p)
EDU» [b,a]=zp2tf(z,p,k);
EDU» b
b =
    0.2500    0.3600    0.1221    0.0121
EDU» a
a =
    1.0000   -0.7500    0.1829   -0.0146

 

 
 
 
 

 
 
yeni transfer fonksiyonu:    
 
 
 
Örnek 5
 
Blackaman filtresinin fourier dönüşümünün gerçek kısmının genlik ve faz yanıtı
 
EDU» y=fir1(10,0.25,blackman(11));  10. dereceden kesim frekansı 0.25π
EDU» f=fft(y);                                     fourier dönüşümünü al
EDU» r=real(f);                                               fourier dönüşümünün gerçek kısmı
EDU» subplot(2,2,1)
EDU» stem(abs(f))                                         
EDU» title('filtrenin genlik yanıtı')
EDU» subplot(2,2,3)
EDU» stem(angle(f))
EDU» title('filtrenin faz yanıtı')
EDU» subplot(2,2,2)
EDU» stem(abs(r))
EDU» title('fourier dönüşümünün gerçek kısmı alınmış filtrenin genlik yanıtı')
EDU» subplot(2,2,4)
EDU» stem(angle(r))
EDU» title('fourier dönüşümünün gerçek kısmı alınmış filtrenin faz yanıtı')
 
 
 
 
blackman filtresinin fourier dönüşümü karmaşık bir ifade olduğundan gerçek kısmı alındığında şekilde görüldüğü gibi faz yanıtı değişmiştir. Faz yanıtı sadece 0 ve π değerlerini almaktadır.
 
 
Örnek 6
 
Fourier dönüşümü alınan bir işaretin ters fourier dönüşümü
 
EDU» t=0:1000;                                             % 0 1000 arasında tanımlı
EDU» x=sin(2*pi*0.01*t);                              % sinüs işareti
EDU» plot(x)                                     
EDU» subplot(3,1,1)
EDU» plot(x)
EDU» title('sinüs işareti')
EDU» f=fft(x);                                     % fourier dönüşümü
EDU» a=ifft(f);                                    % yeniden ters fourier dönüşümü
EDU» subplot(3,1,2)
EDU» plot(a)
EDU» title('fourieri alınmış sinüs işaretinin ters fourieri')
EDU» r=real(a);                                              %yeniden orijinal işareti elde etmek için
EDU» subplot(3,1,3)
EDU» plot(r)
EDU» title(' ters fourier in gerçek kısmı')
 
 
 
bir işaret’in ifft ile ters fourier’i alınınca işaret zamanda çizdirilmek istenirse önce real komutu kullanılarak gerçek kısmı alınmalıdır.
 
 
Örnek 7
 
EDU» n=-10:10;                                 %-10,10 arasında tanımlı
EDU» x=n.*0;                                     % x’in tüm değerleri sıfır
EDU» for i=1:length(n)
if(n(i)==0)x(i)=1;                                 %x’in sıfır anındaki değeri 1
elseif(n(i)==1)x(i)=-1;              %x’in bir anındaki değeri -1
elseif(n(i)==2)x(i)=1;               %x’in iki anındaki değeri 1
elseif(n(i)==3)x(i)=2;               %x’in üç anındaki değeri 2
end
end
EDU» subplot(2,1,1)
EDU» stem(x)                                     % x’i çiz
EDU» title('orjinal işaret')
EDU» f=fft(x)                                      % x’in fourier dönüşümü
f =
  Columns 1 through 4
   3.0000            -2.3671 + 1.4961i   0.7729 - 2.1867i   1.0245 + 1.6708i
  Columns 5 through 8
  -2.2002 - 0.1464i   2.2760 - 1.7052i  -1.3460 + 3.0796i        0 - 3.4641i
  Columns 9 through 12
   1.0102 + 2.8851i  -1.1784 - 1.8639i   0.5082 + 1.1076i   0.5082 - 1.1076i
  Columns 13 through 16
  -1.1784 + 1.8639i   1.0102 - 2.8851i   0.0000 + 3.4641i  -1.3460 - 3.0796i
  Columns 17 through 20
   2.2760 + 1.7052i  -2.2002 + 0.1464i   1.0245 - 1.6708i   0.7729 + 2.1867i
  Column 21
  -2.3671 - 1.4961i
EDU» r=real(f)                        %fourier dönüşümünün gerçek kısmı
r =
  Columns 1 through 7
    3.0000   -2.3671    0.7729    1.0245   -2.2002    2.2760   -1.3460
  Columns 8 through 14
         0    1.0102   -1.1784    0.5082    0.5082   -1.1784    1.0102
  Columns 15 through 21
    0.0000   -1.3460    2.2760   -2.2002    1.0245    0.7729   -2.3671
EDU» y=real(ifft(r));                            %ters fourier’i
EDU» subplot(2,1,2)
EDU» stem(y)
EDU» title('fourierinin gerçek kısmı alınmış işaret')
 
 
 
 
 
 
 
Örnek 8
 
EDU» n=-10:10;                                 %-10:10 arasında tanımlı
EDU» x=n.*0;
EDU» for i=1:length(n)
if(n(i)==0)x(i)=1;                                 %birim dürtü işareti
end
end
EDU» subplot(2,2,1)              
EDU» stem(x)                                     %birim dürtü işaretini çiz
EDU» title('birim dürtü işareti')
EDU» f=fft(x);
EDU» subplot(2,2,3)
EDU» stem(abs(f))                               %birim dürtü işaretin genlik spektrumunu çiz
EDU» title('birim dürtü işaretin genlik spektrumu')
EDU» r=real(f);                                   %fourierin gerçek kısmı
EDU» subplot(2,2,4)
EDU» stem(abs(r))                              %gerçek kısmın genlik spektrumu
EDU» title('fourierin gerçek kısmı alınmış işaret')
EDU» subplot(2,2,2)
EDU» stem(real(ifft(r)))                       %ters fourier alarak çiz
EDU» title('fourierin gerçek kısmı alınmış işaretin genlik spektrumu')
 
Örnek 9
 
 
EDU» x=[1  -5  -8  1  -3  -4]                         
x =
     1    -5    -8     1    -3    -4
EDU» y=exp(x)+sqrt(x)                                  % y=ex+
y =
  Columns 1 through 4
   3.7183             0.0067 + 2.2361i   0.0003 + 2.8284i   3.7183         
  Columns 5 through 6
   0.0498 + 1.7321i   0.0183 + 2.0000i
 
EDU» real(y)                                                  %y’nin sadece gerçek kısmı
ans =
    3.7183    0.0067    0.0003    3.7183    0.0498    0.0183
EDU» imag(y)                                                 %y’nin sadece imajiner kısmı
ans =
         0    2.2361    2.8284         0    1.7321    2.0000
 
Örnek 10
 
EDU» x=[1+1i  2+2i  3+3i  4+4i
        4+2i  -2-2i  1-4i -2
            2i     -3   -4i    0]
x =
   1.0000 + 1.0000i   2.0000 + 2.0000i   3.0000 + 3.0000i   4.0000 + 4.0000i
   4.0000 + 2.0000i  -2.0000 - 2.0000i   1.0000 - 4.0000i  -2.0000         
        0 + 2.0000i  -3.0000                  0 - 4.0000i        0         
 
EDU» y=3.*x+sqrt(x)-x                                              %y=3x+-x            
y =
   3.0987 + 2.4551i   5.5538 + 4.6436i   7.9030 + 6.7882i  10.1974 + 8.9102i
  10.0582 + 4.4859i  -3.3564 - 5.5538i   3.6005 - 9.2496i  -4.0000 - 1.4142i
   1.0000 + 5.0000i  -6.0000 - 1.7321i   1.4142 - 9.4142i        0         
 
EDU» r=y-j*imag(y)                                                   % y’den imajiner kısmı çıkartıyoruz
r =
    3.0987    5.5538    7.9030   10.1974
   10.0582   -3.3564    3.6005   -4.0000
    1.0000   -6.0000    1.4142         0
 
EDU» real(y)                                                              % y’nin gerçek kısmı üstteki ifadeyle aynı
ans =
    3.0987    5.5538    7.9030   10.1974
   10.0582   -3.3564    3.6005   -4.0000
    1.0000   -6.0000    1.4142         0
 
Örnek 11
 
EDU» x=fir1(50,0.2,hamming(51));
EDU» fx=fft(x);
EDU» ax=abs(fx);
EDU» subplot(3,2,5)
EDU» plot(ax,'k')
EDU» title('hamming süzgeci genlik yanıtı')
EDU» t = 0:0.001:0.6;
EDU» y = sin(2*pi*100*t) + sin(2*pi*500*t)+sin(2*pi*750*t) + sin(2*pi*1000*t)+sin(2*pi*2500*t) + sin(2*pi*1200*t);
EDU» fy=fft(y);
EDU» ay=abs(fy);
EDU» subplot(3,2,3)
EDU» plot(y,'k')
EDU» subplot(3,2,1)
EDU» plot(y,'k')
EDU» title('farklı frekansta 6 sinüs toplamı')
EDU» subplot(3,2,3)
EDU» plot(ay,'k')
EDU» title('sinüslerin genlik spektrumu')
EDU» c=conv(x,y);
EDU» subplot(3,2,2)
EDU» plot(c)
EDU» fc=fft(c);
EDU» ac=abs(fc);
EDU» subplot(3,2,4)
EDU» plot(ac)
EDU» title('tek sinüsün genlik spektrumu')
EDU» subplot(3,2,2)
EDU» title('süzgeç çıkışı tek sinüs');
 
Örnek 12
 
 
EDU» t=0:1:100;                                 %0 ile 100 arasında tanımlı
EDU» x=t.*0;                                     % x’in tüm değerlerini sıfırla
EDU» for i=1:length(t)
if(t(i)<25)x(i)=2;                                  % 25’ten küçükse x’in değeri 2
else x(i)=0;
end
end
EDU» subplot(2,2,1)
EDU» plot(x)                                      %çiz
EDU» title('tek darbe')
EDU» fx=fft(x);                                   %fourier dönüşümünü al
EDU» ax=abs(fx);                               %genlik spektrumu
EDU» subplot(2,2,2)
EDU» plot(ax)
EDU» title('genlik spektrumu (sinc)')
EDU» subplot(2,2,3)
EDU» plot(ax)
EDU» title('genlik spektrumu (sinc)')
EDU» y=fir1(20,0.2,hamming(21));                 %hamming filtresi 20.dereceden
EDU» c=conv(x,y);                                         %darbeyi süzgeçle (konvolüsyon)
EDU» fc=fft(c);                                               %süzgeç çıkışının fourier’i
EDU» ac=abs(fc);                                           %genlik spektrumu
EDU» subplot(2,2,4)
EDU» plot(ac)
EDU» title('süzgeçlenmiş darbenin genlik spektrumu')
EDU» subplot(2,2,2)
EDU» plot(c)
EDU» title('süzgeçlenmiş darbe')
********************************************************************
ROOTS
 
Bir polinomun köklerini MATLAB’ ta bulmak için kullanılan fonksiyonlardandır. Genel kullanım biçimi
 
           r = roots ( p ) 
 
olarak verilir.
 
buradaki  p ; polinomu ,  r ise onun köklerini ifade eder.
 
 
MATLAB’ ta aşağıdaki komut girildiğinde
 
>> help roots
 
 ROOTS  Find polynomial roots.
    ROOTS(C) computes the roots of the polynomial whose coefficients
    are the elements of the vector C. If C has N+1 components,
    the polynomial is C(1)*X^N + ... + C(N)*X + C(N+1).
 
    See also POLY, RESIDUE, FZERO.
 
 
 
ROOTS  Polinom köklerini bulma
 
ROOTS (C) C vektörünün elemanları olan katsayıların polinom köklerini hesaplar. Eğer C N+1 bileşen içeriyorsa, polinom C(1)*X^N + ... + C(N)*X + C(N+1) ‘dir.
 
POLY, RESIDUE, FZERO  fonksiyonlarına da bakınız.
 
 
ÖRNEKLER
 
1 )     p (x) = 5x3 + 3x2+2x+1    polinomu verilsin. Bu polinomun köklerini MATLAB ile bulalım.
 
Çözüm :
 
>> p = [ 5 3 2 1 ] ;
>> r = roots(p)
 
r =
 
  -0.0288 + 0.6066i
  -0.0288 - 0.6066i
  -0.5424         
 
 
3.dereceden denklemin 3 adet kökü olan  x1 = -0.0288 + 0.6066i 
                                                                   x2 = -0.0288 - 0.6066i  , ve
                                                                   x3 =   -0.5424     karşımıza çıkar.    
 
 
2 )   p(x) = 2x5 - 3x3+51x-241    polinomu verilsin. Bu polinomun köklerini MATLAB ile bulalım.
 
Çözüm :
 
>> p = [2 0 -3 0 51 -241 ] ;
 
>> r = roots(p)
 
r =
 
  -2.2949 + 1.7063i
  -2.2949 - 1.7063i
   1.0936 + 2.2220i
   1.0936 - 2.2220i
   2.4025
 
 
3 )  Aşağıda verilen  sabit katsayılı diferansiyel denklemin katsayılarının köklerini bulalım.
 
 
4   d3 y   +  d2y  +  7 dy  + 3y  =  15 x ( t )
     dt3         dt2          dt
 
Çözüm :
 
>> a= [4 1 7 3] ;
>> p=roots(a)
 
p =
 
   0.0814 + 1.3456i
   0.0814 - 1.3456i
  -0.4127
 
4 )  Bir sabit katsayılı fark denkleminin ( SKFD ) katsayıları daha önce roots fonksiyonu ile  bulunmuştur. Bu denklemin katsayılarını bulalım
 
a = [3.9393 , -0.2363 + 0.8600i  , -0.2363 - 0.8600i]    x : Sistem girişi
 
b = [1.0928 + 0.3883i  , 1.0928 -  0.3883i  , -0.5056]    y : Sistem çıkışı
 
 
 
 
Çözüm :
 
>> a = [3.9393 , -0.2363 + 0.8600i  , -0.2363 - 0.8600i] ;
>> x= poly (a)
 
x =
 
    1.0000   -3.4667   -1.0663   -3.1335
 
>> b = [1.0928 + 0.3883i  , 1.0928 -  0.3883i  , -0.5056] ;  
>> y= poly (b)
 
y =
 
    1.0000   -1.6800    0.2399    0.6800
 
Demek ki SKFD :
 
y[n] – 1.68 y[n-1] + 0.2399 y[n-2] + 0.68 y[n-3] = x[n] –3.4667 x[n-1] – 1.0663 x[n-2] – 3.1335 x[n-3]  olur.
 
 
 
5 )  X(z) = 0.18 + 0.2 z-1 + 0.2 z-2 + 0.18 z-3     için kutup-sıfır grafiğini MATLAB ile
1 - 0.87 z-1 + 0.92 z-2 – 0.26z-3
çizdirelim.
 
Çözüm :
 
>> a= [ 1 -0.87 0.92 -0.26];     paydanın katsayıları
>> b= [ 0.18 0.2 0.2 0.18 ];      payın katsayıları
>> [z,p,k]= tf2zp(b,a)           X(z) transfer fonksiyonunu sıfır-kutup gösterimine çevir
 
z =  sıfırlar
 
  -1.0000         
  -0.0556 + 0.9985i
  -0.0556 - 0.9985i
 
 
p = kutuplar
 
   0.2587 + 0.8189i
   0.2587 - 0.8189i
   0.3525         
 
 
k = 0.1800 katsayı
 
>> zplane (z,p)                          kutup-sıfır grafiğini çizdir.
 
 
 
Şekil 1 . Program 5 için kutup-sıfır grafiği
 
Sıfır ve kutuplar aşağıdaki gibi de bulunabilir.
 
>> b= [ 0.18 0.2 0.2 0.18 ];
>> z=roots(b)
 
z =
 
  -1.0000         
  -0.0556 + 0.9985i
  -0.0556 - 0.9985i
 
>> a= [ 1 -0.87 0.92 -0.26];
>> p=roots(a)
 
p =
 
   0.2587 + 0.8189i
   0.2587 - 0.8189i
   0.3525         
 
 
 
 
 
 
6 )  X(z) =        1 – 0.64 z-2             için kutup-sıfır grafiğini çizdirelim .
1 - 0.2 z-1 – 0.08 z-2  
 
 
Çözüm :
 
>> b= [ 1    0  -0.64] ;         payın katsayıları
>> a= [ 1 -0.2  -0.08];        paydanın katsayıları
>> [z,p,k] = tf2zp(b,a)       X(z) transfer fonksiyonunu sıfır-kutup gösterimine çevir
 
z =
 
    0.8000
   -0.8000
 
 
p =
 
    0.4000
   -0.2000
 
 
k =
 
     1
 
>> zplane (z,p)                     kutup-sıfır grafiğini çizdir.
 
Sıfır ve kutuplar aşağıdaki gibi de bulunabilir.
 
>> z=roots(b)
 
z =
 
    0.8000
   -0.8000
 
>> p=roots(a)
 
p =
 
    0.4000
   -0.2000
 
 
 
 
 
 
 
 
Şekil 2 . Program 6 için kutup-sıfır grafiği
 
7 )  6. örnekteki ifadenin kısmi kesirlere açılımını MATLAB ile bulalım.
 
>> b= [ 1 0 -0.64] ;                payın katsayıları
>> a= [ 1 -0.2 -0.08];             paydanın katsayıları
>> [r,p,k] = residuez(b,a)     X(z)’ i  kısmi kesirlere aç 
 
r =  kalıntı vektörü ( rezidü )
 
    -2
    -5
 
 
p =  kutuplar
 
    0.4000
   -0.2000
 
 
k =  bölen katsayıları
 
     8   
 
 
 
 
Program çıktıları doğrultusunda X(z)’nin kısmi kesirlere açılımı
 
X(z) = k0  + r0 / (1- p0 z-1) + r1 / (1 –p1 z-1 ) = 8 + [ -2 / 1-0.4z-1] + [-5 / 1+0.2z-1] elde edilir.
 
 
8 )  MATLAB kullanarak sıfır ve kutuplarını roots fonksiyonu ile belirlediğimiz bir sistemin frekans yanıtını bulalım.
 
 
Çözüm :
 
>> p=[0.5 ; 0.45+0.5i ; 0.45-0.5i ];     3 adet kutbun konumunu tanımla
>> z=[-1 ; i ; -i] ;                                 3 adet sıfırın konumunu tanımla
>> zplane(z,p)                                     sıfır-kutup grafiğin çizdir
>> [num,den]=zp2tf (z,p,k)                 sıfır-kutup bilgilerini transfer fonksiyonu şekline çevir
 
num =
 
     8     8     8     8
 
 
den =
 
    1.0000   -1.4000    0.9025   -0.2263
 
>> [h,w]= freqz(num,den);                       transfer fonksiyonundan frekans yanıtını elde et
>> subplot(2,1,1);                                     2 grafikten ilkini al
>> plot(w,abs(h));                                    genlik yanıtını çizdir
>> title('midX(e^j^Omega)mid')     
>> subplot(2,1,2);                                     2 grafikten ikincisini al
>> plot(w,angle(h));                                 faz yanıtını çizdir
>> title('ARG(X(e^j^Omega))')
 
 
 
Şekil. 3  Program 8 için sıfır-kutup grafiği
 
 
Şekil. 4  Program 8 için frekans yanıtı genlik ve faz grafikleri
 
 9 )  Bir sistemin giriş ve çıkış fonksiyonları verilmiş ise sıfır-kutup grafiğini çizdirerek sistemin kararlı olup olmadığını MATLAB ile anlama :
 
 >> b= [1  0.2  -0.5 1.16];                      sistem çıkış fonksiyonu (y(n)) katsayıları
>> a= [1 - 1.6500 0.7025 -0.6649];       sistem giriş fonksiyonu (x(n)) katsayıları
 
>> p=roots(a)                                          sistem kutupları
 
p =
 
   0.5404 + 0.8549i
   0.5404 - 0.8549i
 
>> z=roots(b)                                           sistem sıfırları
 
z =
 
  -1.2878         
   0.5439 + 0.7778i
   0.5439 - 0.7778i
 
>> zplane(z,p)                                         sıfır-kutup gösterimini çizdir.
 
 
Şekil . 5    Program 9 için sıfır-kutup grafiği
 
Açıklama :    Sistem kutuplarının ikisi de birim çember içerisinde yer aldığından verilen sistem kararlı olmaktadır.
 
10 )  Aşağıdaki program ; bir ses dosyasının okunması MATLAB ile okunması ve roots fonksiyonu ile değerlerini belirlediğimiz bir dürtü yanıtı ile konvüle edildiğindeki genlik ve faz yanıtlarını göstermektedir.
 
 
>> a=[ 1.0000   -0.6236    0.1104   -0.0068    0.0001   -0.0000];         dürtü yanıtı katsayıları
>> h=roots(a)
 
h =
 
         0
    0.3764
    0.1267
    0.0993
    0.0211
 
>> [y,fs,n] = wavread('orhan veli10.wav');           ses dosyasını oku
>> c=conv(y,h);                                                     ses işareti ile dürtü yanıtını konvüle et
>> subplot(2,2,1); 
>> plot(y);                                                             ses işaretini çizdir.
>> subplot(2,2,2);
>> plot(h);                                                            dürtü yanıtını çizdir
 
>> spec=fft(y);                                   ses işaretinin spektrumu için hızlı fourier dönüşümünü al
>> mag=abs(spec);                            spektrum genlik yanıtı
>> ph=angle(spec);                            spektrum faz yanıtı
>> subplot(2,2,3);
>> plot(mag);                                     genlik yanıtını çizdir
>> subplot(2,2,4);
>> plot(ph);                                        faz yanıtını çizdir.
 
SAAT  
 



 
haberler  
   
Tarihte Bugun  
   
TAKIMLARDAN SPOR HABERLERİ  
   
sitemizde nekadar kaldınız  
 

 
Bugün 16 ziyaretçi (25 klik) kişi burdaydı!
Bu web sitesi ücretsiz olarak Bedava-Sitem.com ile oluşturulmuştur. Siz de kendi web sitenizi kurmak ister misiniz?
Ücretsiz kaydol