You are on page 1of 27

www.zafercomert.

com
Eğitim: Bilişim: Paylaşım

Fourier Dönüşümü
Matlab Uygulamalı

Zafer CÖMERT
Zafer CÖMERT Dijital Sinyal İşleme
www.zafercomert.com 13.11.2015
Eğitim: Bilişim: Paylaşım

İçindekiler
1. Giriş ...............................................................................................................................................................................................1

2. Fourier Dönüşümü .................................................................................................................................................................3

2.1. Sürekli Zamanlı Fourier Dönüşümü ...............................................................................................................4

2.2. Ayrık Zamanlı Fourier Dönüşümü ...................................................................................................................5

2.2.1. Konvolüsyon Terimi .........................................................................................................................................9

2.2.2. DTFT Öncesi Pencereleme .............................................................................................................................9

3. Hızlı Fourier Dönüşümü .................................................................................................................................................... 12

3.1. Zamanda Örnek Seyreltme .............................................................................................................................. 12

3.2. Frekansta Örnek Seyreltme ............................................................................................................................. 13

4. Matlab ile Fourier Dönüşümü ......................................................................................................................................... 14

4.1. Sinüs sinyali için Hızlı Fourier Dönüşümü ..................................................................................................... 14

4.2. GUI ile Etkileşimli Fourier Dönüşümü ............................................................................................................. 16

Ekler ...................................................................................................................................................................................................... 17

Bir Sinüs Sinyali için Hızlı Fourier Dönüşümü Kaynak Kodları....................................................................... 17

GUI ile Etkileşimli Fourier Dönüşümü ........................................................................................................................ 19

Kaynakça............................................................................................................................................................................................. 24

Belge Geçmişi .................................................................................................................................................................................... 25

I
Zafer CÖMERT Dijital Sinyal İşleme
www.zafercomert.com 13.11.2015
Eğitim: Bilişim: Paylaşım

1. Giriş

Fourier analizi salınım ve titreşim hareketleri gibi periyodik olayları


incelemek için kullanılan periyodik bir fonksiyondur ve bilimin pek çok
alanında yaygın olarak kullanılmaktadır. Çalışmada Fourier analizi ile
birlikte Fourier dönüşümü detaylı olarak incelenmiştir.

Sinyal ya da işaret, zaman, uzay ya da başka bir veya birkaç bağımsız değişken ile değişiklik
gösteren fiziksel nicelik olarak tanımlanabilir. Matematiksel olarak, bir sinyal bir ya da daha fazla
bağımsız değişkenin fonksiyonu olarak tanımlanabilir. Bir başka ifadeyle işaretler, fiziksel bir durum
hakkında bilgi taşıyan, bir veya daha fazla değişkene bağlı fonksiyonlardır.
Doğada basit periyodik olaylar matematiksel olarak sinüs ve kosinüs fonksiyonları ile ifade
edilirler. Örneğin bir sarkacın küçük genlerle salınımı, bir diyapozonun titreşimleri ve buna benzer
fiziksel olayların her biri birer basit periyodik olaydır. Eğer olay saniyede 𝑛 defa tekrarlanıyor ise basit
titreşimleri gösteren fonksiyon bir sinüs ya da kosinüs bileşeni ile gösterilebilir [1]. Ancak doğadaki
pek çok sinyal fonksiyonel bir ifadeyle tanımlanamaz. Genel olarak bir konuşma sinyali için farklı
genlikler ve farklı frekanslarda birkaç sinüzoidal frekansın toplamı olarak aşağıdaki gibi yazılabilir:
𝑁

∑ 𝐴𝑖 (𝑡)sin⁡[2𝜋𝐹𝑖 (𝑡) + ⁡ 𝜃𝑖 (𝑡)]


𝑖=1

Burada:
 𝐴𝑖 (𝑡) : Sinüzoidal dalganın genliği
 𝐹𝑖 (𝑡) : Sinüzoidal dalganın frekansı
 𝜃𝑖 (𝑡) : Sinüzoidal dalganın faz kümesini temsil etmektedir.

İşaretler, ayrık zamanlı ya da sürekli zamanlı olabilirler. Bir başka ifadeyle ayrık-zamanlı
(dijital) ya da sürekli-zamanlı (analog) olarak işlenebilirler.

Frekans Yanıtı

Doğrusal zamanla-değişmez1 bir sistemin çalışması, sistemin dürtü yanıtı veya sabit katsayı
fark denklemi (SKFD) gösterimi ile tanımlanabilmektedir. Her ikisinde de sistemin tanımı sistemin
çıkış işareti örnek değerlerinin giriş işareti örnek değerlerinden bulunması prensibine dayanmaktadır.
Sistemin dürtü yanıtı ve frekansa bağlı 𝐻(𝑒 𝑗Ω ) katsayısı aşağıdaki gibi tanımlanmaktadır.

𝐻(𝑒 𝑗Ω ) = ⁡ ∑ ℎ[𝑘]𝑒 −𝑗Ω𝑘


𝑘=−∞

1 Linear Time Invariant Systems (LTI)


1
Zafer CÖMERT Dijital Sinyal İşleme
www.zafercomert.com 13.11.2015
Eğitim: Bilişim: Paylaşım

Karmaşık üstel 𝐻(𝑒 𝑗Ω ) katsayısı giriş işaretinin frekansına bağlı olarak, sistemin 𝑒 𝑗Ω işaretinin
genliği ve fazında neden olduğu değişikliği göstermektedir. Bu nedenle 𝐻(𝑒 𝑗Ω ) sistemin frekans yanıtı
olarak ifade edilmektedir.
Alternatif bir gösterim için genlik ve faz bileşenleri kullanılarak frekans yanıtı aşağıdaki gibi
ifade edilir.
𝑗Ω )
𝐻(𝑒 𝑗Ω ) = |𝐻(𝑒 𝑗Ω )|𝑒 𝑗∠𝐻(𝑒
Frekans yanıtı, sistemlerin çalışma prensiplerinin belirlenmesi için alternatif bir tanımlama
sağlamaktadır. Ayrık-zamanlı bir sistemin çalışmasını frekans uzayında karakterize eden frekans
yanıtı, frekans bileşenlerine göre oluşan sistem davranışını sergilemektedir. Bazı durumlarda bir
sistemin işlevinin anlaşılmasında sistemin frekans yanıtı, sistemin dürtü yanıtından veya sistemin fark
denklemi gösteriminde çok daha faydalı olmaktadır.
Bir doğrusal zamanla-değişmez sisteme giriş olarak karmaşık üstel işaret uygulandığı
takdirde, sistem çıkışı karmaşık üstel işaret ile frekans yanıtının çarpımından oluşacaktır.

2
Zafer CÖMERT Dijital Sinyal İşleme
www.zafercomert.com 13.11.2015
Eğitim: Bilişim: Paylaşım

2. Fourier Dönüşümü
Fourier dönüşüm yöntemi sinyalin içindeki bilgilerin elde edilebilmesi için, sinyallerin
işlenmesinde kullanılan çok önemli bir yöntemdir. Bu bilgiler, Fourier dönüşümü ile yeniden
kullanılmaya uygun bir veri formatına çevrilir. Fourier dönüşümüyle bir sinyal, farklı genlik, frekans ve
fazlarda kosinüs ve sinüs temel bileşenlerinin toplamı olarak ifade edilir. Her bileşenin frekans ve
genliği ile birlikte tablolaşması, bilgisayarla verilerin işlenmesi sırasında kolaylık sağlar.
Fourier dönüşümünü açıklamak için bir benzetim yapıldığında: hesaplama dinlemeye
benzetilebilir. Dinleme için kulak, otomatik olarak dönüşümü hesaplayacaktır ancak beynin
hesaplamayı yapabilmesi için yıllar süren matematik eğitimi gereklidir. Kulak sesi frekans tayfına
(farklı perdelerdeki ses miktarları) çevirerek dönüşümü gerçekleştirir. Beyin bu bilgiyi algılanmış sese
çevirir [2]. Benzer şekilde Fourier dönüşümü, her frekansa ait sinüs dalgası için genlik ve evre
hesaplayan bir fonksiyon olarak düşünülmelidir.
Fourier analizi bir takım anormal durumlar için uygulanamaz. Örneğin, sınırlı bir bölgede
sonsuz sayıda sıçrama yapan bir fonksiyona uygulanamaz. Ancak bir fiziksel büyüklüğün
ölçülmesinden oluşan tüm fonksiyonlar için Fourier serisi yakınsayacaktır. Fourier analizi uzaydaki
veya zamandaki bir fonksiyonu frekans, genlik ve evresi değişen sinüzoidal elemanlara indirger.
Fourier dönüşümü her frekanstaki genlik ve evreyi gösteren bir fonksiyondur. Dönüşüm iki
matematiksel metotla hesaplanır; birincisi fonksiyon sürekli ise ikincisi ise fonksiyon kesikliyse (ayrık
ise) uygulanır.
Eğer fonksiyon kesikliyse, yani fonksiyon kesikli zaman aralıklarına ait değerlerden
oluşuyorsa, ayrık frekanslardaki sinüzoidal fonksiyonların serisi şeklinde gösterilebilir. Bu frekanslar
asıl frekansın iki, üç ve daha büyük katlarıdır. Bu şekildeki sinüslerin toplamına Fourier serisi denir.
Eğer fonksiyon sürekliyse, yani her gerçek sayı için tanımlı bir değeri varsa bu fonksiyon tüm
frekanslardaki sinüslerin Fourier integraline indirgenebilir. Fourier dönüşümü ne seri ne de integral
değildir. Kesikli fonksiyonlarda, Fourier serisini oluşturan evrelerin ayrık frekanslara bağlı listesidir,
sürekli fonksiyonlarda ise Fourier integralinin alınmasından ortaya çıkan frekansa bağlı bir
fonksiyondur.
Dönüşüm hangi yöntemle hesaplanırsa hesaplansın, her frekansta iki sayının hesaplanması
gerekir. Bu iki sayı genlik ve evre(faz) olabilir veya aynı bilgiyi içeren farklı iki sayı da olabilir. Bu iki
sayı, bir karmaşık sayı ile gösterilebilir. Bu gösterim yaygın olarak kullanılır, çünkü karmaşık cebir
işlemlerine olanak sağlar. Karmaşık cebir kuramı ve Fourier dönüşümü, elektrik devresi tasarımında,
mekanik titreşim analizi ve dalga yayılımı çalışmalarında yapılan sayısal hesaplamalarında ayrılmaz
bir bütün oluştururlar.
Ne kadar aritmetik işlem yapılacağı fonksiyonu gösteren noktaların sayısına bağlıdır. Toplama
işleminin sayısı nokta sayısına, çarpma işleminin sayısı ise nokta sayısının karesine yakındır. Örneğin

3
Zafer CÖMERT Dijital Sinyal İşleme
www.zafercomert.com 13.11.2015
Eğitim: Bilişim: Paylaşım

1,000 düzenli aralıkla alınmış noktadan oluşan bir dalganın analizi için yaklaşık 1,000 toplama ve bir
milyon çarpma işlemi gereklidir.
Bilgisayarlar ve programlar geliştikçe Fourier analizi için yeni yöntemler ortaya çıkmıştır ve
hesaplar çok kolaylaşmıştır. Yapılan bu çalışmalar "Hızlı Fourier Dönüşümü2 (FFT)" diye bilinen
programın ortaya çıkmasını sağlamıştır. Hızlı Fourier dönüşümü çarpmaların sayısını azaltarak
zamandan kazanmaktadır. Hızlı Fourier dönüşümü, eğri üzerinde eşit aralıklarla çok sayıda örnek alır.
Örnek sayısı yarıya düşürülürse analiz için gereken çarpma sayısı da yarıya düşer. Örneğin, 16
örnekten oluşan eğri için 16’nın karesi yani 256 çarpma gerekecektir. Eğer eğriyi 2 tane 8 sekiz
örnekten oluşan parçaya ayırırsak, her parça için 8’in karesi yani 64 çarpma gerekecektir. İki parça için
toplam 128 çarpma olacaktır ki bu da önceki durumun yarısına eşittir.
Fourier ile ilgili bazı özellikler:
 Genelleme yapıldığında Fourier dönüşümü düzensiz değişim gösteren durumlarla ilgilenen
bütün alanlarda kullanılabilir.
 Sinyaller genellikle zaman fonksiyonu olarak gösterilir. Birçok durum için sinyal hakkındaki
bilgi frekans tanım aralığında ifade edilir.
 Fourier analizi yardımıyla bir sinyal zaman alanından frekans alanına aktarılır.
 Fourier dönüşümü bir sinyalin içerdiği frekansı gösterir fakat hangi zaman değerlerinde hangi
frekansların mevcut olduğu bilgisini vermez. Doğal olarak zamana göre değişmeyen
sinyallerin dönüşümünde oldukça başarılıdır.
 Geçici durum analizlerinde ise istenilen neticeyi verememektedir. Bu nedenle Kısa Zaman
Fourier Dönüşümleri3 (STFT) kullanılmaktadır. Yani Fourier dönüşümleri belirli bir zaman
çerçevesi içerisinde kullanılmaktadır. Bu durum frekans değerleri için sorun teşkil etmektedir.
Sonuç olarak bu metot ile frekansın göründüğü zaman dilimi tespit edilemez. Sadece ilgili
zaman aralığındaki frekans bileşenleri tespit edilebilir.
 Matlab’da ise Fourier dönüşümü için fft() fonksiyonu, ters Fourier dönüşümü içinse
iff() komutu kullanılmaktadır.

2.1. Sürekli Zamanlı Fourier Dönüşümü

Fourier dönüşümü, sürekli ve ayrık olarak ikiye ayrılabilir. İki dönüşüm de bir nesneyi
ortogonal iki uzay arasında eşler. Sürekli nesneler için dönüşüm:

1
𝐹(𝑘) = ⁡ ⁡∫ 𝑓(𝑥)𝑒 −𝑖𝑘𝑥 𝑑𝑥
√2𝜋 −∞

1
𝑓(𝑥) = ⁡ ∫ 𝐹(𝑘)𝑒 𝑖𝑘𝑥 𝑑𝑘
√2𝜋 −∞

𝑋(𝑒 𝑗𝑤 ) = ⁡ ∫ 𝑋𝑐 (𝑡)𝑒 −𝑗𝑤𝑡 𝑑𝑡
−∞

2 Fast Fourier Transform


3 Short Time Fourier Transform (STFT)
4
Zafer CÖMERT Dijital Sinyal İşleme
www.zafercomert.com 13.11.2015
Eğitim: Bilişim: Paylaşım

Burada Sürekli Zamanlı Fourier Dönüşümü4 (CTFT) görülmektedir.

2.2. Ayrık Zamanlı Fourier Dönüşümü

Bir ayrık-zaman işaretinin Ayrık-Zamanlı Fourier Dönüşümü5 (DTFT) aşağıdaki denklemle


ifade edilebilir:

𝑗Ω )
𝑋(𝑒 = ⁡ ∑ 𝑥[𝑛] 𝑒 −𝑗Ω
𝑛=−∞

Bu denklemde Ayrık Zamanlı Fourier Dönüşümü göstermektedir. MATLAB’ da kullanılan


dönüşüm ise hem zamanda hem de frekansta ayrık olduğu için fft ve ifft komutları
kullanılmaktadır.

Fourier dönüşüm hesaplamaları maalesef çok masraflı hesaplamalardır. Hızlı


Fourier dönüşümü tekniği, bir yandan hesaplamalar sürerken, bir yaklaşım
olarak ilk elde edilen değerlerin kullanıma sunulduğu bir alternatif yazılım
tekniğidir.

Ayrık zamanlı Fourier dönüşümü, bir ayrık-zaman işaretinin farklı frekanslardaki karmaşık
üstel işaret bileşenlerini vermektedir. Fourier dönüşümü bazen Fourier spektrumu, Frekans
spektrumu veya sadece Spektrum olarak ifade edilmektedir. Ayrık zamanlı Fourier Dönüşümü, ayrık-
zaman işareti sürekli frekans bileşenlerine ayrıştırmaktadır. Bu nedenle bir ayrık-zamanlı işaretin
ayrık zamanlı Fourier dönüşümü frekansa bağlı sürekli bir fonksiyondur.
Ayrık-zaman karmaşık üstel işaretlerin özelliklerinden dolayı 2𝜋 periyodu ile periyodiktir.

𝑗Ω )
𝑋(𝑒 = ∑ 𝑥[𝑛]𝑒 −𝑗Ω𝑛
𝑛=−∞

Ters ayrık-zamanlı Fourier dönüşümü


𝜋
1
𝑥[𝑛] = ⁡ ⁡∫ 𝑋(𝑒 𝑗Ω ) 𝑒 𝑗Ω 𝑑Ω
2𝜋 −𝜋
Bir işaretin Fourier spektrumu, genlik ve faz kısımları ile aşağıdaki gibi gösterilmektedir.
𝑗Ω )
𝑋(𝑒 𝑗Ω ) = ⁡ |𝑋(𝑒 𝑗Ω )|𝑒 𝑗∠𝑋(𝑒
Fourier dönüşümünün genliği |𝑋(𝑒 𝑗Ω )| genlik spektrumunu, fazı ∠𝑋(𝑒 𝑗Ω ) faz spektrumu
olarak adlandırılmaktadır.
Bir işaretin Fourier dönüşümünün alınabilmesi için mutlak toplanabilir olması yeterli olmakla
birlikte, işaretin mutlak toplanabilir olması şart değildir. Fourier dönüşümünün alınabilmesi için
önemli olan Fourier dönüşüm toplamının yakınsaması olduğundan, mutlak toplanabilir olmayan bazı
işaretler için de Fourier dönüşümü alınabilmektedir. Örneğin, bazı diziler mutlak toplanabilir olmadığı
halde karesel toplanabilirdir ve bu diziler için de Fourier dönüşümü bulunabilmektedir.

4 Continuous-Time Fourier Transform (CTFT)


5 Discrete-Time Fourier Transform (DTFT)
5
Zafer CÖMERT Dijital Sinyal İşleme
www.zafercomert.com 13.11.2015
Eğitim: Bilişim: Paylaşım

Sınırlı-giriş, sınırlı-çıkış anlamında kararlı sistemlerin dürtü yanıtlarının tanım itibari ile
mutlak toplanabilir olmasından dolayı kararlı sistemlerin mutlak sonlu ve sürekli bir frekans yanıtının
olması önemli bir noktadır.

Bir ayrık-zamanlı işaretin Fourier dönüşümü işaretin frekans spektrumunu


vermektedir. Bir işaretin frekans spektrumundan işarette hangi frekans
bileşenlerinin yoğunlukta olduğu anlaşılabilmektedir. Bir ayrık-zamanlı
sistemin dürtü yanıtının Fourier dönüşümü ise sistemin frekans yanıtını
vermektedir. Bir sistemin frekans yanıtından sistemin frekanslara göre
gösterdiği davranış anlaşılabilmektedir.

𝑥[𝑛] gerçek bir ayrık-zamanlı işaret olduğunda, genlik spektrumu çift bir fonksiyon, faz
spektrumu da tek bir fonksiyon olmaktadır. İşaretin frekans spektrumu (−𝜋, 𝜋) aralığında ele
alındığından genlik spektrumu simetrik, faz spektrumu da ters-simetrik olarak oluştuğundan frekans
spektrumunun sadece (0, 𝜋) aralığında incelenmesi yeterli olmaktadır. Bu DTFT’nin simetrik
özelliğinden kaynaklanmaktadır.
Zamanda işaretin ötelenmesi işaretin genlik spektrumunda bir değişime yol açmazken,
işaretin faz spektrumunda öteleme miktarı ile doğru orantılı bir faz kayması meydana getirmektedir.
Bu nedenle bir işaretin ötelenmesi sadece doğrusal bir faz kayması meydana getirmektedir.
Pratikte bir işaretin DTFT ile görüntülenmesi istendiği takdirde; işaretin spektrumundan
alınan örnek adedi arttıkça, yani DTFT hesabı için kullanılan 𝑁 değeri arttırıldıkça elde edilen ayrık
frekans spektrumu işaretin sürekli frekans spektrumuna daha fazla benzeyecektir. Fakat bu durumda
yapılması gereken hesap miktarı da artmaktadır. Frekansın örneklenmesi için 𝑁 değeri yeteri kadar
büyük seçilmediği takdirde ters Fourier dönüşümü uygulandığında orijinal sinyale geri dönüş
istenildiği gibi gerçekleşmeyecektir.
Frekans spektrumunun seyrek örneklenmesi sonucu zaman uzayında işaret değerlerinin üst
üste binmesi olayı zamanda örtüşme6 olarak adlandırılır.
Ayrık Fourier dönüşümü aşağıda listelenen alanlarda kullanılmaktadır.
1. Spektrum analizi
2. Hızlı konvolüsyon
3. Frekans uzayında süzgeçleme

Aşağıdaki örnekte [1⁡2⁡3⁡4] değerlerinden oluşan bir serinin Fourier katsayılarının


hesaplanması için Matlab kullanılmıştır. Elde edilen sonuçlara bakıldığında karmaşık sayılardan da
oluşabilen katsayıların olduğu görülmektedir.

Karmaşık sayıların gerçek kısımları sinyalin frekansı ile ilgili bilgilerin edinilmesini sağlarken,
sanal kısımlar ise faz bilgisi ile ilgili verilerin elde edinilmesini sağlamaktadır.

6 Aliasing
6
Zafer CÖMERT Dijital Sinyal İşleme
www.zafercomert.com 13.11.2015
Eğitim: Bilişim: Paylaşım

Şekil 2.1 Ayrık Fourier Dönüşümünün Matlab ile Hesaplanması

Matlab’ın hesaplayarak verdiği sonuçları yukarıda verilen formüllere bağlı olarak, elle çözüp
elde etmek de mümkündür. Bu kapsamda aşağıda [1⁡2⁡3⁡4] değerlerine sahip olan bir serinin çözümü
gösterilmiştir.

7
Zafer CÖMERT Dijital Sinyal İşleme
www.zafercomert.com 13.11.2015
Eğitim: Bilişim: Paylaşım

Örnek DTFT

0 ≤ 𝑛⁡ ≤ 3 dizisi için 𝑥(0) = 1, 𝑥(1) = 2, 𝑥(2) = 3⁡⁡𝑣𝑒⁡𝑥(3) = 4 olarak tanımlanmıştır.


Buna göre ilgili diziye DTFT uygulayınız.

Çözüm DTFT

İlk olarak ayrık zamanlı Fourier dönüşümünü hatırlayalım.


𝑁−1

𝑋(𝑘) = ⁡ ∑ 𝑥(𝑛)𝑊𝑁𝑛𝑘 ⁡0 ≤ 𝑘 ≤ 𝑁 − 1
𝑛=0

Burada:
2𝜋
−𝑗( )
𝑊𝑁 = 𝑒 𝑁

𝑁⁡ = ⁡4
𝜋
−𝑗( )
𝑊4 = 𝑒 2

3
𝜋𝑘𝑛
𝑋(𝑘) = ⁡ ∑ 𝑥(𝑛)𝑒 −𝑗 2

𝑛=0

𝑘 = 0⁡𝑖ç𝑖𝑛

𝑋(0) = ⁡ ∑3𝑛=0 𝑥(𝑛)𝑒 −𝑗0 = 𝑥(0)𝑒 −𝑗0 + 𝑥(1)𝑒 −𝑗0 + 𝑥(2)𝑒 −𝑗0 + ⁡𝑥(3)𝑒 −𝑗0

= 𝑥(0) + 𝑥(1) + 𝑥(2) + 𝑥(3)

= 1 + 2 + 3 + 4 = 10

𝑘 = 1⁡𝑖ç𝑖𝑛
𝜋𝑛 𝜋 3𝜋
𝑋(1) = ⁡ ∑3𝑛=0 𝑥(𝑛)𝑒 −𝑗 2 = 𝑥(0)𝑒 −𝑗0 + 𝑥(1)𝑒 −𝑗 2 + 𝑥(2)𝑒 −𝑗𝜋 + ⁡𝑥(3)𝑒 −𝑗 2

= 𝑥(0) − 𝑗𝑥(1) − 𝑥(2) + 𝑗𝑥(3)

= ⁡1 − 𝑗2 − 3 + 4𝑗

= ⁡ −2 + 𝑗2

𝑘 = 2⁡𝑖ç𝑖𝑛

𝑋(2) = ⁡ ∑3𝑛=0 𝑥(𝑛)𝑒 −𝑗𝜋𝑛 = 𝑥(0)𝑒 −𝑗0 + 𝑥(1)𝑒 −𝑗𝜋 + 𝑥(2)𝑒 −𝑗2𝜋 + ⁡𝑥(3)𝑒 −𝑗3𝜋

= 𝑥(0) − 𝑥(1) + 𝑥(2) − 𝑥(3)

= 1 − 2 + 3 − 4 = ⁡ −2

𝑘 = 3⁡𝑖ç𝑖𝑛
3𝜋 3𝜋 9𝜋
𝑋(3) = ⁡ ∑3𝑛=0 𝑥(𝑛)𝑒 −𝑗 2 = 𝑥(0)𝑒 −𝑗0 + 𝑥(1)𝑒 −𝑗 2 + 𝑥(2)𝑒 −𝑗3𝜋 + ⁡𝑥(3)𝑒 −𝑗 2

8
Zafer CÖMERT Dijital Sinyal İşleme
www.zafercomert.com 13.11.2015
Eğitim: Bilişim: Paylaşım

2.2.1. Konvolüsyon Terimi

Fourier dönüşümü teoreminin en önemli özelliklerinden biridir. Konvolüsyon terimi, zaman


uzayında konvolüsyon toplamı hesaplanan iki işaretin, frekans uzayında Fourier dönüşümlerinin
çarpıldığını belirtmektedir. Bu ilişki zamanla-değişmez sistemlerin giriş işareti spektrumu ile sistemin
frekans yanıtından sistemin çıkış işareti spektrumunun bulunmasına olanak sağlamaktadır.
𝐷𝑇𝐹𝑇
𝑦[𝑛] = 𝑥[𝑛] ∗ ℎ[𝑛] ↔ ⁡𝑌(𝑒 𝑗Ω ) = 𝑋(𝑒 𝑗Ω )𝐻(𝑒 𝑗Ω )

2.2.2. DTFT Öncesi Pencereleme

Ayrık Fourier dönüşümünün yapısındaki periyodiklik nedeniyle bir işaretin spektrumu DTFT
ile hesaplanırken, işaret son örneğin arkasından tekrar ilk örnek geliyormuş gibi işlem görmektedir. Bu
durum göz önüne alındığında frekans ilişkisi frekans bileşenlerinin değerlerine yansımaktadır.

Şekil 2.2 Periyodu tamamlamış sinüs işareti ve DTFT değeri

Şekil 2.2’de periyodunu tamamlamış bir sinüs işareti ve onun DTFT dönüşümü
gösterilmektedir. İşaret periyodunu tamamladığından, bir süreksizlik olmadığından beklendiği gibi
işaretin frekansına karşılık gelen pozitif ve negatif frekansta tek bir örnek olarak oluşmaktadır.

Şekil 2.3 Periyodunu tamamlamamış sinüs ve işaretin DTFT değeri

Şekil 2.3’de sinüs değeri periyodunu tamamlamadığından DTFT dönüşümü sonrası işaretin
yapısında olmayan frekans bileşenleri gözükmektedir.

9
Zafer CÖMERT Dijital Sinyal İşleme
www.zafercomert.com 13.11.2015
Eğitim: Bilişim: Paylaşım

DTFT hesabı sırasında spektral sızmayı azaltmanın bir yolu, işaretin son değeri ile ilk değeri
arasındaki devamsızlığın giderilmesidir. Bu amaçla işarette, DTFT öncesi pencereleme 7
kullanılmaktadır.

DTFT hesabı sırasında işaretin son değerleri ile ilk değerleri arasında
meydana gelen ve ayrık Fourier dönüşümünün doğasından kaynaklanan suni
devamsızlık, enerjinin diğer frekanslara sızması şeklinde algılanabileceğinden
spektral sızma 8 olarak adlandırılmaktadır.

Pencereleme yöntemi işaretin DTFT hesabı öncesinde, genliği kenarlara doğru yavaşça sıfıra
yaklaşan bir pencere fonksiyonu ile çarpılmasını öngörmektedir. Bu sayede işaretin son değeri ile ilk
değerleri arasındaki devamsızlık giderilmektedir. Değişik pencere fonksiyonlarının kullanımı
mümkündür.

Şekil 2.4 Yaygın olarak kullanılan pencere fonksiyonları

Periyodunu tamamlamış sinüs işaretinin Hanning penceresi ile çarpılması sonucu elde edilen
işaret Şekil 2.5’de gösterilmektedir. Pencereleme sonucu işaretin son ve ilk değerleri sıfıra doğru
çekildiğinden devamsızlık ortadan kalkmaktadır. Pencerelenmiş işaretin DTFT spektral sızma etkisi
azaltılmıştır.
Pencereleme spektral sızmayı azaltmaktadır. Bu nedenle çoğunlukla DTFT hesaplanmadan
önce işaret pencerelenmektedir. Kullanılan pencere çeşidi uygulamaya göre değişmektedir. Örneğin
Hamming penceresi ses işaretlerinin işlenmesinde tercih edilirken, genel amaçlı uygulamalarda
Hanning penceresi kullanılmaktadır.

7 Windowing
8 Spectral Leakage
10
Zafer CÖMERT Dijital Sinyal İşleme
www.zafercomert.com 13.11.2015
Eğitim: Bilişim: Paylaşım

Şekil 2.5 Pencerelenmiş işaret

11
Zafer CÖMERT Dijital Sinyal İşleme
www.zafercomert.com 13.11.2015
Eğitim: Bilişim: Paylaşım

3. Hızlı Fourier Dönüşümü


Ayrık Fourier dönüşümünün hızlı bir biçimde hesaplanmasına olanak tanımlanan yöntemler
hızlı Fourier Dönüşümü9 olarak adlandırılmaktadır. 1965 yılında, Cooley ve Tukey tarafından DTFT
için gerekli işlem miktarını azaltacak bir prosedür geliştirilmiştir. Bu prosedür, sayısal işaret işleme ve
diğer alanlarda DTFT uygulamalarında ani bir artışa sebep olmuştur. Ayrıca başka algoritmalarında
geliştirilmesine ön ayak olmuştur. Tüm bu algoritmalar Hızlı Fourier Dönüşümü (FFT) olarak
adlandırılmıştır. FFT, DTFT’nin işaret işleme uygulamalarında yaygın olarak kullanılmasını
sağlamaktadır. FFT, DTFT hesabı için faz faktörünün simetri ve periyodiklik özelliğinden faydalanarak
hızlı bir hesaplama sağlamaktadır. Her ne kadar FFT dönüşüm olarak ifade edilse de, FFT, DTFT farklı
değildir. FFT, DTFT hesaplaması için etkili ve ekonomik bir yöntemdir.
FFT yöntemleri zamanda örnek seyreltme ve frekansta örnek seyretme olarak ikiye
ayrılmaktadır.

3.1. Zamanda Örnek Seyreltme

İşaretlerin çift sayılı ve tek sayılı örneklerine ayrıştırılmasıyla elde edilir. 𝑥[𝑛] işaretinin 𝑁
noktalı ayrık zaman dönüşümü tek ve çift sayı örneklerinin 𝑁/2 noktalı ayrık Fourier dönüşümü
cinsinden elde edilmektedir. 𝑥1 [𝑛] = 𝑥[2𝑛] ve 𝑥2 [𝑛] = 𝑥[2𝑛 + 1] işaretlerinden oluşmaktadır. Ayrık
Fourier dönüşümünün doğrudan hesaplanmasında 𝑁 2 ile orantılı hesap yükü, zamanda örnek
seyreltme prensibine dayanan hızlı Fourier dönüşümünün kullanımı sayesinde 𝑁𝑙𝑜𝑔𝑁 ile orantılı
seviyeye düşmektedir.

N=2
x[0]
x[4]
N=4
x[0] x[2]
x[0] x[2] x[6]
x[1] x[4] N=2
x[2] x[6]
x[3]
x[4]
N=8
x[5]
x[1]
x[6]
x[3] N=2
x[7]
x[5]
x[1]
x[7]
x[5]
N=4
x[3]
x[7]
N=2

Şekil 3.1 Hızlı Fourier dönüşümü: zamanda seyreltme

9 Fast Fourier Transform (FFT)


12
Zafer CÖMERT Dijital Sinyal İşleme
www.zafercomert.com 13.11.2015
Eğitim: Bilişim: Paylaşım

3.2. Frekansta Örnek Seyreltme

Zamanda örnek seyreltme algoritmasında olduğu gibi çift ve tek frekans örneklerini kapsayan
dizilerin tekrar kendi tek ve çift frekanslarına ayrılmasına devam edilebilmektedir. Bunun için işaret
sürekli olarak ikiye bölünerek işaretin birinci yarısının ikinci yarısı ile toplamı ve farkı hesaplanıp fark
işaret gerekli faz faktörü ile çarpılmaktadır.
En alt seviyede sadece 2-noktalı bir DTFT hesabı ile işaretin hızlı Fourier dönüşümü elde
edilmektedir. Özetle FFT zamanda ve frekansta örnek seyreltme yöntemleri ile ayrık Fourier
dönüşümünün hızlı bir şekilde hesaplanmasına olanak tanımaktadır.

13
Zafer CÖMERT Dijital Sinyal İşleme
www.zafercomert.com 13.11.2015
Eğitim: Bilişim: Paylaşım

4. Matlab ile Fourier Dönüşümü


Bu bölümde iki adet uygulamaya yer verilecektir. İlk uygulamada temiz ve gürültülü sinüs
sinyallerine Hızlı Fourier Dönüşümü uygulanacaktır. İkinci uygulamada ise geliştirilen bir GUI ile
Fourier dönüşümünün etkileşimli bir şekilde hesaplatılması sağlanacaktır.
Daha önce ifade edildiği gibi Matlab’da Hızlı Fourier Dönüşümü için fft() ve Ters Fourier
dönüşümü içinse ifft() fonksiyonları kullanılmaktadır.

4.1. Sinüs sinyali için Hızlı Fourier Dönüşümü


Fourier dönüşümünün yaygın bir kullanımı, zaman alanındaki gürültülü bir sinyalin frekans
bileşenlerini bulmaktır. Verinin 1000 Hz ile örneklendiğini düşünelim. Sinyal bir sinüs sinyalidir,
frekansı 100 Hz’dir ve 0.7 genlik değeridir. Sinyal aşağıdaki gibi oluşturulmuştur.

%% Sinyalin Oluşturulması
Fs = 1000; % Örnekleme Frekansı
T = 1/Fs; % Örnekleme Zamanı (Periyot)
L = 1000; % Sinyalin uzunluğu
t = (0:L-1)*T; % Zaman Vektörü
% 100 Hz ve 0.7 genliğinde sinyalin tanımlanması
s1 = 0.7*sin(2*pi*100*t);
y = s1;

Hızlı Fourier Dönüşümünün ve Ters Hızlı Fourier dönüşümünün uygulanması aşağıdaki


gibidir.

%% FFT Uygulanması
% Orijinal sinyale bakarak frekans bileşenlerinin tanımlanması zordur. Gürültülü
sinyal y'nin frekans alanına taşımak için Fast Fourier Transform (FFT)
kullanılacaktır. Sinyali 2'nin üstü şeklinde ayarlamak üzere kullanılır.
% örneğin nextpow2(2000) girildiğinde 2048 dönecektir.
% nextpow2(4000) girildiğinde 4096 dönecektir.
NFFT = 2^nextpow2(L);
Yc = fft(y,NFFT);
Yt = fft(y,NFFT)/L;
ft = Fs/2*linspace(0,1,NFFT/2+1); % tek taraflı için gerekli
fc = Fs*linspace(0,1,NFFT); % Genel spektrum için gerekli
%% ifft Uygulaması
r1 = ifft(Yt);

14
Zafer CÖMERT Dijital Sinyal İşleme
www.zafercomert.com 13.11.2015
Eğitim: Bilişim: Paylaşım

Şekil 4.1 Temiz bir sinüs sinyali için Hızlı Fourier Dönüşümünün uygulama sonuçları

Şekil 4.2 Gürültülü bir sinüs sinyali için Hızlı Fourier Dönüşümünün uygulanma sonuçları

Programın çalıştırılmasından sonra elde edilen sonuçlar Şekil 4.1’de gösterilmiştir. Aynı
sinyale gürültü uygulanarak elde edilen sonuçlar ise Şekil 4.2’de gösterilmiştir.

15
Zafer CÖMERT Dijital Sinyal İşleme
www.zafercomert.com 13.11.2015
Eğitim: Bilişim: Paylaşım

4.2. GUI ile Etkileşimli Fourier Dönüşümü


İkinci uygulamda, bir Matlab GUI oluşturularak bir takım parametrelerin kullanıcı tarafından
girilmesini sağlanmıştır. Kullanıcı bu ekran sayesinden sinyal türü olarak sinüs ya da kosinüs
sinyallerini seçebilmekte, sinyale gürültü ekleyebilmekte, genlik, frekans, sinyal uzunluğu ve
örnekleme frekansını kendisi belirleyebilmektedir.
İlgili parametrelere bağlı olarak FFT dönüşümü yapılmakta genlik, frekans ve kullanılan nokta
sayısı kullanıcıya gösterilmektedir.

Şekil 4.3 GUI ile Etkileşimli Fourier Dönüşümü

Şekil 4.4 GUI ile Etkileşimli Fourier Dönüşümü


16
Zafer CÖMERT Dijital Sinyal İşleme
www.zafercomert.com 13.11.2015
Eğitim: Bilişim: Paylaşım

Ekler
Bir Sinüs Sinyali için Hızlı Fourier Dönüşümü Kaynak Kodları
% Fourier dönüşümünün yaygın bir kullanımı, zaman alanındaki gürültülü bir
% sinyalin frekans bileşenlerini bulmaktır.
% Verinin 1000 Hz ile örneklendiğini düşünelim.
% Sinyalin özellikleri
% 50 Hz sinüs
% 0.7 genlik

close all, clear all, clc


%% Sinyalin Oluşturulması
Fs = 1000; % Örnekleme Frekansı
T = 1/Fs; % Örnekleme Zamanı (Periyot)
L = 1000; % Sinyalin uzunluğu
t = (0:L-1)*T; % Zaman Vektörü
% 50 Hz ve 0.7 genliğinde sinyalin tanımlanması
s1 = 0.7*sin(2*pi*100*t);
y = s1;

%% FFT Uygulanması
% Orjinal sinyale bakarak frekans bileşenlerinin tanımlanması zordur.
% Gürültülü sinyal y'nin frekans alanına taşımak için Fast Fourier
% Transform (FFT) kullanılacaktır.

% Sinyali 2'nin üstü şeklinde ayarlamak üzere kullanılır.


% örneğin nextpow2(2000) girildiğinde 2048 dönecektir.
% nextpow2(4000) girildiğinde 4096 dönecektir.
NFFT = 2^nextpow2(L);
Yc = fft(y,NFFT);
Yt = fft(y,NFFT)/L;
ft = Fs/2*linspace(0,1,NFFT/2+1); % tek taraflı için gerekli
fc = Fs*linspace(0,1,NFFT); % Genel spektrum için gerekli

%% ifft Uygulaması
r1 = ifft(Yt);

%% Çizimler
% Orijinal Sinyal
y = s1;
subplot(4,1,1);
grid on;
plot(t,y);
title('Orijinal Sinyal');
xlabel('Zaman (ms)');
ylabel('Genlik');

% Tek taraflı genlik spektrumunun çizdirilmesi


subplot(4,1,2);
plot(ft,2*abs(Yt(1:NFFT/2+1))); % tek taraflı olduğu için 2 ile çarpıldı.
title('y(t) Tek taraflı genlik spektrumu')
xlabel('Frekans (Hz)')
ylabel('|Y(f)|')

% Genlik Spektrumu
subplot(4,1,3);
plot(fc,abs(Yt));
title('y(t) spektrumu');
xlabel('Frekans (Hz)')
ylabel('|Y(f)|');
subplot(4,1,4);

17
Zafer CÖMERT Dijital Sinyal İşleme
www.zafercomert.com 13.11.2015
Eğitim: Bilişim: Paylaşım

plot(r1);
title('Ters Fourier Dönüşümü')
xlabel('Zaman');
ylabel('Genlik')
xlim([0 L]);

figure,
%% Gürültü ile sinyalin bozulması
y = s1 + rand(size(t));

%% FFT Uygulanması
Yc2 = fft(y,NFFT);
Yt2 = fft(y,NFFT)/L;
r2 = ifft(Yt2);
%% Çizimler
% Tek taraflı genlik spektrumunun çizdirilmesi
figure(2)
subplot(4,1,1);
plot(t,y);
title('y(t) Gürültülü Sinyal')
xlabel('Zaman');
ylabel('Genlik');

% Tek taraflı genlik spektrumunun çizdirilmesi


subplot(4,1,2);
plot(ft,2*abs(Yt2(1:NFFT/2+1))); % tek taraflı olduğu için 2 ile çarpıldı.
title('y(t) gürültülü sinyal : Tek taraflı genlik spektrumu')
xlabel('Frekans (Hz)')
ylabel('|Y(f)|')

subplot(4,1,3);
plot(fc,abs(Yt2));
title('y(t) spektrumu');
xlabel('Frekans (Hz)')
ylabel('|Y(f)|');

subplot(4,1,4);
plot(r2);
title('y(t) spektrumu');
xlabel('Frekans (Hz)')
ylabel('|Y(f)|');
xlim([0 L]);
% subplot(4,1,4); plot(abs(Y1));

18
Zafer CÖMERT Dijital Sinyal İşleme
www.zafercomert.com 13.11.2015
Eğitim: Bilişim: Paylaşım

GUI ile Etkileşimli Fourier Dönüşümü


function varargout = FourierTransform(varargin)
% FOURIERTRANSFORM MATLAB code for FourierTransform.fig
% FOURIERTRANSFORM, by itself, creates a new FOURIERTRANSFORM or raises the
existing
% singleton*.
%
% H = FOURIERTRANSFORM returns the handle to a new FOURIERTRANSFORM or the
handle to
% the existing singleton*.
%
% FOURIERTRANSFORM('CALLBACK',hObject,eventData,handles,...) calls the
local
% function named CALLBACK in FOURIERTRANSFORM.M with the given input
arguments.
%
% FOURIERTRANSFORM('Property','Value',...) creates a new FOURIERTRANSFORM
or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before FourierTransform_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to FourierTransform_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help FourierTransform

% Last Modified by GUIDE v2.5 06-Apr-2015 11:40:03

% Begin initialization code - DO NOT EDIT


gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @FourierTransform_OpeningFcn, ...
'gui_OutputFcn', @FourierTransform_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT

% --- Executes just before FourierTransform is made visible.


function FourierTransform_OpeningFcn(hObject, eventdata, handles, varargin)
clc
handles.output = hObject;
guidata(hObject, handles);

btn_sinyal_uret_Callback(hObject,eventdata,handles);
% --- Outputs from this function are returned to the command line.
function varargout = FourierTransform_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

19
Zafer CÖMERT Dijital Sinyal İşleme
www.zafercomert.com 13.11.2015
Eğitim: Bilişim: Paylaşım

% Get default command line output from handles structure


varargout{1} = handles.output;

function txt_fs_Callback(hObject, eventdata, handles)


% hObject handle to txt_fs (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of txt_fs as text


% str2double(get(hObject,'String')) returns contents of txt_fs as a
double

% --- Executes during object creation, after setting all properties.


function txt_fs_CreateFcn(hObject, eventdata, handles)
% hObject handle to txt_fs (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.


% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function txt_uzunluk_Callback(hObject, eventdata, handles)


% hObject handle to txt_uzunluk (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of txt_uzunluk as text


% str2double(get(hObject,'String')) returns contents of txt_uzunluk as a
double

% --- Executes during object creation, after setting all properties.


function txt_uzunluk_CreateFcn(hObject, eventdata, handles)
% hObject handle to txt_uzunluk (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.


% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function txt_genlik_Callback(hObject, eventdata, handles)


% hObject handle to txt_genlik (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of txt_genlik as text


% str2double(get(hObject,'String')) returns contents of txt_genlik as a
double

% --- Executes during object creation, after setting all properties.


function txt_genlik_CreateFcn(hObject, eventdata, handles)
% hObject handle to txt_genlik (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.


% See ISPC and COMPUTER.
20
Zafer CÖMERT Dijital Sinyal İşleme
www.zafercomert.com 13.11.2015
Eğitim: Bilişim: Paylaşım

if ispc && isequal(get(hObject,'BackgroundColor'),


get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function txt_frekans_Callback(hObject, eventdata, handles)


% hObject handle to txt_frekans (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of txt_frekans as text


% str2double(get(hObject,'String')) returns contents of txt_frekans as a
double

% --- Executes during object creation, after setting all properties.


function txt_frekans_CreateFcn(hObject, eventdata, handles)
% hObject handle to txt_frekans (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.


% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

% --- Executes on button press in btn_sinyal_uret.


function btn_sinyal_uret_Callback(hObject, eventdata, handles)
handles.fs = str2num(get(handles.txt_fs,'String'));
handles.uzunluk = str2num(get(handles.txt_uzunluk,'String'));
handles.genlik = str2num(get(handles.txt_genlik,'String'));
handles.frekans = str2num(get(handles.txt_frekans,'String'));
handles.periyot = 1/handles.fs;
handles.zaman = (0:handles.uzunluk-1)*handles.periyot;

if get(handles.ddl_sinyal_turu,'Value')==1
% 1 sinüs
handles.sinyal = handles.genlik * sin(2*pi*handles.frekans*handles.zaman);
else
% 2 cosinüs
handles.sinyal = handles.genlik * cos(2*pi*handles.frekans*handles.zaman);
end

% Gürültü oluşturma ve sinyale ekleme


handles.hamsinyal = handles.sinyal;
handles.gurultu = str2num(get(handles.txt_gurultu,'String'));
handles.gurultu = handles.gurultu * rand(size(handles.sinyal));
handles.sinyal = handles.sinyal + handles.gurultu;

cla(handles.axes_sinyal,'reset');
plot(handles.axes_sinyal,handles.sinyal);

title(handles.axes_sinyal,'y(t) Sinüs Sinyali');


xlabel(handles.axes_sinyal,'Sinyal Uzunluğu');
ylabel(handles.axes_sinyal,'Genlik (V)');
ylim(handles.axes_sinyal,[min(handles.sinyal-0.5) max(handles.sinyal)+0.5]);
pan XON;
grid(handles.axes_sinyal,'on')
h = zoom;
h.Motion = 'horizontal';
h.Enable = 'on';

% Gürültüyü göster
if get(handles.cb_gurultu,'Value')==1
21
Zafer CÖMERT Dijital Sinyal İşleme
www.zafercomert.com 13.11.2015
Eğitim: Bilişim: Paylaşım

hold(handles.axes_sinyal,'on');
plot(handles.axes_sinyal,handles.hamsinyal,'r--');
% plot(handles.axes_sinyal,handles.gurultu,'r.-');
legend(handles.axes_sinyal,'Gürültülü Sinyal','Ham Sinyal','Gürültü');
end

guidata(hObject,handles);

% --- Executes on button press in btn_fft.


function btn_fft_Callback(hObject, eventdata, handles)
cla(handles.axes_fft,'reset');

handles.nfft = 2^nextpow2(handles.uzunluk);
set(handles.lbl_uzunluk,'String', strcat('Kullanılan nokta sayısı:
',int2str(handles.nfft)));

handles.fft = fft(handles.sinyal,handles.nfft)/handles.uzunluk;
handles.hamfft = fft(handles.hamsinyal,handles.nfft)/handles.uzunluk;

% tek taraflı için gerekli


handles.ft = handles.fs/2*linspace(0,1,handles.nfft/2+1);

% tek taraflı olduğu için 2 ile çarpıldı.


plot(handles.axes_fft, handles.ft,2*abs(handles.fft(1:handles.nfft/2+1)))
if get(handles.cb_hamfft,'Value')==1
hold on
plot(handles.axes_fft, handles.ft,...,
2*abs(handles.hamfft(1:handles.nfft/2+1)),'r--')
legend(handles.axes_fft,'Gürültülü Sinyal FFT', 'Ham Sinyal FFT');
end
title(handles.axes_fft,'y(t) Tek taraflı genlik spektrumu');
xlabel(handles.axes_fft,'Frekans (Hz)')
ylabel(handles.axes_fft,'|Y(f)|')
guidata(hObject,handles);

function txt_gurultu_Callback(hObject, eventdata, handles)


% hObject handle to txt_gurultu (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of txt_gurultu as text


% str2double(get(hObject,'String')) returns contents of txt_gurultu as a
double

% --- Executes during object creation, after setting all properties.


function txt_gurultu_CreateFcn(hObject, eventdata, handles)
% hObject handle to txt_gurultu (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.


% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

% --- Executes on selection change in ddl_sinyal_turu.


function ddl_sinyal_turu_Callback(hObject, eventdata, handles)
% hObject handle to ddl_sinyal_turu (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

22
Zafer CÖMERT Dijital Sinyal İşleme
www.zafercomert.com 13.11.2015
Eğitim: Bilişim: Paylaşım

% Hints: contents = cellstr(get(hObject,'String')) returns ddl_sinyal_turu


contents as cell array
% contents{get(hObject,'Value')} returns selected item from
ddl_sinyal_turu

% --- Executes during object creation, after setting all properties.


function ddl_sinyal_turu_CreateFcn(hObject, eventdata, handles)
% hObject handle to ddl_sinyal_turu (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: popupmenu controls usually have a white background on Windows.


% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

% --- Executes on button press in cb_gurultu.


function cb_gurultu_Callback(hObject, eventdata, handles)
% hObject handle to cb_gurultu (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of cb_gurultu

% --- Executes on button press in cb_hamfft.


function cb_hamfft_Callback(hObject, eventdata, handles)
% hObject handle to cb_hamfft (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of cb_hamfft

23
Zafer CÖMERT Dijital Sinyal İşleme
www.zafercomert.com 13.11.2015
Eğitim: Bilişim: Paylaşım

Kaynakça

[1] A. Altın, Fourier Analizi, Ankara: Gazi Kitabevi, 2011.

[2] R. N. Bracewell, «The Fourier Transform,» Scientific American , pp. 86-95, 1989.

[3] S. Ertürk, Sayısal İşaret İşleme, İstanbul: Birsen Yayınevi, 2009.

24
Zafer CÖMERT Dijital Sinyal İşleme
www.zafercomert.com 13.11.2015
Eğitim: Bilişim: Paylaşım

Belge Geçmişi
31.10.2015 Belge ilk kez oluşturuldu.

25

You might also like