210 likes | 626 Views
SAYISAL İŞARET İŞLEME DERSİ PROJE SUNUMU KONU: DISCRETE FOURIER TRANSFORM ÖĞRENCİ ADI : İSMAİL EMRE KARTOĞLU ÖĞRENCİ NO : 0705.02043 İSTANBUL TİCARET ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ. FOURIER DÖNÜŞÜMLERİ HAKKINDA KISA BİLGİ.
E N D
SAYISAL İŞARET İŞLEME DERSİ PROJE SUNUMU KONU: DISCRETE FOURIER TRANSFORM ÖĞRENCİ ADI : İSMAİL EMRE KARTOĞLU ÖĞRENCİ NO : 0705.02043 İSTANBUL TİCARET ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ
FOURIER DÖNÜŞÜMLERİ HAKKINDA KISA BİLGİ Fourier dönüşümü, zaman düzlemi ile frekans düzlemi arasındaki geçişi sağlayan matematiksel bir operasyondur. Fourier dönüşümünün kullanıldığı alanlardan bazıları şunlardır: Frekans filitreleri, dalga hareketleri, ses işleme, görüntü işleme, optik... Fourier dönüşümü sürekli zamanda ve ayrık zamanda olmak üzere iki grupta incelenebilir. Ayrık zamanda fourier dönüşümünü gerçekleştirmek için en bilinen 2 yöntem şunlardır: DFT -> Discrete Fourier Transform FFT -> Fast Fourier Transform FFT ile DFT aynı işleri yapar. FFT, DFT’nin optimize edilmesi ile ortaya çıkmıştır. FFT’nin zaman karmaşıklığı O(n*logn) iken, DFT’nin zaman karmaşıklığı O(n^2) dir. FFT ve DFT, toplama, çıkarma, çarpma ve bölme operatörlerinin kullanılması ile gerçekleşir. Bu sunumda DFT ele alınacaktır. NOT: Piyasada, bu işlemleri hızlı, donanımsal yollarla yapan özel Digital Signal Processor(DSP) çipler vardır.
FOURIER DÖDÜŞÜMÜ FORMÜLLERİ Real(F) = (1/N) * S(n=0,N-1)[x(n)*cos(2Pi*F*n)]Imag(F) = (1/N) * S(n=0,N-1)[x(n)*sin(2Pi*F*n)]Power(F) = Real(F)*Real(F) + Imag(F)*Imag(F) Equalizer lardaki barların yüksekliği Power formülü ile belirleniyor. Burada Real(F), F frekansında, eğer aynı frekansta bir cosine komponenti var ise, F frekanslı o cosine bileşeninin amplitude değeridir. Imag(F), F frekansında, eğer aynı frekansta bir sine komponenti var ise, F frekanslı o sine bileşeninin amplitude değeridir.
Real(F) = (1/N) * S(n=0,N-1)[x(n)*cos(2Pi*F*n)]Imag(F) = (1/N) * S(n=0,N-1)[x(n)*sin(2Pi*F*n)]Power(F) = Real(F)*Real(F) + Imag(F)*Imag(F) Bu formüller neden işe yarıyor? 1. sin(a)*sin(b)=(1/2)*(cos(a-b)-cos(a+b))2. cos(a)*cos(b)=(1/2)*(cos(a-b)+cos(a+b))3. sin(a)*cos(b)=(1/2)*(sin(a+b)+sin(a-b)) Burada, cos ve sin fonksiyonları zaman serileridir. Bu fonksiyonların çarpımları, başka bir zaman serisini doğurur: 1. f(n) = sin(a*n)*sin(b*n) = (1/2)*(cos((a-b)*n)-cos((a+b)*n)) 2. f(n) = cos(a*n)*cos(b*n) = (1/2)*(cos((a-b)*n)+cos((a+b)*n)) 3. f(n) = sin(a*n)*cos(b*n) = (1/2)*(sin((a+b)*n)+sin((a-b)*n)) Yukarıdaki f(n), sin ve cos fonksiyonlarının çarpımlarından doğan bir zaman serisidir.
Bir önceki slaytta aşağıdaki eşitlikler yer alıyodu: 1. f(n) = sin(a*n)*sin(b*n) = (1/2)*(cos((a-b)*n)-cos((a+b)*n)) 2. f(n) = cos(a*n)*cos(b*n) = (1/2)*(cos((a-b)*n)+cos((a+b)*n)) 3. f(n) = sin(a*n)*cos(b*n) = (1/2)*(sin((a+b)*n)+sin((a-b)*n)) Şimdi, a=b eşitliğinin olduğu özel bir durumu inceleyelim: 1. f(n) = sin(a*n)*sin(a*n) = (1/2)-cos(2*a*n)/22. f(n) = cos(a*n)*cos(a*n) = (1/2)+cos(2*a*n)/23. f(n) = sin(a*n)*cos(a*n) = sin(2*a*n)/2 Bir hatırlatma: Gerçek bir sinusoidin ortalama değeri sıfırdır.
1. f(n) = sin(a*n)*sin(a*n) = (1/2) -cos(2*a*n)/2 KIRMIZI: SIN(X) SİYAH: SIN(X)*SIN(X) Çıkarım: Imag(F) = (1/N) * S(n=0,N-1)[x(n)*sin(2Pi*F*n)] Eğer x(n) zaman serisinin F sine bileşeni var ise yukarıdaki (1/N) * S(n=0,N-1)[x(n)*sin(2Pi*F*n)]işleminin sonucu pozitif bir değer olacaktır. Görüldüğü gibi sin(x)*sin(x) çarpımının oluşturduğu yeni zaman serisinin ortalama değeri sıfırdan farklıdır.
2. f(n) = cos(a*n)*cos(a*n) = (1/2)+cos(2*a*n)/2 KIRMIZI: COS(X) SİYAH: COS(X)*COS(X) Çıkarım: Real(F) = (1/N) * S(n=0,N-1)[x(n)*cos(2Pi*F*n)] Eğer x(n) zaman serisinin F cosine bileşeni var ise yukarıdaki (1/N) * S(n=0,N-1)[x(n)*cos(2Pi*F*n)]işleminin sonucu pozitif bir değer olacaktır. Görüldüğü gibi cos(x)*cos(x) çarpımının oluşturduğu yeni zaman serisinin ortalama değeri sıfırdan farklıdır.
3. f(n) = sin(a*n)*cos(a*n) = sin(2*a*n)/2 KIRMIZI: COS(X) SİYAH: COS(X)*COS(X) YEŞİL: SIN(X) Çıkarım: Real(F) = (1/N) * S(n=0,N-1)[x(n)*cos(2Pi*F*n)]Imag(F) = (1/N) * S(n=0,N-1)[x(n)*sin(2Pi*F*n)]Yukarıdaki eşitliklerde Real(F) kısmı, sadece F frekansında bir cosine bileşeni var ise pozitif bir değer verir. Aynı şekilde, Imag(F) kısmı sadece F frekansında bir sine bileşeni var ise pozitif bir değer verir. Görüldüğü gibi sin(x)*cos(x) çarpımının oluşturduğu yeni zaman serisinin ortalama değeri sıfırdır.
Frekansları farklı olan iki sinusoidin çarpımları durumunu ele alalım : 1. f(n) = sin(a*n)*sin(b*n) = (1/2)*(cos((a-b)*n)-cos((a+b)*n)) 2. f(n) = cos(a*n)*cos(b*n) = (1/2)*(cos((a-b)*n)+cos((a+b)*n)) 3. f(n) = sin(a*n)*cos(b*n) =(1/2)*(sin((a+b)*n)+sin((a-b)*n)) Görüldüğü gibi frekansları farklı iki sinusoidin çarpımları durumunda (a != b) çarpım işleminin sonucu iki adet sinusoidin toplamı ile sonuçlanıyor. İki adet sinusoidin toplamı başka bir sinusoidtir ve bir sinusoidin ortalama değeri sıfırdır. Çıkarım: Real(F) = (1/N) * S(n=0,N-1)[x(n)*cos(2Pi*F*n)]Imag(F) = (1/N) * S(n=0,N-1)[x(n)*sin(2Pi*F*n)] Yukarıdaki formüllerde, sadece ilgili frekans bileşeni (eğer varsa) çarpım sonucu ortalama değeri pozitif olan yeni bir zaman serisi oluşturur.
sin(1.8x)*sin(2.2x) Farklı frekanstaki sine işaretlerinin çarpımı, başka bir sinüsoidal oluşturur. Yeni oluşan bu sinusoidalin ortalama değeri sıfırdır.
cos(1.8x)*cos(2.2x) Farklı frekanstaki cosine işaretlerinin çarpımı, başka bir sinüsoidal oluşturur. Yeni oluşan bu sinusoidalin ortalama değeri sıfırdır.
sin(1.8x)*cos(2.2x) Farklı frekanslardaki sine ve cosine işaretlerinin çarpımı, başka bir sinüsoidal oluşturur. Yeni oluşan bu sinusoidalin ortalama değeri sıfırdır.
JAVA İLE DFT /* * İSMAİL EMRE KARTOĞLU * İSTANBUL TİCARET ÜNİVERSİTESİ */ public class DFT { public static double frekansGucu(byte[] degerler,double f) { double sinToplam=0; double cosToplam=0; for(int i=0; i<degerler.length; i++) { sinToplam += (double)degerler[i]*Math.sin((double)2*Math.PI*f*i); cosToplam += (double)degerler[i]*Math.cos((double)2*Math.PI*f*i); } sinToplam /= degerler.length; cosToplam /=degerler.length; return sinToplam*sinToplam+cosToplam*cosToplam; } } Real(F) = (1/N) * S(n=0,N-1)[x(n)*cos(2Pi*F*n)]Imag(F) = (1/N) * S(n=0,N-1)[x(n)*sin(2Pi*F*n)]Power(F) = Real(F)*Real(F) + Imag(F)*Imag(F)
KAYNAKLAR [1]: http://www.developer.com/java/other/article.php/3374611 [2]: http://en.wikipedia.org/wiki/Fourier_transform