vnlab - tfzr - · pdf filefurijeova transformacija (dft) obavlja prebacivanje signala iz...
TRANSCRIPT
CommLab 07 2012/2013 (21.10.2012)
Tehniki fakultet Mihajlo Pupin - Zrenjanin
CommLab
07
Furijeove transformacije
Cilj vebe Cilj vebe je upoznavanje sa Furijeovim transformacijama. Poznato je da se svaki periodian ili aperiodian signal moe razloiti na sumu sinusoidalnih komponenti ije se uestanosti razlikuju ili za konaan iznos kao to je to sluaj kod periodinih signala ili za beskonano mali iznos kao kod aperiodinih signala. Postupak izdvajanja harmonijskih komponenti iz sloenog signala se naziva i spektralna ili harmonijska analiza signala. Diskretna Furijeova transformacija (DFT) obavlja prebacivanje signala iz vremenskog u spektralni domen. Primena Diskretne Furijeove transformacije u digitalnoj obradi signala je velika. Pre svega, DFT se koristi kao neophodan alat u spektralnoj analizi signala. Drugo, DFT omoguava efikasno izvoenje filtriranja u frekvencijskom domenu. Znaaj Diskretne Furijeove transformacije u digitalnoj obradi signala potie od toga to postoje veoma efikasni algoritmi za izraunavanje DFT. Brza Furijeova transformacija (engl. Fast Fourier transformation; esto se oznaava kao FFT) je algoritam za "brzo" izraunavanje vrednosti diskretne Furijeove transformacije. Ubrzanje u odnosu na uobiajen postupak izraunavanja diskretne Furijeove transformacije postie se izbegavanjem ponovnog izraunavanja izraza koji se meusobno negiraju. Algoritam se pripisuje Dejmsu V. Kuliju (James W. Cooley) i Donu V. Tukiju (John W. Tukey) koji su ga objavili 1965. godine. Meutim, Karl Fridrih Gaus ga je razvio ve 1805. da bi izraunao putanju asteroida Palas i Juno. Pri tom su mnoge verzije razvijene i pre Kulijeve i Tukijeve varijante. Posle su se pojavila mnoga poboljanja i varijacije.
Zadatak 7.1. Prikazati signale :
)2cos(2)( 1 tftx
)2cos(2)()( 2 tftxty
u vremenskom i frekvencijskom domenu. Ako je 2T , T
f1
1 , 202 f , 4
, a vremenski
interval je: t=0:.001:5;
Reenje 7.1. clc; close all; clear all;
Generisanje signala x(t)
t=0:.001:5; T=2; f1=1/T
CommLab 07 2012/2013 (21.10.2012)
Tehniki fakultet Mihajlo Pupin - Zrenjanin
phi=pi/4; x=2*cos(2*pi*f1*t+phi);
Proraun FFT % diskretna furijeova trasformacija vektora x f_dom1=fft(x);
% pomera nultu komponentu frekvencije u centar spektra f_dom1=fftshift(f_dom1);
Generisanje signala y(t) f2=...; y=...;
Proraun FFT za signal y(t) f_dom2=...; f_dom2=...;
Crtanje prvog signala figure; subplot(2,1,1); plot(t,x); xlabel('vreme-->'); ylabel('amplituda-->'); title('Talasni oblik');
subplot(2,1,2); plot(abs(f_dom1)); xlabel('frekvencija-->'); ylabel('amplituda-->'); title('Amplitudni spektar');
Crtanje drugog signala. .... Dovriti zadatak i uporediti sa dobijenim grafikonima u rezultatu.
Rezultat 7.1. Ako je zadatak dobro uraen potrebno je da se dobiju grafikoni kao na slici.
CommLab 07 2012/2013 (21.10.2012)
Tehniki fakultet Mihajlo Pupin - Zrenjanin
Slika 7.4. a) Vremenski i frekvencijski domen signala x(t)
Slika 7.4. b) Vremenski i frekvencijski domen signala y(t)
Zadatak 7.2. Matlab i FFT FFT funkcija u programskom paketu Matlab je efikasan alat za proraun diskretne Furijeove transformacije signala. Skript koji sledi e pomoi u razumevanju upotrebe FFT funkcije u Matlab-u. Primer 1. Tipina sintaksa za proraun FFT signala je FFT(x,N) gde je x signal x(n) koji se transformie a N je broj taaka u FFT transformaciji. N mora biti isti ili vei od broja uzoraka u signalu x(n). Da bi se
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5-2
-1
0
1
2
vreme-->
am
plit
uda--
>
Talasni oblik signala
0 1000 2000 3000 4000 5000 60000
1000
2000
3000
4000
frekvencija-->
am
plit
uda--
>
Amplitudni spektar
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5-2
-1
0
1
2
vreme-->
am
plit
uda--
>
Talasni oblik signala
0 1000 2000 3000 4000 5000 60000
500
1000
1500
2000
frekvencija-->
am
plit
uda--
>
Amplitudni spektar
CommLab 07 2012/2013 (21.10.2012)
Tehniki fakultet Mihajlo Pupin - Zrenjanin
demonstrirala promena vrednosti parametra N izvrie se transformacija signala sa 30 uzoraka (n = [0:29]) i sa po 10 uzoraka po periodi (/20). n = [0:29];
x = cos(2*pi*n/10);
Definisae se 3 razliite vrednosti za N. Zatim e se izvriti transformacija signala x(n) za svaku od 3 definisane vrednosti. Funkcija abs pronalazi magnitudu transformacije. N1 = 64;
N2 = 128;
N3 = 256;
X1 = abs(fft(x,N1));
X2 = abs(fft(x,N2));
X3 = abs(fft(x,N3));
Skala frekvencije poinje sa 0 i zavrava se sa N-1 za FFT sa N taaka. Normalizacija skale se vri tako da bude u rasponu od 0 do 1-1/N. F1 = [0 : N1 - 1]/N1;
F2 = [0 : N2 - 1]/N2;
F3 = [0 : N3 - 1]/N3;
Sada je potrebno nacrtati grafik svake transformacije. subplot(3,1,1)
plot(F1,X1);
title('N = 64');
axis([0 1 0 20])
subplot(3,1,2)
plot(F2,X2);
title('N = 128');
axis([0 1 0 20]);
subplot(3,1,3)
plot(F3,X3);
title('N = 256');
axis([0 1 0 20])
Napomena: naredba plot u ovom obliku pored vrednosti koje se prikazuju na x i y osi i definie naslov grafikona (title) i raspon vrednosti na x i y osi naredbom axis (x ima raspon od 0 do 1, a y od 0 do 20). Posle analize grafikona moe se videti da je svaka transformacija istog oblika sa razlikom u broju uzoraka koji su koieni za aproksimaciju tog oblika. Proveriti kakav bi bio rezultat da N1 ima vrednost 30 (kao broj uzoraka n)
CommLab 07 2012/2013 (21.10.2012)
Tehniki fakultet Mihajlo Pupin - Zrenjanin
Reenje 7.2.
Zadatak 7.3. Spektralna analiza FFT i Matlab-om FFT ne daje direktno prikaz spektra signala. U prethodnom primeru se vidi da se primena FFT-a razlikuje u zavisnosti od vrednosti N. FFT sadri informacije u opsegu izmeu 0 i fs, a frekvencija odabiranja mora biti dva puta vea od najvie frekventne komponente. Spektar signala bi tako
trebao biti ispod
2 Nikvistova frekvencija. Takoe je umesto prikaza signala izmeu 0 i fs
potrebno prikazati signal u rasponu od
2 do
2. To se postie upotrebom Matlab funkcije fftshift.
n = [0:149];
x1 = cos(2*pi*n/10);
N = 2048;
X = abs(fft(x1,N));
X = fftshift(X);
F = [-N/2:N/2-1]/N;
plot(F,X),
xlabel('frequency / fs')
Reenje 7.3.
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 10
10
20N = 64
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 10
10
20N = 128
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 10
10
20N = 256
-0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.50
10
20
30
40
50
60
70
80
frequency / fs
CommLab 07 2012/2013 (21.10.2012)
Tehniki fakultet Mihajlo Pupin - Zrenjanin
Zadatak 7.4. Dat je signal
= sin(2 ) Frekvencija odabiranja je fs = 150 Hz, frekvencija signala f=5 Hz, broj taaka za FFT je 1024. FFT se vri sledeim setom naredbi: % Izvrsiti FFT X = fft(x,nfft); % FFT je simetricna, prikazati samo jednu polovinu X = X(1:nfft/2); % Magnituda FFT od signala x mx = abs(X); % Vektor frekvencije f = (0:nfft/2-1)*Fs/nfft;
Prikazati signal i njegov spektar.
Reenje 7.4.
Zadatak 7.5. Dat je signal
= cos(2 + )
Za =1
3 i podatke iste kao u prethodnom zadatku prikazati signal i njegov spektar.
Reenje 7.5.
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1Sine Wave Signal
Time (s)
Am
plit
ude
0 10 20 30 40 50 60 70 800
10
20
30
40
50
60
70
80Power Spectrum of a Sine Wave
Frequency (Hz)
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1Sine Wave Signal
Time (s)
Am
plit
ude
0 10 20 30 40 50 60 70 800
10
20
30
40
50
60
70
80Power Spectrum of a Sine Wave
Frequency (Hz)
Pow
er
CommLab 07 2012/2013 (21.10.2012)
Tehniki fakultet Mihajlo Pupin - Zrenjanin
Zadatak 7.6. Uobiajena upotreba furijeove transformacije je za pronalaenje frekvencijskih komponenti koje su skrivene u signalu sa umom koji je prikazan u vremenskom domenu. Signal se uzorkuje na 1000 Hz. A signal x(t) sadri sinusoidu od 50 Hz sa amplitudom 0.7 i sinusoidu od 120 Hz sa amplitudom 1. Signal x(t) je izoblien umom sluajne vrednosti i tako nastaje signal y(t):
= 0.7 sin 250 + sin(2120) close all; clear all; clc;
Generisanje signala se vri na sledei nain:
Fs = 1000; % Frekvencija odabiranja - Sampling frequency T = 1/Fs; % Vreme odabiranja - Sample time L = 1000; % Duzina signala - Length of signal t = (0:L-1)*T; % Vektor vremena - Time vector
% Signal
x = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t);
a dodavanje uma se vri na sledei nain:
y = x + 2*randn(size(t)); % Signal sa sumom
Po zavretku generisanja signala i uma, signal se prikazuje na grafikonu.
plot(Fs*t(1:50),y(1:50)); title('Signal Corrupted with Zero-Mean Random Noise'); xlabel('time (milliseconds)');-
Posmatrajui signal izoblien umom, teko je identifikovati frekv