ΨΗΦΙΑΚΗ ΕΠΕΞΕΡΓΑΣΙΑ ΣΗΜΑΤΟΣ ΑΣΚΗΣΗ 3 Διακριτός Μετασχηματισμός Fourier (DFT) Ο διακριτός μετασχηματισμός Fourier (DFT) αποτελεί το βασικό εργαλείο της Σχετικές εντολές του Matlab: fft, abs, rand, randn, fftshift, angle, unwrap, ifft. ψηφιακής επεξεργασίας σήματος. Η θεμελίωση του Signal Processing Toolbox είναι ο γρήγορος μετασχηματισμός Fourier (FFT), μια μέθοδος υπολογισμού του DFT με ελαττωμένο χρόνο εκτέλεσης. Πολλές συναρτήσεις (όπως η απόκριση συχνότητας στο z-domain, η φασματική ανάλυση και υλοποιήσεις φίλτρων) ενσωματώνουν το FFT. Μετασχηματισμός Fourier (FT): X t xc t e dt Συνεχούς χρόνου FT, CTFT X e x k e k Διακριτού χρόνου FT, CTFT N 1 2 kn N X n x k e, 0,1,, N 1 0 n, Διακριτός FT, DFT όπου x(k) είναι το δειγματοληπτημένο σήμα του x c (t). Γραφική Αναπαράσταση: 1
Στο Matlab, ο DFT μπορεί να υπολογιστεί χρησιμοποιώντας την εντολή fft. Ο υπολογισμός του FFT δεν σχετίζεται με τη συχνότητα δειγματοληψίας, αλλά είναι από 0 ((N-1)/N)*2pi, όπου pi αναφέρεται στo μισό ρυθμό δειγματοληψίας. Για την αναπαράσταση, πρέπει να δημιουργήσετε το διάνυσμα των σημείων συχνότητας. Το εύρος της συχνότητας F o εξαρτάται από τη συχνότητα δειγματοληψίας και το μήκος του (διανυσματικού) σήματος. Για πραγματικά σήματα, όλη η πληροφορία βρίσκεται μεταξύ 0 F s /2. A1. ΕΥΡΕΣΗ ΤΟΥ DFT ΣΕ ΑΠΛΑ ΣΗΜΑΤΑ. α. Να δημιουργηθεί ένα ημιτονικό σήμα 50 Hz, χρησιμοποιώντας τις παρακάτω εντολές: >> Fs=500; % Sampling frequency = 10*50Hz >> Ts=1/Fs; % Sampling interval >> t=0:ts:0.1; % Sampling time instants [s] >> x=sin(2*pi*50*t); % Signal vector >> plot(t,x) % Plot in time domain Να υπολογιστεί ο DFT, χρησιμοποιώντας τις εντολές: 2
>> Fx=fft(x); % DFT of x, saved to Fx >> Nx=length(x); >> figure, plot(abs(fx)); Για σωστότερη αναπαράσταση του σήματος, χρησιμοποιήστε: >> figure, plot([1:51]/50,abs(fx)); Μπορείτε επίσης να αναπαραστήσετε το DFT του σήματος, βάσει της συχνότητας δειγματοληψίας: >> Fo=1/(Ts*Nx); % Frequency resolution >> freq=0:fo:(nx-1)*fo; %Frequency Axis >> plot(freq,abs(fx)) %Amplitude Spectrum β. Να δημιουργηθεί ένα ομοιόμορφα κατανεμημένο ([0,1]) τυχαίο σήμα (θόρυβος) 100-σημείων, με χρήση της εντολής rand, και να βρεθεί ο DFT. Nα γίνει μετατόπιση του μετασχηματισμένου σήματος χρησιμοποιώντας την εντολή fftshift. Η εντολή αυτή επανα-τοποθετεί την έξοδο του fft, μετακινώντας το στοιχείο μηδενικής συχνότητας στο κέντρο του φάσματος, το οποίο μερικές φορές είναι πιο πρακτικός τρόπος αναπαράστασης. >> r=rand(100,1); figure, plot(r); >> Fr=fft(r); >> F=fftshift(Fr); %figure, plot(abs(f)); >> Nx=length(r); >> n=-(nx-1)/2:(nx-1)/2; >> figure, plot(n,abs(f)) Τι παρατηρείτε; γ. Ομοίως για θόρυβο κανονικής κατανομής 100-σημείων (με χρήση της εντολής randn). δ. Χρησιμοποιήστε το ημίτονικό σήμα της διαδικασίας Α1(α). Προσθέστε στο σήμα θόρυβο ομοιόμορφης κατανομής. Βρείτε το DFT του σήματος. Επιπλέον, το μέτρο του μετασχηματισμένου σήματος να απεικονισθεί σε db. plot(n,20*log10(abs(f))) 3
A2. ΥΠΟΛΟΓΙΣΜΟΣ ΤΟΥ ΜΕΤΡΟΥ ΚΑΙ ΤΗΣ ΦΑΣΗΣ ΕΝΟΣ ΣΗΜΑΤΟΣ α. Δημιουργήστε ένα σήμα 100 σημείων, ως άθροισμα δύο ημιτονικών σημάτων διαφορετικής συχνότητας, χρησιμοποιώντας τις παρακάτω εντολές: >> t=0:1/99:1; >> x=sin(2*pi*15*t)+sin(2*pi*40*t); >> figure, plot(t,x); β. Υπολογίστε το DFT του σήματος και βρείτε το μέτρο και τη φάση της μετασχηματισμένης σειράς, χρησιμοποιώντας τις εντολές: >> y=fft(x); >> m=abs(y); % magnitude >> N=length(y); >> f=(0:n-1); >> figure, plot(f,m); >> p=unwrap(angle(y)); % phase >> figure, plot(f,p*180/pi); Τι παρατηρείτε; Γιατί κάνουμε unwrap στη φάση του σήματος; A3. ΕΥΘΥΣ ΚΑΙ ΑΝΤΙΣΤΡΟΦΟΣ DFT Ο αντίστροφος μετασχηματισμός Fourier (IDFT), πραγματοποιείται με την εντολή ifft. Ομοίως, δέχεται μια αλληλουχία εισόδου και προαιρετικά τον αριθμό των επιθυμητών δειγμάτων για το μετασχηματισμό. Δοκιμάστε το παρακάτω παράδειγμα και παρατηρήστε το αρχικό σήμα και το ανασυγκροτημένο σήμα. Τι παρατηρείτε; >> t=0:1/255:1; >> x=sin(2*pi*120*t); >> figure, plot(t,x); >> y=fft(x); figure, plot(t,abs(y)); >> r=real(ifft(y)); >> figure, plot(t,r); 4
5