A gyakorlat célja a fehér és a színes zaj bemutatása. 1.@. FFT begyakorlása n = [:9]; % Harminc minta x = cos(*pi*n/1); % 1 mintát veszünk periodusonként N1 = 64; % Három módon számoljuk az FFT-t N = 18; N3 = 56; X1 = abs(fft(x,n1)); X = abs(fft(x,n)); X3 = abs(fft(x,n3)); F1 = [ : N1-1]/N1; % A frekvencia normalizálása tól 1 1/N ig. F = [ : N - 1]/N; F3 = [ : N3-1]/N3; subplot(3,1,1) plot(f1,x1,'-x'),title('n = 64'),axis([ 1 ]) subplot(3,1,) plot(f,x,'-x'),title('n = 18'),axis([ 1 ]) subplot(3,1,3) plot(f3,x3,'-x'),title('n = 56'),axis([ 1 ]) Ha kirajzoltatjuk a spektrumokat, akkor a következő eredményeket kapjuk: N = 64 15 1 5.1..3.4.5.6.7.8.9 1 N = 18 15 1 5.1..3.4.5.6.7.8.9 1 N = 56 15 1 5.1..3.4.5.6.7.8.9 1 Látható, hogy a frekvenciákat normalizáltuk és 1 közé. A spektrumon két csúcs jelent meg a.1-nél és a.9-nél. Ez a cosinus jel frekvenciájának felel meg (1/1). A jelünk, aminek a spektrumát ábrázoltuk tehát tartalmaz harmonikus összetevőket. Gyakorlat_11 1
Azt is látjuk, hogy függetlenül attól, hogy 64, 18, 56 mintát veszünk, frekvenciatartományban a spektrumok nagyon hasonlítanak. Nézzük, meg mi történik akkor, ha a frekvencia tartománybeli mintavételezések száma megegyezik az időtartománybeli mintavételezések számával, tehát a N=3. Ekkor a következőeket kell, megadjuk: n = [:9]; x = cos(*pi*n/1); % N = 3; X = abs(fft(x,n)); F = [ : N - 1]/N; plot(f,x,'-x'),title('n = 3'),axis([ 1 ]); A kapott eredmény pedig a következő: N = 3 18 16 14 1 1 8 6 4.1..3.4.5.6.7.8.9 1.@. Vizsgáljunk meg különböző hosszúságú idősorokat n = [:9]; x1 = cos(*pi*n/1); % 3 periódus x = [x1 x1]; % 6 periódus x3 = [x1 x1 x1]; % 9 periódus N = 48; X1 = abs(fft(x1,n)); X = abs(fft(x,n)); X3 = abs(fft(x3,n)); F = [:N-1]/N; subplot(3,1,1) plot(f,x1),title('3 periods'),axis([ 1 5]) subplot(3,1,) plot(f,x),title('6 periods'),axis([ 1 5]) Gyakorlat_11
subplot(3,1,3) plot(f,x3),title('9 periods'),axis([ 1 5]) Ha kirajzoltatjuk a spektrumokat, akkor a következő eredményeket kapjuk: 5 3 periods.1..3.4.5.6.7.8.9 1 5 6 periods.1..3.4.5.6.7.8.9 1 5 9 periods.1..3.4.5.6.7.8.9 1 Nézzük meg azt is, hogy mi történik, ha 9 periódust tartalmaz a jel: x1 = cos(*pi*n/1); % 3 periódus x = [x1 x1]; % 6 periódus x3 = [x1 x1 x1]; % 9 periódus x4 = [x3 x3 x3 x3 x3 x3 x3 x3 x3 x3]; % 9 periódus N = 48; X = abs(fft(x4,n)); F = [:N-1]/N; plot(f,x),title('9 periods'),axis([ 1 5]) Ekkor a következő eredményt kapjuk: 5 9 periods 45 4 35 3 5 15 1 5.1..3.4.5.6.7.8.9 1 Gyakorlat_11 3
Itt lényegében különböző hosszúságú idősorokat figyelünk. Az ablak, amin keresztül figyeljük a coszinusz jelet az egyre nagyobb. Az ablakozás pedig lényegében egy négyszögjellel való szorzást jelent. A négyszögjel Fourier transzformáltja a sinc() jel. A coszinusz jel Fourier transzformáltja a coszinusz jel frekvenciájánál lévő Dirac-impulzus. Tehát minél nagyobb az ablak, annál jobban érvényesül a coszinusz jel Fourier transzformáltja, és annál kevésbé a négyszögjel Fourier transzformáltja. Egyre jobban egy Dirac-impulzusra fog hasonlítani a Fourier transzformált és nem pedig egy sinc() jelre. Ha tehát időben meghosszabbítom a sort, akkor jobb minőségű Fourier transzformációt tudok végezni. A frekvencia tartományban vett minták száma viszont jelentősen nem változtatja meg a Fourier transzformáció eredményét. 3.@. Most vizsgáljunk a jel matematikai spektrumát. Egy valós matematikai spektruma f S f S től + ig terjed és páros. n = [:149]; x1 = cos(*pi*n/1); N = 48; X = abs(fft(x1,n)); X = fftshift(x); F = [-N/:N/-1]/N; plot(f,x), xlabel('frequency / f s') Ha kirajzoltatjuk a spektrumot akkor a következőt kapjuk: 8 7 6 5 4 3 1 -.5 -.4 -.3 -. -.1.1..3.4.5 frequency / f s Módosítsuk úgy az ábrát, hogy a két csúcs ne a.1-nél és a -.1-nél hanem a.-nél és a -.-nél legyen. Gyakorlat_11 4
n = [:149]; x1 = cos(**pi*n/1); N = 48; X = abs(fft(x1,n)); X = fftshift(x); F = [-N/:N/-1]/N; plot(f,x), xlabel('frequency / f s') Ekkor az alábbi spektrumot kapjuk: 8 7 6 5 4 3 1 -.5 -.4 -.3 -. -.1.1..3.4.5 frequency / f s Alakítsuk át ezt a spektrumot fizikai spektrummá: n = [:149]; x1 = cos(**pi*n/1); N = 48; X =* abs(fft(x1,n)); F = [:N-1]/N; plot(f(1:n/),x(1:n/)),xlabel('frequency / f s') Ekkor a következő jelet kapjuk: Gyakorlat_11 5
15 1 5.5.1.15..5.3.35.4.45.5 frequency / f s Látjuk, hogy a frekvenciatartomány pozitív része értelmezett, és hogy a spektrum kétszer nagyobb értékű az egyes frekvenciákon mint a matematikai spektrum esetében. Így az egyes frekvenciákon levő összetevők energiája nem változik. 4.@. Zaj generálása. Normális eloszlás vagy Gauss-eloszlás. Azt, hogy az X valószínűségi változó normális eloszlást követ, a következő módon szoktuk jelölni: X Ν( m, σ ), ahol m a középértéket, σ pedig a szórás négyzetét jelöli. A hozzá tartozó sűrűségfüggvény: f ( x) ( x m) 1 σ = e. σ π Speciálisan, ha X Ν(,1), akkor X-et standard normális eloszlásúnak (vagy sztenderd normális eloszlásúnak) nevezzük. N=14; % Define Number of samples R1=randn(1,N); % Generate Normal Random Numbers R=rand(1,N); % Generate Uniformly Random Numbers figure(1); % Select the figure subplot(,,1); % Subdivide the figure into 4 quadrants plot(r1); % Plot R1 in the first quadrant title('normal [Gaussian] Distributed Random Signal'); ylabel('amplitude'); subplot(,,); % Select the second qudrant hist(r1); % Plot the histogram of R1 title('histogram [Pdf] of a normal Random Signal'); ylabel('total'); Gyakorlat_11 6
subplot(,,3); plot(r); title('uniformly Distributed Random Signal'); ylabel('amplitude'); subplot(,,4); hist(r); title('histogram [Pdf] of a uniformly Random Signal'); ylabel('total'); A színes és a fehér zaj kirajzoltatása, illetve a színes és a fehér zaj hisztogramjának kirajzoltatása: 4 Normal [Gaussian] Distributed Random Signal 3 Histogram [Pdf] of a normal Random Signal 3 5 1 Amplitude Total 15-1 1 - -3 5-4 4 6 8 1 1-4 -3 - -1 1 3 4 1 Uniformly Distributed Random Signal 1 Histogram [Pdf] of a uniformly Random Signal.9.8 1.7 8 Amplitude.6.5.4.3 Total 6 4..1 4 6 8 1 1.1..3.4.5.6.7.8.9 1 Az első sorban az látható, hogy Gauss-os eloszlású a hisztogram, tehát bizonyos (a frekvenciához tartozó amplitúdó, az egyenáramú komponens) amplitúdók többször szerepelnek a jelben. Az alsó sorban, pedig egy egyenletes eloszlású hisztogram látható, tehát az egyes amplitúdók nagyjából azonos számban szerepelnek, a jelben. Ezeknek a jeleknek keressük meg a Fourier transzformáltját: N=14; % Define Number of samples R1=randn(1,N); % Generate Normal Random Numbers R=rand(1,N); % Generate Uniformly Random Numbers figure(1); % Select the figure Gyakorlat_11 7
subplot(,3,1); % Subdivide the figure into 4 quadrants plot(r1); % Plot R1 in the first quadrant title('normal [Gaussian] Distributed Random Signal'); ylabel('amplitude'); subplot(,3,); % Select the second qudrant hist(r1); % Plot the histogram of R1 title('histogram [Pdf] of a normal Random Signal'); ylabel('total'); subplot(,3,4); plot(r); title('uniformly Distributed Random Signal'); ylabel('amplitude'); subplot(,3,5); hist(r); title('histogram [Pdf] of a uniformly Random Signal'); ylabel('total'); N = 48; X1 = abs(fft(r1,n)); X1 = fftshift(x1); F = [-N/:N/-1]/N; subplot(,3,6),plot(f,x1),xlabel('frequency / f s') Ki is rajzoljuk ezt a spektrumot X = abs(fft(r,n)); X = fftshift(x); F = [-N/:N/-1]/N; subplot(,3,3),plot(f(14-1:14+1),x(14-1:14+1)),xlabel('frequency / f s') A kapott eredmény a következő: Gyakorlat_11 8
4 Normal [Gaussian] Distributed Random Signal 3 Histogram [Pdf] of a normal Random Signal 6 3 5 5 1 4 Amplitude Total 15 3-1 1 - -3 5 1-4 4 6 8 1 1-4 -3 - -1 1 3 4 -.5.5 frequency / f s 1 Uniformly Distributed Random Signal 1 Histogram [Pdf] of a uniformly Random Signal 9.9 8.8 1 7.7 8 6 Amplitude.6.5.4 Total 6 5 4.3 4 3..1 1 4 6 8 1 1..4.6.8 1 -.5.5 frequency / f s Az első sorban az látható, hogy legnagyobb amplitúdóval a frekvenciájú egyenáramú komponens szerepel, ahogy azt vártuk is, míg a második sorban azt látjuk, hogy minden frekvencia szerepel valamekkora amplitúdóval. 5.@. http://diag.duf.hu/file/iaea/ A következő feladat, hogy ezt a linket megnyitjuk és letöltjük a 1N_111_1814.meres file-t. Van egy nagy csővezeték. Emellé leteszünk mikrofonokat, a mikrofonok folyamatosan veszik a csővezetékből érkező hangokat. Ha valami elkezdi ütögetni a csövet a kérdés az, hogy mi és hol ütögeti ezt a csövet. Például egy baltával ütögeti valaki, vagy gumikalapáccsal, vagy pedig csak valaki belerúgott, esetleg egy elszabadult anyacsavar halad a csőben. El kell dönteni, hogy veszélyes-e a hang, amit hallunk, vagy nem, és ha veszélyes, akkor honnan jön a hang a csővezetékből. Ennek a feladatnak a megoldásához vannak laboratóriumi felvételek. Ezeket tudjuk meghallgatni a következő képen: [y, t, dt, info]=beolvas wavplay(y(:,1),1/dt) A hangjel Fourier transzformáltját a következő képen képezhetjük: N=48; X=abs(fft(y(:,1),N)); X=fftshift(X); F=[-N/:N/-1]/N;; plot(f,x); Ekkor a következő kimenetet kapjuk: Gyakorlat_11 9
5 15 1 5 -.5 -.4 -.3 -. -.1.1..3.4.5 A beolvas függvény a pub/jelekesrendszerek mappában található. Természetesen a beolvas függvényt és a *.meres file-t be kell másolni a munkakönyvtárba. Gyakorlat_11 1