B ¨ol ¨um 4
Ayr¬k Fourier Dönü¸ sümü ve Uygulamalar¬
Bu bölümde
Sinüzoidler ve ses, Ses üzerinde i¸ slemler,
Vektör ve matrislerin Fourier ve Ters Fourier Dönü¸ sümü, H¬zl¬Fourier algoritmas¬n¬inceliyor ve
Gürültülü sesten orijinal sesin ayr¬kla¸ st¬r¬lmas¬(…ltrelenmesi) i¸ slemini interaktif olarak inceliyoruz.
4.1 Sinüzoidler ve ses
y(t) = a sin(wt + ) (4.1)
biçiminde ifade edilebilen fonksiyonlar ailesinin her bir eleman¬na reel de¼ gerli bir sinüzoid ad¬ verilir. t zaman de¼ gi¸ skeni olmak üzere, zaman ekseninde sal¬n¬m yapan her nesnenin t an¬ndaki durumu uygun bir y(t) fonksiyonu veya fonksiyonlar¬n¬n lineer kombinasyonu yard¬m¬yla incelenebilir. Söz konusu nesne bazen elle tutulabilir bir cisim(dü¸ sey sal¬n¬m yapan yay ucuna as¬l¬bir kütle) olabildi¼ gi gibi bazen de sadece i¸ sitilebilir bir ses olabilir.
K a ra d e n iz Te k n ik M a t e m a t ik , e rh a n @ k tu .e d u .t r
(4.1) in dü¸ sey yönde bir sal¬n¬m¬temsil etmesi durumunda, a > 0 sal¬n¬m¬n y = 0 ekseninden en fazla ne kadar a¸ sa¼ g¬ya inebilece¼ gini veya yukar¬ya ç¬ka- bilece¼ gini, di¼ ger bir de¼ gimle sal¬n¬m¬genli¼ gini gösterir. w ise saniyede al¬nan mesafenin radyan cinsinden ölçüsüdür ve w ya dairesel frekans ad¬verilir ve birimi radyan/s dir. w ne kadar büyük ise sal¬n¬m o kadar h¬zl¬ gerçek- le¸ sir. ye ise faz(phase) ad¬verilir ve yay sal¬n¬m örne¼ gi için t = 0 an¬nda cismin orjine göre konumunu belirler ve birimi radyan d¬r. A¸ sa¼ g¬yön pozitif olarak kabul edilirse, negatif ; cismin ba¸ slang¬ç an¬nda y = 0 noktas¬n¬n yukar¬s¬nda(veya gerisinde) oldu¼ gunu ve henüz y = 0 a ula¸ samad¬¼ g¬n¬, yani gecikmeyi temsil eder. Pozitif ise ileride olmay¬temsil eder.
Sal¬n¬m hareketin ba¸ slad¬¼ g¬pozisyondan yine ayn¬pozisyona kadar gelme- sine kadar geçen süreye ise sal¬n¬m¬n peryodu ad¬verilir ve p ile gösterilir.
(4.1) ile verilen sal¬n¬m¬n peryodu
y(t + p) = a sin(w(t + p) + )
= a sin(wt + + wp)
= a sin(wt + + 2 )
= y(t) e¸ sitli¼ gini sa¼ glamas¬gerekti¼ ginden
p = 2 w
olarak elde edilir ve bu durumda p nin birimi saniye dir.
(4.1) in bir sesi veya daha net olarak ses dalgas¬n¬ temsil etmesi duru- munda a sesin siddetini ve w ise sinüzoidal frekans¬n¬belirler. w n¬n küçük de¼ gerleri kal¬n ses ve yüksek de¼ gerleri ise ince sesi temsil eder. Ancak ses dalgas¬yerine sesin özelliklerini incelemek istiyorsak, bu durumda
w = 2 f
ba¼ g¬nt¬s¬ile verilen ve genelde f ile gösterilen sal¬n¬m frekans¬kullan¬l¬r. f nin birimi 1=saniye = Hertz
1dir ve Hz k¬saltmas¬ile gösterilir ve f , sesin saniyedeki titre¸ sim(sal¬n¬m) say¬s¬n¬verir. Saniyede 1000 kez titre¸ sim yapan ses dalgas¬ 1000Hz=1KHz(KiloHertz) frekansl¬d¬r denir. Farkl¬ radyo dal- galar¬, frekans farklar¬yla birbirinden ayr¬l¬rlar. Konu¸ sma seviyesindeki sesin 20Hz ile 20KHz aras¬nda frekans de¼ gerlerine sahip oldu¼ gu kabul edilmektedir.
1
Heinrich Rudolf Hertz(1857-1894) Alman …zikçi.
K a ra d e n iz Te k n ik M a t e m a t ik , e rh a n @ k tu .e d u .t r
4.2 Dijital ortamda ses ve ilgili i¸ slemler
Sesin dijitalle¸ stirilmesi (4.1) de = 0 ile
y = asin(wt) = asin(2 f t)
sinüzoidini göz önüne alal¬m ve 1 saniyelik k¬sm¬n¬elektronik ortamda kay- detmek isteyelim. Bu durumda [0; 1] zaman aral¬¼ g¬ içerisinde sonlu say¬da noktada ses de¼ gerinin(¸ siddetinin) ölçülmesi gerekir. Bu i¸ sleme örnekleme ad¬verilmektedir. Ölçüm yapaca¼ g¬m¬z anlar¬içeren vektörü T ile gösterelim.
Ölçüm anlar¬aras¬ndaki zaman fark¬n¬da dT ile gösterelim. O halde T = [0; dT; 2dT; :::; (N 1)dt = 1]
dir. Bu durumda Y = sin(2 f T ) ye birim zamanda olu¸ san örneklem uzay¬, ve T nin her bir an¬nda elde edilen kay¬t de¼ gerine ise örneklem veya örnek- lem de¼ geri ad¬verilir. F s = N de¼ gerine örneklem frekans¬(1 saniyede al¬nan örneklem say¬s¬) ve dT ye ise örneklem aral¬¼ g¬ad¬verilmektedir.
Sesin dijitalle¸ stirilmesinde temel referans Nyquist Teoremidir ve öze- tle herbir saniyede al¬nmas¬ gereken örneklem say¬s¬n¬n ses frekans¬n¬n iki kat¬ndan büyük veya e¸ sit olmas¬gerekti¼ gini ifade eder. Yani
F s >= 2f
olmal¬d¬r, aksi taktirde elde edilen örneklem orjinal sesi istenilen kalitede temsil edemez(Burada frekans için w yerine f kullan¬ld¬¼ g¬na dikkat edelim).
f nin farkl¬de¼ gerleri(f >= 20Hz) için olu¸ san sesleri inceleyen Program 4.1 a¸ sa¼ g¬da verilmektedir.
Küçük f lerin kal¬n ses ve büyüklerin ise ince sesleri üretti¼ gine dikkat edelim. Ayr¬ca a ise sesin ¸ siddetini belirlemektedir.
Example 1. Program 4.1 i çal¬¸ st¬rarak
>>sinuzoid(0.1,8000)
komutu ile üretilen sesi dinleyiniz.
K a ra d e n iz Te k n ik M a t e m a t ik , e rh a n @ k t u .e d u .tr
--- function sinuzoid(a,Sinuzoid_frekans)
%y=a*sin(2*pi*f*t) ile ses Orneklem_frekans=40000;
Orneklem_araligi=1/Orneklem_frekans;
t=0:Orneklem_araligi:0.1;
y=a*sin(2*pi*Sinuzoid_frekans*t);
sound(y,Sinuzoid_frekans);
---
Program 4.1: Frekans ve ¸ siddetine göre ses analizi
4.2.1 Harf sesleri
Alfabemizdeki har‡erle olu¸ san sesleri yak¬ndan tan¬mak için A,B,C ve Ç har‡erine ait ses kayd¬n¬ yap¬yoruz. Bu i¸ slemi OCTAVE record fonksiyonu veya MATLAB wavrecord fonksiyonu ile gerçekle¸ stirebiliriz. Örne¼ gin
>>A=record(1)
komutu ile MATLAB/OCTAVE ortam¬nda bilgisayar mikrofonundan iletilen 1 saniyenik A har… sesi A isimli bir vektöre atanmaktad¬r. Bu durumda olu¸ san A vektörü 8000 adet bile¸ sene sahiptir. Herhangi bir noktas¬ndan 200 adet bile¸ senin gra…¼ gini görüntüleyerek vektörün elemanlar¬na yak¬ndan göz atmak istiyoruz.
Örne¼ gin A har…ne ait kay¬t için a¸ sa¼ g¬daki i¸ slemleri gerçekle¸ stiriyoruz:
— — — — — — — — — — — — — — — — — — — — —
>> A=record(1);
>> length(A) ans = 8000
>> plot(A(4000:4200),’linewidth’,2)
>> print -djpeg A
— — — — — — — — — — — — — — — — — — — — —
Bu i¸ slemi alfabemizdeki A,B,C ve Ç har‡eri için gerçekle¸ stirerek elde etti¼ gimiz sonucu gra…ksel olarak ¸ Sekil 4.1 de sunuyoruz:
Yukar¬daki ¸ sekli, Octave ortam¬nda record komutuyla ilgili harfe ait sesin kayd¬n¬yaparak, elde etti¼ gimiz kayd¬n merkezi bir k¬sm¬nda 200 birim uzun- luklu k¬sm¬n¬n plot fonksiyonu ile ga…¼ gini çizdirerek elde ediyoruz.
K a ra d e n iz Te k n ik M a t e m a t ik , e rh a n @ k tu .e d u .tr
(A) (B)
(C) (Ç)
¸
Sekil 4.1: A,B,C ve Ç har‡erinin gra…klerininden k¬sa görünüm
Yukar¬daki örnekte, 1 saniyelik A har… kayd¬ ile elemanlar¬ 1 ile 1 aras¬nda de¼ gi¸ sen ve 8000 bile¸ senli bir A vektörü olu¸ smaktad¬r. Daha sonra olu¸ san A vektöründen 200 birim uzunluklu bir k¬sm¬n gra…¼ gi çizdirilerek A:jpg isimli bir dosyaya kaydediyoruz. Audiowrite komutu ile ses vektörünü istenilen bir dosyada uygun bir ses format¬nda saklayabiliriz. Örne¼ gin A har…ne ait ses kayd¬
audiowrite(’A.wav’,A,8000);
komutu ile A.wav isimli ses dosyas¬na kaydedilmektedir.
A:wav dosyas¬na kaydedilen sesin ilgili k¬sm¬audioread komutu ile oku- narak, a¸ sa¼ g¬da görüldü¼ gü üzere Y dizisine(vektörüne) atanmaktad¬r.
[Y; F S] = audioread( 0A:wav0) burada F S ise örneklem frekans¬d¬r.
Yukar¬da oldu¼ gu üzere okuma i¸ sleminde format seçene¼ gi belirtilmedi¼ gi zaman veriler double format’ta okunur ve bu durumda Y de¼ gerleri 1 ile 1 aral¬¼ g¬nda de¼ gi¸ sir.
sound(Octave) komutu Y vektöründe sakl¬ses verisini F S frekans¬nda,
yani saniyede F S adet, i¸ sleme tabi tutmakta ve kaydedilen sesin gerçek za- manl¬olarak alg¬lanmas¬n¬(i¸ sitilmesini) sa¼ glamaktad¬r.
Al¬¸ st¬rmalar 4.1.
1. N = 5000; dt = 1=N ; t = 0 : dt : 0:5; f = 10; a = 2 de¼gerleri ile ba¸ slang¬çta y = asin(2 f t) ses sinyali olu¸ sturunuz. Olu¸ sturdu¼gunuz sinyali sound(y,N) komutu ile dinleyiniz.
2. Soru 1 de olu¸ sturdu¼gunuz sesin genli¼gini her defas¬nda iki kat¬na ç¬kararak olu¸ san yeni ses sinyalini sound komutu yard¬m¬yla dinlayiniz. Artan genlik de¼gerleri sesi nas¬l etkilemektedir?
3. Soru 1 de olu¸ sturdu¼gunuz sesin frekans¬n¬her defas¬nda iki kat¬na ç¬kararak olu¸ san yeni ses sinyalini sound komutu yard¬m¬yla dinlayiniz. Artan frekans de¼gerleri sesi nas¬l etkilemektedir?
4. >> B=record(0.5); komutuyla 0.5 saniyelik B har…ne ait kendi sesinizi MATLAB/OCTAVE ortam¬nda kaydederek,
>> plot(A(1000:1200),’linewidth’,2) komutuyla kaydetti¼giniz sesin bir k¬sm¬n¬n gra…¼gini çizdiriniz.
5. Soru 4 i küçük bir çocuk yak¬n¬n¬z¬n sesini kaydederek tekrarlay¬n¬z.
Sizin B har…ne ait sesinizle çocuk sesi aras¬nda ne fark gözlemliyor- sunuz.
Ses ile ilgili di¼ ger i¸ slemlerden önce Ayr¬k Fourier Dönü¸ sümünü k¬saca özetleyelim:
4.3 Ayr¬k Fourier Dönü¸ sümü
[0; 2 ] aral¬¼ g¬nda tan¬ml¬parçal¬sürekli bir f fonksiyonunun Fourier aç¬l¬m¬
f (x) ' 1 2 a
0+
X
1 k=1a
kcos(kx) + b
ksin(kx) (4.2) ile verilir, burada
K a ra d e n iz Te k n ik M a t e m a t ik , e rh a n @ k tu .e d u .t r
a
k= 1 Z
2 0f (x) cos(kx)dx; k = 0; 1; :::
ve
b
k= 1 Z
2 0f (x) sin(kx)dx; k = 1; 2; :::
olarak elde edilir. f nin süreki oldu¼ gu x noktalar¬nda (4.2) aç¬l¬m¬fonksiyo- nun söz konusu noktadaki de¼ gerine e¸ sittir.
Baz¬uygulamalarda [0; 2 ]aral¬¼ g¬nda ortogonal olanf1; sin(kx); cos(kxg
1k=1reel fonksiyonlar¬yerine
= fe
ikxg
1k= 1; i = p
1 (4.3)
ile tan¬mlanan ortogonal kümenin kullan¬m¬ daha fazla tercih edilir. Bu durumda f fonksiyonun sürekli oldu¼ gu x noktalar¬nda
f (x) = X
1 k= 1c
ke
ikx(4.4)
dir, burada c
klar kompleks say¬lard¬r. Reel ve kompleks katsay¬lar aras¬nda c
0= 1
2 a
0; c
k= 1
2 (a
kib
k); c
k= 1
2 (a
k+ ib
k); k = 1; 2; (4.5) ba¼ g¬nt¬lar¬ geçerlidir(Al¬¸ st¬rma 1). kümesinin ortogonal oldu¼ gu kolayca görülebilir: k 6= l için n¬n ilgili elemanlar¬n¬n iç çarp¬m¬
< e
ikx; e
ilx>=
Z
2 0e
ikxe
ilxdx = 1
i(k l) e
i(k l)x2
0
= 0 (4.6) ve ayr¬ca
< e
ikx; e
ikx>= 2 (4.7) dir.(4.4) ifadesinin her iki yan¬n¬ e
ikxile çarp¬p, [0; 2 ] aral¬¼ g¬ üzerinden integral alarak, (4.6) ve (4.7) den c
kde¼ gerlerini
c
k= 1 2
Z
2 0f (x)e
ikxdx; k 2 Z (tamsay¬lar kümesi) (4.8)
olarak elde ederiz.
Peryodik fonksiyonlar için geçerli olan bu aç¬l¬ma paralel olarak f fonk- siyonun x = 2 =N aral¬kl¬x
0= 0 olmak üzere x
k; k = 0; 1; :::; N 1 nokta- lar¬ndaki de¼ gerlerinden olu¸ stu¼ gunu kabul edebilece¼ gimiz f = [f
0; f
1; :::; f
N 1]
Tsütun vektörü için de geçerlidir.
Bu durumda (4.3) de fonksiyonlardan olu¸ san taban¬rolünü w = e
2 i=Nolmak üzere w n¬n kuvvetlerinden olu¸ san
1; w; w
2; ; w
N 1(4.9)
kümesi üstlenir. Bu kümenin her bir eleman¬z
N= 1 dekleminin çözümüdür.
w = e
2 i=Nise primitif kök olarak adland¬r¬l¬r. (4.9) kümesi kompleks dü- zlemde birim çember üzerinde e¸ sit aral¬klarla serpi¸ stirilmi¸ s N adet noktadan olu¸ sur, w çember üzerinde saatin tersi yönünde 1 den sonraki ilk köktür ve primitif kök olarak adland¬r¬l¬r. Örne¼ gin
z
2= 1 ) w = 1 ve f1; wg = f1; 1 g ;
z
4= 1 ) w = i ve 1; w; w
2; w
3= f1; i; 1; ig
Fonksiyonlar için kulland¬¼ g¬m¬z fe
ikxg
1k= 1taban rolünü, bu taban¬n her bir k için yukar¬da belirtilen e¸ sit aral¬kl¬N - adet noktadaki de¼ gerinden olu¸ san
W
k= 2 6 6 6 6 6 4
1 w w
2.. . w
N 13 7 7 7 7 7 5
k
; k = 0; 1; :::; N 1 (4.10)
vektörler kümesi üstlenir. Bu durumda f vektörümüzü
f = 2 6 6 6 4
f
0f
1.. . f
N 13 7 7 7 5 =
N
X
1 k=0c
kW
k(4.11)
K a ra d e n iz Te k n ik M a t e m a t ik , e rh a n @ k tu .e d u .tr
olarak ifade ederiz.
Iddia: · fW
kg
Nk=01kümesi ortogonaldir.
Ispat: · k 6= l olmak üzere, r = w
kw
lolarak tan¬mlayarak
< W
k; W
l>= [1 w
kw
2l:::w
(N 1)k] 2 6 6 6 4
1 w
l.. . w
l(N 1)3 7 7
7 5 (4.12)
= 1 + w
kw
l+ ::: + w
(N 1)kw
`(N 1)= 1 + r + ::: + r
N 1= 1 r
N1 r = 0 elde ederiz, çünkü
r
N= (w
kw
l)
N= w
kNw
lN= (w
N)
k(w
N)
l= 1
dir. Öteyandan
< W
l; W
l>= 1 + w
lw
l+ ::: + w
(N 1)lw
(N 1)`= N (4.13) dir, çünkü
w
lw
l= (ww)
l= 1; :::; w
(N 1)lw
(N 1)`= (ww)
(N 1)l= 1:
fW
kg
Nk=01kümesinin ortogonalli¼ gi ve (4.13) yard¬m¬yla (4.11) ün her iki yan¬n¬W
Tk(W
knin transpozu) ile çarparak
W
Tkf = [1 w
kw
2k:::w
(N 1)k] 2 6 6 6 4
f
0f
1.. . f
N 13 7 7
7 5 = N c
k(4.14)
veya
c
k= 1
N W
Tkf = 1 N
N
X
1 j=0f
j(w
k)
j= 1 N
N
X
1 j=0f
j(e
2 i=N)
kj; k = 0; 1; :::; N 1
(4.15)
elde ederiz. c = [c
0; c
1; ; c
N 1]
Tvektörüne f nin ayr¬k Fourier dönü¸ sümü ad¬ verilir. Ayr¬k Fourier dönü¸ sümü için genelde kullan¬lan bir özel nota- syon yoktur, ancak burada biz kolayl¬k aç¬s¬ndan c = F (f ) notasyonunu kullanaca¼ g¬z.
Matris-vektör notasyonu yard¬m¬yla da c yi ifade edebiliriz: Bu amaçla fW
kg
Nk=01kümesi yard¬m¬yla
B = [W
0W
1W
N 1] = 2 6 6 6 4
1 1 1
1 w w
N 1.. . .. . .. . 1 w
(N 1)w
(N 1)23 7 7
7 5 (4.16)
matrisini tan¬mlayal¬m. (4.14) dan
W
T0f = f
0+ f
1+ + f
N 1= N c
0W
T1f = f
0+ wf
1+ + w
N 1f
N 1= N c
1.. .
W
TN 1f = f
0+ w
(N 1)f
1+ + w
(N 1)2f
N 1= N c
N 1veya
B = [W
0W
1W
N 1] = 2 6 6 6 4
1 1 1
1 w w
N 1.. . .. . .. . 1 w
(N 1)w
(N 1)23 7 7 7 5
olmak üzere
Bf = W
0f
0+ W
1f
1+ + W
N 1f
N 1= N c veya
c = F (f ) := 1 N Bf
elde ederiz. Ayr¬ca B nin sütunlar¬n¬n ortogonalli¼ gi ve (4.13) dan BB = N I
elde ederiz, burada I ise B ile ayn¬boyutta olan birim matristir. Dolay¬s¬yla B
1= 1
N B
K a ra d e n iz Te k n ik M a t e m a t ik , e rh a n @ k tu .e d u .t r
dir.
O halde verilen f vektörünün ayr¬k Fourier dönü¸ sümü c = 1
N Bf = B
1f (4.17)
ve c nin ayr¬k ters Fourier dönü¸ sümü ise
f = F
1(c) := Bc (4.18)
dir.
ÖRNEK 4.1. f = [1 1]
Tvektörünün ayr¬k Fourier dönü¸ sümünü belir- leyiniz.
N = 2 olup, w = e
2 i=N= e
i= 1 dir. O halde
B = 1 1
1 w = 1 1
1 1
olup,
c = 1
N Bf = 1 2
1 1
1 1
1
1 = 0
1 elde ederiz.
ÖRNEK 4.2. f = [1 1 1 1]
Tvektörünün ayr¬k Fourier dönü¸ sümünü be- lirleyiniz.
N = 4 olup, w = e
2 i=N= e
i=2= i dir. O halde
B = 2 6 6 4
1 1 1 1
1 w w
2w
31 w
2w
4w
61 w
3w
6w
93 7 7 5 =
2 6 6 4
1 1 1 1
1 i i
2i
31 i
2i
4i
61 i
3i
6i
93 7 7 5
= 2 6 6 4
1 1 1 1
1 i 1 i
1 1 1 1
1 i 1 i
3 7 7 5
elde ederiz. Dolay¬s¬yla
c = F (f ) = 1
N Bf = 1 4
2 6 6 4
1 1 1 1
1 i 1 i
1 1 1 1
1 i 1 i
3 7 7 5
2 6 6 4
1 1 1 1
3 7 7 5 =
2 6 6 4
1=2 ( 1=2)i
1=2 (1=2)i
3 7 7 5
olarak elde ederiz.
Ters Fourier Fourier Dönü¸ sümü ise c yard¬m¬yla orijinal f dizisini elde etme i¸ slemidir ve
f = Bc olarak verilir.
Ayr¬k Fourier dönü¸ sümünü (4.15) formülü ile gerçekle¸ stiren Program 4.2 a¸ sa¼ g¬da verilmektedir.
--- function c=fourier(f)
format rat;
f=f’;
N=length(f);
w=exp(2*pi*i/N); % 1 in N-inci kok W=ones(N,1);
for k=2:N
W(k)=w*W(k-1);
end
B(:,1)=ones(N,1);
B(:,2)=W;
for k=3:N
B(:,k)=W.*B(:,k-1);
end
c=conj(B)*f/N;
---
Program 4.2: Klasik(h¬zl¬olmayan) Fourier Dönü¸ sümü
ÖRNEK 4.3. >> f = [1 1] vektörünün Ayr¬k Fourier dönü¸ sümünü Prog- ram 4.2 yard¬m¬yla hesaplay¬n¬z.
K a ra d e n iz Te k n ik M a t e m a t ik , e rh a n @ k t u .e d u .tr
>> f=[1 -1];
>> fourier(f) ans =
0 + 0i 1 + 0i elde ederiz.
ÖRNEK 4.4. >>f = [1 1 1 1] sat¬r vektörünün Ayr¬k Fourier dönü¸ sümünü Program 4.2 yard¬m¬yla hesaplay¬n¬z.
>> f=[1 1 1 -1];
>> fourier(f) ans =
1/2 + 0i 0 - 1/2i 1/2 + 0i 0 + 1/2i elde ederiz.
Elde edilen ayr¬k Fourier dönü¸ sümünün reel ve sanal k¬s¬mlar¬ile genli¼ gi ve faz olarak bilinen argüman¬gra…ksel olarak ¸ Sekil 4.2 de sunulmaktad¬r.
Yukar¬daki gra…k a¸ sa¼ g¬daki program parças¬yard¬m¬yla elde edilmi¸ stir.
--- function dortlugraf()
f=[1 1 1 -1]’;
c=fourier(f);
k=1:length(f);
subplot(4,1,1);
stem(k,real(c));ylabel(’Re(c)’);
subplot(4,1,2);
stem(k,imag(c));ylabel(’Im(c)’);
subplot(4,1,3);
stem(k,abs(c));ylabel(’ jcj’);
subplot(4,1,4);
stem(k,angle(c));ylabel(’Faz(c)’);
---
¸
Sekil 4.2: Ayr¬k Fourier dönü¸ sümünün reel ve sanal k¬s¬mlar¬ile genlik ve faz gra…¼ gi
Yukar¬da ifade edilen Ayr¬k fourier dönü¸ sümü B matrisinin N N boyu- tunda bir matris olmas¬durumunda N
2adet çarpma i¸ slemi yap¬lmas¬n¬gerek- tirir. Bu ise çok say¬da elemana sahip olan f dizileri veya f matrisleri için çok fazla bilgisayar sistem kayna¼ g¬kullan¬m¬n¬gerektirir. Bu durumda B ma- trisinin özelliklerinde faydalanmak suretiyle verilen dizi alt parçalara bölün- mek suretiyle ayr¬k Fourier dönü¸ sümü gerçekle¸ stirir. Bölüm 4.5 te inceleye- ce¼ gimiz söz konusu yönteme H¬zl¬ Fourier Dönü¸ sümü(Fast Fourier Trans- form) ad¬ verilir ve MATLAB/OCTAVE ortam¬nda ¤t() fonksiyonu yard¬- m¬yla gerçekle¸ stirilir.
ÖRNEK 4.5. f = [1 1 1 1]
0nin Ayr¬k Fourier Dönü¸ sümünü ¤t program¬
yard¬m¬yla hesaplay¬n¬z.
>>f = [1 1 1 1]
0;
>> ¤t(f ) ans = 2 + 0i 0 - 2i 2 + 0i
K a ra d e n iz Te k n ik M a t e m a t ik , e rh a n @ k t u .e d u .tr
0 + 2i Uyar¬lar:
¤t ile elde etti¼ gimiz sonuçlar¬n, fourier program¬ ile elde edilenlerin 4 kat¬oldu¼ guna dikkat ediniz. Uzunlu¼ gu N olan vektör için ¤t() ile elde edilen sonuçlar, fourier() ile elde etti¼ gimiz sonuclar¬n N kat¬na e¸ sit olur. Bu sonuç uygulamalarda herhangi bir sorun olu¸ sturmaz, her iki yakla¸ s¬mda literatürde s¬kça kullan¬l¬r.
Bile¸ sen say¬s¬fazla olan uygulamalar için ¤t() kullan¬lmal¬d¬r. fourier() program¬n¬sadece yöntemin nas¬l çal¬¸ st¬¼ g¬n¬göstermek amac¬yla ince- liyoruz.
Ayr¬k Fourier dönümünün tersi de benzer biçimde hesaplanabilir. fourier() program¬nda gerekli düzenlemeler yap¬larak ifourier() ismi ile ters ayr¬k Fourier dönü¸ sümü de hesaplanabilir(Al¬¸ st¬rma 12).
Bir c vektörünün ters ayr¬k Fourier dönü¸ sümü MATLAB/OCTAVE or- tam¬nda
>>i¤t(c)
komutu ile gerçekle¸ stirilir.
ÖRNEK 4.6. c = [2 2i 2 2i] nin ters Fourier dönü¸ sümünü i¤t komutu yard¬m¬yla hesaplay¬n¬z.
>> c = [2 2 i 2 2 i] için
>>if f t(c)
ans = 1 1 1 1 elde ederiz.
4.4 Bir matrisin Fourier ve Ters Fourier Dönü¸ sümü
Bir matrisin ayr¬k Fourier ve ters Fourier dönü¸ sümünü inceleyelim:
A = 1 2
3 4
matrisi verilsin.
A matrisinin ayr¬k Fourier dönü¸ sümü, her bir sat¬r¬n Fourier dönü¸ sümü ile elde edilen matrisin sütunlar¬n¬n Fourier dönü¸ sümüne e¸ sittir. B, önceki bölümde tan¬mlanan Fourier matrisi olmak üzere, n = 2 için
B = 1 1
1 1
dir. Bu durumda A n¬n her bir sat¬r¬n¬n Fourier dönü¸ sümü
C
1= 1 2
1 1
1 1
1
2 = 3=2
1=2 ve
C
2= 1 2
1 1
1 1
3
4 = 7=2
1=2 olmak üzere,
C = C
1TC
2T= 3=2 1=2 7=2 1=2 elde ederiz.
¸
Simdi de C nin herbir sütununun Fourier Dönü¸ sümünü elde edelim:
D
1= 1 2
1 1
1 1
3=2
7=2 = 5=2 1 ve
D
2= 1 2
1 1
1 1
1=2
1=2 = 1=2
0 yani
F
2(A) = 5=2 1=2
1 0
elde ederiz.
K a ra d e n iz Te k n ik M a t e m a t ik , e rh a n @ k tu .e d u .t r
Yukar¬daki i¸ slem k¬saca F
2(A) = 1
n
2BAB
= 1 4 BAB
= 1 4
1 1
1 1
1 2 3 4
1 1
1 1
=
5 2
1 2
1 0 olarak ta ifade edilebilir. Burada
1 2
1 2 3 4
1 1
1 1 = 3=2 1=2
7=2 1=2
çarp¬m¬, yukar¬da da elde edildi¼ gi üzere A matrisinin sat¬rlar¬n¬n Fourier dönü¸ sümünü verir. Gerçekten de her iki yan¬n transpozesini alarak,
1 2
1 1
1 1
1 3 2 4
= 1 2
1 1
1 1
1 2 + 1
2
1 1
1 1
3 4
= 3=2 7=2
1=2 1=2 elde ederiz.
Öte yandan
1 2
1 1
1 1
3=2 1=2 7=2 1=2
= 1 2
1 1
1 1
3=2 7=2 + 1
2
1 1
1 1
1=2 1=2
çarp¬m¬ise , elde edilen matrisin sütunlar¬n¬n Fourier dönü¸ sümüne e¸ sittir.
A matrisinin Ters Fourier Dönü¸ sümü ise
F
2(A)
1= BAB
biçiminde ifade edilebilir.
Örne¼ gin yukar¬da elde edilen F
2(A) n¬n ters Fourier dönü¸ sümü F
2(F
2(A))
1= BF
2(A)B
= 1 1
1 1
5 2
1 2
1 0
1 1
1 1
= 1 2
3 4 olarak elde edilir.
Yukar¬daki i¸ slemleri bu kez de
A = a b c d
matrisi için tekrarlayarak A matrisinin Fourier dönü¸ sümünü hesaplayal¬m.
Öncelikle sat¬rlar¬n Fourier dönü¸ sümlerini hesaplayal¬m:
F
1(a; b) = 1 2
1 1
1 1
a
b = 1 2
a + b a b ve
F
1(c; d) = 1 2
1 1
1 1
c
d = 1 2
c + d c d elde ederiz. Buradan
C = 1 2
a + b a b c + d c d
elde ederiz. ¸ Simdi de C nin sütunlar¬n¬n Fourier dönü¸ sümlerini elde edelim:
F
1((a + b)=2; (c + d)=2) = 1 2
1 1
1 1
(a + b)=2 (c + d)=2
= 1 4
1 1
1 1
a + b c + d
= 1 4
a + b + c + d a + b (c + d)
K a ra d e n iz Te k n ik M a t e m a t ik , e rh a n @ k tu .e d u .t r
ve benzer biçimde
F
1((a b)=2; (c d)=2) = 1 2
1 1
1 1
(a b)=2 (c d)=2
= 1 4
1 1
1 1
a b c d
= 1 4
a + c (b + d) a + d (b + c) elde ederiz. O halde
F
2(A) = 1 4
a + b + c + d a + c (b + d) a + b (c + d) a + d (b + c) elde ederiz.
¸
Simdi de yukar¬da hesaplad¬¼ g¬m¬z F
2(A) n¬n ters Fourier dönü¸ sümünü hesaplayal¬m:
F
2(F
2(A))
1= BF
2(A)B
= 1 1
1 1
1 4
a + b + c + d a + c (b + d) a + b (c + d) a + d (b + c)
1 1
1 1
= 1 4
1 1
1 1
2a + 2c 2b + 2d 2a 2c 2b 2d
= a b
c d elde ederiz.
Matris Fourier dönü¸ sümü, MATLAB/OCTAVE ortam¬nda ¤t2 fonksi- yonu yard¬m¬yla ve H¬zl¬ Fourier Algoritmas¬yla gerçekle¸ stirilir. Örne¼ gin yukar¬da verilen A matrisi için
>> ¤t2(A) ans = 10 -2 -4 0
elde ederiz. Bu sonuç yukar¬da elde etti¼ gimiz F
2(A) n¬n 4 kat¬d¬r. A
n nmatrisi için
F
2(A) = 1
n
2f f t2(A)
d¬r, fakat uygulamalarda bu farkl¬l¬k herhangi bir sorun te¸ skil etmez.
Ters Fourier dönü¸ sümü ise i¤t2 fonksiyonu ile gerçekle¸ stirilir.
Genelle¸ stirmek istersek, B : Bölüm 4.2 de (4.16) ile tan¬mlanan Fourier matrisi olmak üzere A
n nmatrisinin Fourier dönü¸ sümü
F
2(A) = 1
n
2BAB (4.19)
ve ters Fourier dönü¸ sümü ise
F
2(A)
1= BAB (4.20)
olarak ifade edilir. Bu kurallar¬f vektörü için c =
1nBf Fourier dönü¸ sümü ve f = Bc ters Fourier dönü¸ sümü ile kar¸ s¬la¸ st¬r¬n¬z).
Al¬¸ st¬rmalar 4.2.
1. f = [1 2]
T; f = [1 1 1 1]
Tvektörlerinin ayr¬k Fourier dönü¸ sümlerini (4.17) ile belirleyiniz.
2. Soru 1 de elde etti¼giniz dönü¸ sümlerinin ters Fourier dönü¸ sümlerini (4.18) belirleyiniz.
3. Soru 1 ve 2 yard¬m¬yla f nin 2 normu ve c ile gösterece¼gimiz ayr¬k Fourier dönü¸ sümünün 2 normu aras¬nda nas¬l bir ili¸ ski görüyorsunuz?
4. f = [f
0; f
1; :::; f
N 1] vektörü verilsin ve c ile de f nin ayr¬k Fourier dönü¸ sümünü gösterelim(c =
N1Bf ). Bu taktirde Parseval ba¼g¬nt¬s¬ ad¬
verilen
jjfjj
22= N jjcjj
22ba¼g¬nt¬s¬n¬n geçerli oldu¼gunu gösteriniz.
5. 2 peryotlu bir f fonksiyonunun 2 normu ile Fourier serisinin c = fc
kg
1k= 1katsay¬lar vektörünün 2 normu aras¬nda soru 4 teki gibi Parseval ba¼g¬nt¬s¬mevcuttur,
jjfjj
22= 2 jjcjj
22Yukar¬daki ba¼g¬nt¬n¬n da do¼gru oldu¼gunu ispat ediniz.
6. A¸ sa¼g¬da verilen birim vektörlerin ayr¬k Fourier dönü¸ sümlerini belir- leyiniz.
K a ra d e n iz Te k n ik M a t e m a t ik , e rh a n @ k t u .e d u .tr
(a) e
1= [1 0 0 0]
T(b) e
2= [0 1 0 0]
T(c) e
3= [0 0 1 0]
T(d) e
4= [0 0 0 1]
T7. Yukar¬da verilen Program 4.2 yard¬m¬yla a¸ sa¼g¬daki vektörlerin ayr¬k Fourier dönü¸ sümlerini hesaplay¬n¬z.
(a) f = [1]
(b) g = [1 2 3 4]
T(c) h = [2 4 6 8]
T8. Ayr¬k Fourier dönü¸ sümünün lineer bir dönü¸ süm oldu¼gunu gösteriniz:
f; g 2 C
Nve ; key… iki skaler olmak üzere F ( f + g) = F (f ) + F (g) oldu¼gunu gösteriniz.
9. Soru 8 deki lineerlik özelli¼gi ve soru 6 da elde etti¼giniz sonuçlar yard¬- m¬yla soru 7-b, 7-c deki Fourier dönü¸ sümlerini hesaplay¬n¬z.
10. Ayr¬k Fourier dönü¸ sümünün bire-bir dönü¸ süm oldu¼gunu gösteriniz, yani f; g 2 C
Nve f 6= g ise F (f) 6= F (g) oldu¼gunu gösteriniz.
11. Ayr¬k Fourier dönü¸ sümünün çekirde¼gi nedir?
(Not: çek(F ) = f 2 C
NjF (f) = 0 2 C
N)
12. Ters Fourier dönü¸ sümünü f= ifourier(c) komutu ile hesaplayan program a¸ sa¼g¬da verilmektedir.
--- function f=ifourier(c)
format rat;
N=length(c);
w=exp(2*pi*i/N); % 1 in N-inci kok W=ones(N,1);
for k=2:N
W(k)=w*W(k-1);
end
B(:,1)=ones(N,1);
B(:,2)=W;
for k=3:N
B(:,k)=W.*B(:,k-1);
end f=B*c;
---
Bu program yad¬m¬yla soru 7 de elde etti¼giniz dönü¸ sümlerin ters Fourier dönü¸ sümlerini hesaplayarak, verilen dizileri elde etti¼ginizi gözlemleyiniz.
13. A¸ sa¼g¬da verilen matrislerin Fourier Dönü¸ sümlerini (4.19) ba¼g¬nt¬s¬ ile hesaplay¬n¬z.
(a)
A = 2 1 1 2 (b)
A = 2 6 6 4
2 1 1 0
1 1 3 1
1 3 3 1
0 1 1 4
3 7 7 5
14 Soru 13 de elde etti¼giniz Fourier dönü¸ sümlerinin ters Fourier dönü¸ süm- lerini (4.20) hesaplayarak, ba¸ slang¬çtaki A matrislerini elde etti¼ginizi gözlemleyiniz.
14. Verile bir matrisin Fourier dönü¸ sümünü (4.19) ba¼g¬nt¬s¬ile hesaplayan fouriermat isimli bir program ve Ters fourier dönü¸ sümünü ise (4.20) ba¼g¬nt¬s¬ile hesaplayan ifouriermat isimli birere program haz¬rlayarak, Soru 13 ve 14 te elde etti¼giniz sonuçlar¬kontrol ediniz.
4.5 H¬zl¬Fourier Dönü¸ sümü
N bile¸ senli f vektörü için c = F (f ) =
N1Bf Fourier dönü¸ sümü, N
2adet çarpma i¸ slemi gerektirir. Pratik i¸ slemlerde çok say¬da bile¸ sene sahip f vek-
K a ra d e n iz Te k n ik M a t e m a t ik , e rh a n @ k tu .e d u .t r
törü ile birden fazla defa tekrarlanmas¬gereken bu i¸ slem a¸ s¬r¬bilgisayar za- man¬ gerektirir ve ilgili i¸ slemlerin etkinli¼ gini azalt¬r. 1967 y¬l¬nda J. Coo- ley ve J. Tukey, B matrisinin özelliklerini inceleyerek söz konusu çarpma i¸ sleminin N = 2
liçin N
2adet çarpma i¸ slemi yerine çok daha küçük olan
1
2
N l =
12N log
2(N ) adet çarpma i¸ slemi ile h¬zl¬ biçimde gerçekle¸ stirilebile- ce¼ gini göstermi¸ slerdir. B Fourier matrisi ile h¬zl¬ çarpma i¸ slemini gerçek- le¸ stiren bu algoritma H¬zl¬Fourier Algoritmas¬olarak adland¬r¬lm¬¸ st¬r. Bölüm 2 de inceledi¼ gimiz Simpleks algoritmas¬gibi bu algoritma da 20: yüzy¬l bil- imine en fazla katk¬ sa¼ glayan ilk on matematiksel algoritma aras¬nda yer almaktad¬r[1].
Bu bölümde h¬zl¬ Fourier dönü¸ sümünü ana hatlar¬yla ve k¬saca özetliy- oruz, konuyla ilgilili detayl¬bilgiler için [2] nolu referans¬önermekteyiz.
H¬zl¬Fourier algoritmas¬, B
2m 2mmatrisi ile B
m mmatrisinin elemanlar¬
aras¬ndaki a¸ sa¼ g¬daki gözlemi esas al¬r:
n = 2m için w
2n= w
m; w
m= e
2 i=mdir. Gerçekten de
w
2n= (e
2 i=n)
2= e
4 i=n= e
4 i=(2m)= e
2 i=m= w
mdir.
N = 4 için algoritmay¬inceleyelim:
w
4= e
2 i=4= i;
B
4= 2 6 6 4
1 1 1 1
1 w w
2w
31 w
2w
4w
61 w
3w
6w
93 7 7 5 =
2 6 6 4
1 1 1 1
1 i 1 i
1 1 1 1
1 i 1 i
3 7 7 5
için
c = F (f )
= 1 4 B
4f
= 1 4
2 6 6 4
1 1 1 1
1 i 1 i
1 1 1 1
1 i 1 i
3 7 7 5
2 6 6 4
f
0f
1f
2f
33 7 7 5
= 1 4
2 6 6 4
f
0+ f
1+ f
2+ f
3f
0if
1f
2+ if
3f
0f
1+ f
2f
3f
0+ if
1f
2if
33 7 7 5
elde ederiz.
N = 2 için w
2= e
2 i=2= 1;
B
2= 1 1
1 w = 1 1
1 1
dir. f
0= [f
0; f
2]; f
00= [f
1; f
3] olmak üzere f nin tek ve çift indisli terimleri ile iki alt dizi olu¸ stural¬m:
y
0= B
2f
0= 1 1
1 1
f
0f
2= f
0+ f
2f
0f
2= y
00y
10ve
y
00= B
2f
00= 1 1
1 1
f
1f
3= f
1+ f
3f
1f
3= y
000y
100olmak üzere
y
0= y
00+ (w
4)
0y
000= f
0+ f
2+ f
1+ f
3; y
1= y
10+ (w
4)
1y
001= f
0f
2i(f
1f
3) ve
y
2= y
00(w
4)
0y
000= f
0+ f
2(f
1+ f
3);
y
3= y
10(w
4)
1y
100= f
0f
2+ i(f
1f
3)
K a ra d e n iz Te k n ik M a t e m a t ik , e rh a n @ k tu .e d u .t r
olarak tan¬mlayal¬m. Bu durumda
y = 2 6 6 4
y
0y
1y
2y
33 7 7 5 =
2 6 6 4
f
0+ f
1+ f
2+ f
3f
0if
1f
2+ if
3f
0f
1+ f
2f
3f
0+ if
1f
2if
33 7 7
5 = B
4f
olup,
c = F (f ) = 1
4 B
4f = 1 4 y elde ederiz.
Yukar¬da özetlenen i¸ slemler H¬zl¬Fourier yöntemininin bir ad¬m¬n¬olu¸ s- turmaktad¬r.
Öteyandan
B
2f
0= 1 1
1 1
f
0f
2= f
0+ f
2f
0f
2i¸ sleminin çarpma i¸ slemi yapmaks¬z¬n gerçekle¸ stirilebilece¼ gine dikkat edelim:
Birinci sat¬r f
0nün bile¸ senler toplam¬, ikinci sat¬r ise bile¸ senler fark¬d¬r. Ben- zer sonuç B
2f
00için de geçerlidir.
16 adet çarpma i¸ slemi ile gerçekle¸ stirilebilen B
4f çarp¬m¬, çarpma i¸ slemi gerektirmeyen
B
2f
0= f
0+ f
2f
0f
2B
2f
00= f
1+ f
3f
1f
3ile, sadece y
0ve y
00den y nin elde edilmesi için gerekli 4 adet çarpma i¸ slemi olmak üzere toplam 4 adet çarpma i¸ slemi ile gerçekle¸ stirilmi¸ stir. Yani N
2= 16 i¸ slem ; 2
l= N = 4 için l = 2 = log
2(N ) ile
12N l =
12N log
2(N ) = 4 adet çarpma i¸ slemi ile gerçekle¸ stirilmi¸ stir.
Kelebek diagram¬ad¬verilen diagramla, yukar¬daki i¸ slemler a¸ sa¼ g¬daki gibi
¸ sematik olarak gösterilebilir:
f
0! y
00:= f
0+ f
2! y
0:= y
00+ w
40y
000% %
f
2& y
01:= f
0f
2! y
1:= y
10+ w
41y
100%
f
1y
000:= f
1+ f
3& y
2:= y
00w
40y
000%
f
3& y
001:= f
1f
3& y
3:= y
10w
41y
100Yukar¬da f nin çift ve tek indisli bile¸ senlere ayr¬ld¬¼ g¬na dikkat edelim.
Daha aç¬kça son sütundan w
4= i için,
y
0:= y
00+ y
000= f
0+ f
2+ f
1+ f
3= f
0+ f
1+ f
2+ f
3y
1:= y
01+ wy
100= f
0f
2i(f
1f
3) = f
0if
1f
2+ if
3y
2:= y
00y
000= f
0+ f
2(f
1+ f
3) = f
0f
1+ f
2f
3y
3:= y
01wy
100= f
0f
2( i)(f
1f
3) = f
0+ if
1f
2if
3elde ederiz. Buradan
y = B
4f ve
c = F (f ) = 1
4 B
4f = 1 4 y
oldu¼ gu kolayca görülür. Di¼ ger bir de¼ gimle diyagram¬n son sütunun 4 e bölümü ilk sütunda yer alan vektörün h¬zl¬Fourier dönü¸ sümüdür.
Yukar¬daki i¸ slem a¸ sa¼ g¬daki gibi genelle¸ stirilebilir:
Çift bir n = 2m için, B
nf in ilk m ve son m bile¸ seni y
j= y
j0+ w
njy
j00; j = 0; 1; :::; m 1 y
j+m= y
j0w
njy
00j; j = 0; 1; :::; m 1 ve
c = F (f ) = 1 n y dir, burada
y
0= B
mf
tek; y
00= B
mf
cif tve
f
tek= (f
1; f
3; :::; f
n 1);
f
cif t= (f
0; f
2; :::; f
n) dir.
K a ra d e n iz Te k n ik M a t e m a t ik , e rh a n @ k tu .e d u .t r
ÖRNEK 4.7. Kelebek diyagram¬ve klasik yöntem ile f = [1; 2; 3; 4] dizisinin H¬zl¬Fourier dönü¸ sümünü hesaplay¬n¬z.
Kelebek diyagram¬ile
1 ! y
00:= 1 + 3 = 4 ! y
0:= y
00+ w
40y
000= 10
% %
3 & y
10:= 2 ! y
1:= y
10+ w
41y
100= 2 + 2i
%
2 y
000:= 6 & y
2:= y
00w
40y
000= 2
%
4 & y
100:= 2 4 = 2 & y
3:= y
10w
41y
100= 2 2i için
c = F (f ) = 1 4 y = 1
4 (10; 2 + 2i; 2; 2 2i) elde ederiz.
Klasik yöntemle de
c = 1 4
2 6 6 4
1 1 1 1
1 i 1 i
1 1 1 1
1 i 1 i
3 7 7 5
2 6 6 4
1 2 3 4
3 7 7 5 =
1 4
2 6 6 4
10 2 + 2i
2 2 2i
3 7 7 5
elde ederiz.
Al¬¸ st¬rmalar 4.3.
1. f = [1; 0; 2; 1] dizisi verilsin. f nin Ayr¬k Fourier dönü¸ sümünü klasik yöntem ve
kelebek diyagram¬(h¬zl¬Fourier algoritmas¬) yard¬m¬yla hesaplay¬n¬z.
2. f = [1; 1; 0; 1] dizisi verilsin. f nin Ayr¬k Fourier dönü¸ sümünü klasik yöntem ve
kelebek diyagram¬ile hesaplay¬n¬z.
3. f = [1; 0; 2; 1; 1; 2; 3; 4] dizisi verilsin. f nin Ayr¬k Fourier dönü¸ sümünü klasik yöntem ve
kelebek diyagram¬ yard¬m¬yla hesaplay¬n¬z, bu durumda kelebek
diyagram¬üç a¸ samal¬(sütunlu) olmal¬d¬r.
¸
Sekil 4.3: S¬ras¬yla f; g ve h sinyallerinin gra…ksel gösterimi.
4.6 Ayr¬k Fourier Dönü¸ sümü Uygulamalar¬
Ayr¬k Fourier Dönü¸ sümü genellikle zamanla üretilen sonlu elemanl¬bir dizinin elemanlar¬ üzerinde frekans analizi yapmak amac¬yla gerçekle¸ stirilir. Veri içerisinde herhangi bir frekanstaki harmoni¼ gin gücü ve faz¬n¬n belirlenmesi oldukça önemlidir.
ÖRNEK 4.8. f
1= 10Hz; f
2= 40Hz frekenslar¬ile tan¬mlanan sinizoidal f (t) = sin(2 f
1t);
g(t) = sin(2 f
2t); 0 t 1 sinyalleri ve bu iki sinyalin süperpozisyonu ile olu¸ sturulan
h(t) = f (t) + g(t)
sinyalini gözönüne alal¬m. Ayr¬k Fourier ve ters Fourier dönü¸ sümü yard¬- m¬yla h(t) içerisinden f (t) ve g(t) bile¸ senlerini yakla¸ s¬k olarak ayr¬¸ st¬r¬n¬z.
¸
Sekil 4.3 (a),(b) ve (c) de s¬ras¬yla f,g ve h fonksiyonlar¬gra…ksel olarak sunulmaktad¬r.
Amac¬m¬z farkl¬frekanslara sahip ¸ Sekil 4.3 (a) ve (b) sinyallerinin toplam¬
ile olu¸ sturulan ve ¸ Sekil 4.3(c) de sunulan sinyal içerisinden (a) ve (b) sinyal- lerini tekrar elde etmektir. (c) ile gösterilen sinyalin ayr¬k Fourier dönü¸ sümünün mutlak de¼ geri ¸ Sekil 4.4 (a) da sunulmaktad¬r.
K a ra d e n iz Te k n ik M a t e m a t ik , e rh a n @ k t u .e d u .tr
¸
Sekil 4.4: Filtreleme
¸
Sekil 4.3(a) da öncelikle 10Hz ve 40Hz frekansl¬ iki sinyal görülmekte- dir. Örneklem uzunlu¼ gu 250 olan sinyalin yar¬s¬ olan 250=2 = 125Hz den büyük olan sinyallerin Ayr¬k Fourier analizi için anlam ifade etmedi¼ gi bilin- mektedir. O halde 10Hz ve 40Hz merkezli sinyallere odaklanarak sinyalin Fourier dönü¸ sümünün mutlak de¼ gerce büyük de¼ gerler ald¬¼ g¬ ve bant aral¬¼ g¬
olarak bilinen aral¬klar¬ belirlemeliyiz. 10Hz merkezli sinyal için [0; 20] ve 40Hz merkezli sinyal için ise [21; 60] Hz aral¬¼ g¬n¬yakla¸ s¬k olarak seçebiliriz.
Bu durumda hs ile h n¬n Ayr¬k Fourier dönü¸ sümünü gösterelim ve frekans bölgesinde
h1s = hs s 20 0 s > 20 ve
h2s = hs 21 s 60
0 s < 21 ve s > 60
…ltrelenmi¸ s sinyallerini tan¬mlayal¬m. h1s nin ters Fourier dönü¸ sümü ¸ Sekil 4.4(b) den görülece¼ gi üzere f sinüzoidini temsil etmekte ve ¸ Sekil 4.4(c) den görülece¼ gi üzere h2s nin ters Fourier dönü¸ sümü g sinüzoidini temsil etmek- tedir. Böylece h(t) içerisinde yer alan orjinal sinyaller iyi bir yakla¸ s¬mla elde etmi¸ s olduk.
Farkl¬frekanslara sahip sinyalleri Ayr¬k Fourier ve Ters Fourier yöntemiyle
ayr¬kla¸ st¬rd¬¼ g¬m¬z Octave program¬a¸ sa¼ g¬da verilmektedir.
--- function filtre1()
%Basit bir filtreleme, ec, Mart 2015 clf;
fs1=10;fs2=40;N=250;
Nv=0:N;
Tv=(0:N)/N;
f=sin(2*pi*fs1*Tv);
g=sin(2*pi*fs2*Tv);
h=f+g;
figure(1);
subplot(3,1,1);
plot(Tv,f);title(’(a)’);
subplot(3,1,2);
plot(Tv,g);title(’(b)’);
subplot(3,1,3);
plot(Tv,h);title(’(c)’);
hs=fft(h);
figure(2);
subplot(3,1,1);
hsmutlak=abs(hs);
plot(hsmutlak);title(’(a)’);
f1=hs.*(Nv<=20);
f2=hs.*(Nv>20 &Nv<=60);
f1ters=real(ifft(f1));
f2ters=real(ifft(f2));
subplot(3,1,2);
plot(Tv,f1ters);title(’(b)’);
subplot(3,1,3);
plot(Tv,f2ters);title(’(c)’);
--- Program 4.3: Örnek 4.8 e ait Filtreleme örne¼ gi-I
K a ra d e n iz Te k n ik M a t e m a t ik , e rh a n @ k t u .e d u .tr
ÖRNEK 4.9. A¸ sa¼g¬daki s¬ralanan ad¬mlar ile basit bir gürültü ay¬klama uygulamas¬n¬n nas¬l gerçekle¸ stirildi¼gini gözlemleyiniz.
Gürültü ay¬klama yöntemimiz k¬saca a¸ sa¼ g¬daki ad¬mlardan olu¸ smaktad¬r:
1. record komutu ile 1 saniyelik bir ses, örne¼ gin A harf sesi, F s = 8000 örneklem frekans¬ile kaydedilerek, Y vektörüne atanmaktad¬r.
2. sound komutu ile ses kaydedilmi¸ s oldu¼ gu Fs frekans¬nda dinletilmek- tedir.
3. n, Y nin uzunlu¼ gu olmak üzere gurultu = 0:2 rand(n; 1) atamas¬ile rasgele bir gürültü olu¸ sturulmaktad¬r.
4. yg = y + gurultu atamas¬yla gürültülü ses olu¸ sturuyoruz.
5. Gurultulu ses sound komutuyla dinletilmektedir.
6. Gurultulu sesin ayr¬k Fourier dönü¸ sümü hesaplanarak f yg de¼ gi¸ skenine atanmaktad¬r.
7. Gürültülü sesin ayr¬k Fourier dönü¸ sümüne …ltre uygulanmaktad¬r: kabaca, ayr¬k Fourier dönü¸ sümünün mutlak de¼ geri 12 de¼ gerine e¸ sit veya daha küçük olan indisler belirlenerek ii de¼ gi¸ skenine atanmaktad¬r.
8. f yg(ii) de¼ gerleri s¬f¬rlanmaktad¬r.
9. Filtrelenmi¸ s f yg de¼ gerlerinin ters fourier dönü¸ sümünün reel k¬sm¬f gs de¼ gi¸ skenine atanmaktad¬r.
10. f gs …ltrelenmi¸ s sesi sound komutuyla dinletilmektedir.
Uygulama:
>> …ltre2()
Enter tusuna basarak bir saniyelik ses kaydedin Enter tusuna basarak sesinizi dinleyin
Enter tusuna basarak gurultulu sesinizi dinleyin
Enter tusuna basarak …ltrelenmis sesinizi dinleyin
K a ra d e n iz Te k n ik M a t e m a t ik , e rh a n @ k tu .e d u .t r
--- function filtre2()
% Basit bir filtreleme, ec, Nisan, 2018 Fs=8000;
a=input(’Enter tusuna basarak bir saniyelik ses kaydedin’);
y=record(1,Fs);N=length(y);M=round(N/4);Mv=1:M;
a=input(’Enter tusuna basarak sesinizi dinleyin’);
sound(y,Fs);
n=length(y);
gurultu=0.2*rand(n,1);
yg=y+gurultu;
a=input(’Enter tusuna basarak gurultulu sesinizi dinleyin’);
sound(yg, Fs);
fyg=fft(yg);
ii=find(abs(fyg)<=12);
fyg(ii)=0;
fgs=real(ifft(fyg));
a=input(’Enter tusuna basarak filtrelenmis sesinizi dinleyin’);
sound(fgs,Fs);
figure(1)
subplot(2,1,1);
plot(y(Mv));axis([ 1 M -0.5 0.5]);
xlabel(’ses ’);set(gca,’XTickLabel’,’’); hold on;
subplot(2,1,2);
plot(abs(fft(y(Mv))));
xlabel(’sesin fft sinin mutlak degeri’);
set(gca,’XTickLabel’,’’);set(gca,’XTickLabel’,’’);hold on;
figure(2);
subplot(2,1,1);plot(gurultu(Mv));hold on;
xlabel(’gurultu’);set(gca,’XTickLabel’,’’);
subplot(2,1,2);plot(abs(fft(gurultu)));
xlabel(’gurultunun fft sinin mutlak degeri’);
hold on;set(gca,’XTickLabel’,’’);
figure(3);
subplot(2,1,1);plot(yg(Mv));xlabel(’gurultulu ses’); hold on;
set(gca,’XTickLabel’,’’);
subplot(2,1,2);plot(fgs(Mv));axis([ 1 M -0.5 0.5]);
xlabel(’filtrelenmis ses’); hold on;set(gca,’XTickLabel’,’’);
---
K a ra d e n iz Te k n ik M a t e m a t ik , e rh a n @ k tu .e d u .t r
Al¬¸ st¬rmalar 4.4.
1. Örnek 4.8 için verilen program¬ veya biraz daha de¼gi¸ sik olarak a¸ sa¼g¬da verilen program¬ referans alarak, seçece¼giniz frekanslardaki iki sinyalin toplam¬olarak ifade edilen sinyalden, ilgili bile¸ senleri Ayr¬k Fourier ve Ters Fourier dönü¸ sümü yard¬m¬yla elde ediniz.
2. Örnek 4.9 için verilen program¬kaydedece¼giniz birer saniyelik sesler ile test ediniz.
3. Yukar¬da verilen fourier program¬ve MATLAB/OCTAVE ¤t program¬n¬n h¬z¬n¬artan uzunluklara sahip rand komutuyla olu¸ sturulan f dizileri ile test yap¬n¬z. Küçük boyutlu ve büyük boyutlu dizilerde her iki program¬n sonuçlar¬n¬elde ederken harcad¬klar¬zaman¬kar¸ s¬la¸ st¬r¬n¬z. Ne gözlem- liyorsunuz?
K a ra d e n iz Te k n ik M a t e m a t ik , e rh a n @ k t u .e d u .tr