ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Τµήµα Επιστήµης Υπολογιστών HY-370: Ψηφιακή Επεξεργασία Σήµατος Χειµερινό Εξάµηνο 207 ιδάσκοντες : Γ. Στυλιανού - Γ. Καφεντζής Πέµπτο Εργαστήριο Σηµείωση : Για ϐοήθεια σχετικά µε τις εντολές MATLAB, γράψτε doc/help εντολή. Ασκηση - Τεχνητή Αντήχηση Εχουµε δει ότι τα συστήµατα all-pass δε µεταβάλλουν το ϕάσµα πλάτους της εισόδου αλλά επιφέρουν µόνο µια αλλαγή στη ϕάση της. Αυτή η ιδιότητα των all-pass συστηµάτων έχει πολλές εφαρµογές µεταξύ των οποίων και αυτής σε συστήµατα δηµιουργίας τεχνητής αντήχησης (reverberation) σε ηχογραφήσεις. Η πρόσθεση αντήχησης µας δίνει την αίσθηση ότι ένα µουσικό κοµµάτι έχει παιχτεί σε µεγάλη αίθουσα. Συνήθως χρησιµοποιούµε αρκετά all-pass συστήµατα που έχουν συνδεθεί σε σειρά. Τα all-pass συστήµατα που χρησιµοποιούνται έχουν τη µορφή H ap (z) = z m a az m () i. Κάντε το διάγραµµα πόλων-µηδενικών του ϕίλτρου, µε χρήση της συνάρτησης zplane για a = 0.7 και a = 0.7, µε m = 0. Γράψτε doc signal/zplane για να δείτε πως συντάσσεται η παραπάνω συνάρτηση. Παραδώστε στην αναφορά σας το διάγραµµα πόλων-µηδενικών. ii. ηµιουργήστε τεχνητή αντήχηση στο µουσικό κοµµάτι music.wav που σας δίνεται µε χρήση δυο all-pass συστηµάτων σε σειρά. Φορτώστε το σήµα στο MATLAB, ακούστε το, και περάστε το µέσα από ένα ϕίλτρο που υλοποιεί το πρώτο all-pass σύστηµα µε τιµές a = 0.8 και m = 000. Ακούστε το αποτέλεσµα. Περάστε το σήµα που αποκτήσατε µέσα από ένα δεύτερο ϕίλτρο που υλοποιεί το δεύτερο all-pass σύστηµα µε τιµές a 2 = 0.7 και m 2 = 2500. Παραδώστε πλήρη κώδικα που εκτελεί την εφαρµογή αντήχησης. Ασκηση 2 - Σχεδίαση Φίλτρων Στις διαλέξεις είδατε δυο διαφορετικούς τρόπους µε τους οποίους µπορείτε να υλοποιήσετε ψηφιακά ϕίλτρα από προδιαγραφές που σας δίνονται (ή που ορίζετε εσείς), χρησµοποιώντας γνώσεις από τη σχεδίαση ϕίλτρων στο συνεχή χρόνο. Εδώ ϑα υλοποιήσουµε αυτά τα ϕίλτρα τόσο µε αναλυτικό όσο και µε σύντοµο τρόπο, και ϑα εφαρµόσουµε σήµατα ϕωνής στην είσοδό τους, ώστε να ακούσουµε το αποτέλεσµα που αυτά παράγουν. I. Impulse Invariance Butterworth Filter Η τεχνική του Impulse Invariance (II) περιγράφει το πως από ένα ϕίλτρο συνεχούς χρόνου h c (t) µπορεί κανείς να υλοποιήσει το αντίστοιχο διακριτού χρόνου h[n], απλά δειγµατοληπτώντας την κρουστική του απόκριση ϕίλτρου συνεχούς χρόνου h c (t). Αν η συνάρτηση µεταφοράς στο χώρο του Laplace που περιγράφει ένα ϕίλτρο h c (t) δίνεται ως H c (s) = N k= A k s s k (2) τότε η µέθοδος II µετατρέπει το ϕίλτρο αυτό σε διακριτού χρόνου h c [n] µε µετασχ. Ζ ως H(z) = N k= T d A k e s kt dz (3) µε T d την περίοδο δειγµατοληψίας του ϕίλτρου. Με άλλα λόγια, κάθε όρος της µορφής A k s s της συνάρτησης k A µεταφοράς H c (s) αντιστοιχίζεται σε έναν όρο της µορφής k e s k T της συνάρτησης µεταφοράς H(z). dz
Ψηφιακή Επεξεργασία Σήµατος - 207/Πέµπτο Εργαστήριο 2 (αʹ) Χρησιµοποιώντας MATLAB, υλοποιήστε µε αναλυτικό τρόπο - υλοποιώντας πρώτα το αντίστοιχο ϕίλτρο συνεχούς χρόνου - ένα ψηφιακό χαµηλοπερατό Butterworth ϕίλτρο, µε προδιαγραφές που συζητήσατε στις διαλέξεις. Προς διευκόλυνσή σας, ϑυµίζεται ότι το ϕίλτρο αυτό έχει προδιαγραφές 0.8925 H(e jω ), 0 ω 0.2π (4) H(e jω ) 0.7783, 0.3π ω π (5) Εφ οσον η περίοδος δειγµατοληψίας T d δεν έχει σηµασία στη µέθοδο αυτή, ϑεωρήστε ότι T d =. Με αυτόν τον τρόπο, η διακριτή συχνότητα ω αντιστοιχεί στη συνεχή συχνότητα Ω, δηλ. Άρα οι παραπάνω προδιαγραφές µετατρέπονται ως Ω = ω (6) 0.8925 H(jΩ), 0 Ω 0.2π (7) H(jΩ) 0.7783, 0.3π Ω π (8) Αυτές είναι λοιπόν οι προδιαγραφές του ϕίλτρου συνεχούς χρόνου, το οποίο πρέπει να υλοποιήσετε ϱητά, και µετά να το µετατρέψετε σε διακριτού χρόνου µε τη µέθοδο της Impulse Invariance. Εν συντοµία, πρέπει να λύσετε στο χαρτί σας τις εξισώσεις που υπολογίζουν τις παραµέτρους N, Ω c του αναλογικού ϕίλτρου Butterworth στο χώρο του Fourier: αυτές σας δόθηκαν στο µάθηµα, και δεδοµένου ότι το Butterworth ϕίλτρο είναι της µορφής H c (jω) 2 = ( N (9) + Ω Ωc αυτές οι εξισώσεις είναι ( 0.2π + = (0) Ω c 0.8925 ( 0.3π + = () Ω c 0.7783 και προέρχονται από την ισότητα στις προδιαγραφές (7, 8). Λύστε αναλυτικά το παραπάνω σύστηµα στην αναφορά σας και ϐρείτε ότι N = 5.8858 και Ω c = 0.70474. Χρησιµοποιήστε το MATLAB ως αριθµοµηχανή. Μεταφέρετε τις λύσεις των εξισώσεων - όχι τους αριθµούς! - στο script αρχείο BW_II.m. Το N πρέπει να είναι ακέραιος, οπότε ϑέστε N = 6. Υπολογίστε ξανά την τιµή της Ω c, για αυτήν τη νέα τιµή του N, και δείξτε ότι αυτή είναι Ω c = 0.7032. από τα παραπάνω, ϐρείτε τους πόλους s k του ϕίλτρου Butterworth, µεταφέροντας την εξίσωσή του ϕίλτρου στο χώρο του Laplace: γνωρίζετε την εξίσωση των πόλων από τις διαλέξεις, γράψτε όµως αναλυτικά τη διαδικασία που τους ϐρίσκετε στην αναφορά σας. Προγραµµατίστε τους πόλους αυτούς στο MATLAB. κρατήστε µόνο αυτούς που αντιστοιχούν σε ευσταθές και αιτιατό ϕίλτρο : από το σύνολο των πόλων που προγραµµατίσατε στο MATLAB, επιλέξτε µόνο τους απαραίτητους, δηλ. όσους ϐρίσκονται στο αριστερό µιγαδικό ηµιεπίπεδο του s-χώρου. είτε το σχήµα των διαλέξεών σας. Χρησιµοποιήστε τη συνάρτηση real επάνω στο διάνυσµα των πόλων sk που προγραµµατίσατε πριν. σχηµατίστε το ϕίλτρο B(s)/A(s) που δηµιουργούν οι πόλοι που επιλέξατε : ο λόγος πολυωνύµων του s ϑα ϕτιαχτεί ακριβώς όµοια µε τα πολυώνυµα του z που γνωρίζετε πως κατασκευάζονται στο MATLAB, δηλ. χρησιµοποιώντας τους συντελεστές τους µόνο σε διανύσµατα B και A. Με άλλα λόγια, αν κάποιος ϑελήσει να αλλάξει τις τιµές των προδιαγραφών, τα νέα Ω c, N να υπολογίζονται αυτόµατα.
Ψηφιακή Επεξεργασία Σήµατος - 207/Πέµπτο Εργαστήριο 3 έχοντας πλέον το ϕίλτρο συνεχούς χρόνου (τους συντελεστές πολυωνύµων του s αριθµητή B και παρονοµαστή A αντίστοιχα) χρησιµοποιήσετε τις εντολές impinvar, freqz, grpdelay για να µετατρέψετε το αναλογικό ϕίλτρο σε ψηφιακό και να δείτε την απόκριση πλάτους και την καθυστέ- ϱηση οµάδας, αντίστοιχα. Παραδώστε τα σχήµατα στην αναφορά σας. Για όλα τα παραπάνω, σας δίνεται ο σκελετός - κώδικας στο αρχείο BW_II.m, τον οποίο και πρέπει να συµπληρώσετε. Ελέγξτε το σχήµα του ϕάσµατος πλάτους. Τι παρατηρείτε για το ω p = 0.2π και για το ω s = 0.3π, σε σχέση µε τα αρχικά (δηλ. τις προδιαγραφές); Κάνετε µεγέθυνση των εικόνων στις κρίσιµες συχνότητες και δείτε/επιβεβαιώσετε την ακρίβεια των υπολογισµών σας. Καταγράψτε στην αναφορά σας τις παρατηρήσεις σας και παραδώστε το γράφηµα που παρήγαγε το συµπληρωµένο αρχείο. (ϐʹ) Ολα αυτά που κάνατε ϱητά στο παραπάνω αρχείο µπορούν να γίνουν και χωρίς όλη την παραπάνω αναλυτική διαδικασία, πιο εύκολα, µε χρήση έτοιµων συναρτήσεων. Σας δίνουµε τις εντολές : fs = 8000; % half the sampling frequency in Hz Wp = wp*fs; Ws = ws*fs; % Find optimum N, Wc [Nm, Wcm] = buttord(wp, Ws, -20*log0(d), -20*log0(d2), s ); [Bm, Am] = butter(nm, Wcm, s ); % Constructs the filter [Bzm, Azm] = impinvar(bm, Am, fs); % Analog -> Digital [Hm, w] = freqz(bzm, Azm, 52); [Gdm, w] = grpdelay(bzm, Azm, 52); figure; subplot(3);plot(w/pi, 20*log0(abs(Hm))); % Divide with pi for easier check subplot(32);plot(w/pi, abs(hm)); subplot(33);plot(w/pi, Gdm) Απλά τρέξτε τις και επιβεβαιώστε ότι παίρνετε το ίδιο αποτέλεσµα/γράφηµα µε την αναλυτική µέθοδο που συµπληρώσατε παραπάνω. Παραδώστε στην αναφορά σας το γράφηµα που σας δίνουν. Περάστε το σήµα ϕωνής που σας δίνεται (speech.wav) µέσα από το παραπάνω ϕίλτρο (εντολή filter). Ακούστε το αποτέλεσµα και καταγράψτε τις παρατηρήσεις σας στην αναφορά σας. II. Bilinear Transform Butterworth Filter Η τεχνική του Bilinear Transformation (BT) αποφεύγει το εγγενές πρόβληµα του aliasing που υπάρχει στην µέθοδο της Impulse Invariance. Η τεχνική αυτή αντιστοιχεί τη συχνότητα Ω του συνεχούς χρόνου στη συχνότητα π ω π του διακριτού χρόνου, µέσω του µη-γραµµικού µετασχηµατισµού s = 2 T d ( z + z ) (2) δηλ. H(z) = H c ( 2 T d ( z + z )) Οι παραπάνω σχέσεις οδηγούν (δείτε τις διαλέξεις ή το ϐιβλίο σας) στις σχέσεις (3) Ω = 2 T d tan(ω/2) (4) ω = 2 tan (ΩT d /2) (5) (αʹ) Χρησιµοποιώντας MATLAB, υλοποιήστε µε αναλυτικό τρόπο - υλοποιώντας πρώτα το αντίστοιχο ϕίλτρο συνεχούς χρόνου - ένα ψηφιακό χαµηλοπερατό Butterworth ϕίλτρο, µε προδιαγραφές που συζητήσατε
Ψηφιακή Επεξεργασία Σήµατος - 207/Πέµπτο Εργαστήριο 4 στις διαλέξεις. Προς διευκόλυνσή σας, ϑυµίζεται ότι το ϕίλτρο αυτό έχει προδιαγραφές 0.8925 H(e jω ), 0 ω 0.2π (6) H(e jω ) 0.7783, 0.3π ω π (7) Εφ οσον η περίοδος δειγµατοληψίας T d δεν έχει σηµασία και στη µέθοδο αυτή, ϑεωρήστε ότι T d =. Με αυτόν τον τρόπο, η διακριτή συχνότητα ω αντιστοιχεί στη συνεχή συχνότητα Ω µε τις σχέσεις Άρα οι παραπάνω προδιαγραφές µετατρέπονται ως Ω = 2 tan(ω/2) (8) ω = 2 tan (Ω/2) (9) 0.8925 H(jΩ), 0 Ω 2 T d tan(0.2π/2) (20) H(jΩ) 0.7783, 2 T d tan(0.3π/2) Ω (2) Αυτές είναι λοιπόν οι προδιαγραφές του ϕίλτρου Butterworth συνεχούς χρόνου, το οποίο πρέπει να υλοποιήσετε ϱητά, και µετά να το µετατρέψετε σε διακριτού χρόνου. Εν συντοµία, ϑα πρέπει να λύσετε στο χαρτί σας τις εξισώσεις που υπολογίζουν τις παραµέτρους N, Ω c του αναλογικού ϕίλτρου στο χώρο του Fourier: αυτές σας δόθηκαν στο µάθηµα, και - ξανά - δεδοµένου ότι το Butterworth ϕίλτρο είναι της µορφής H c (Ω) 2 = ( N (22) + Ω Ωc αυτές οι εξισώσεις είναι ( + 2 tan(0.π) ( + 2 tan(0.5π) και προέρχονται από την ισότητα στις προδιαγραφές (20, 2). = (23) Ω c 0.8925 = (24) Ω c 0.7783 Λύστε αναλυτικά το παραπάνω σύστηµα και ϐρείτε ότι N = 5.305. Χρησιµοποιήστε το MATLAB ως αριθµοµηχανή. Μεταφέρετε τις λύσεις των εξισώσεων - όχι τους αριθµούς! - στο script αρχείο BW_BT.m 2. Το N πρέπει να είναι ακέραιος, οπότε ϑέστε N = 6. Υπολογίστε ξανά την τιµή της Ω c, για αυτήν τη νέα τιµή του N, και δείξτε ότι αυτή είναι Ω c = 0.766. από τα παραπάνω, ϐρείτε τους πόλους s k του ϕίλτρου Butterworth, µεταφέροντας την εξίσωσή του ϕίλτρου στο χώρο του Laplace: γνωρίζετε την εξίσωση των πόλων από τις διαλέξεις και έχετε ήδη γράψει αναλυτική την εύρεσή τους σε αντίστοιχο ερώτηµα στη µέθοδο Impulse Invariance. Οπότε απλά προγραµµατίστε τους πόλους αυτούς στο MATLAB. κρατήστε µόνο αυτούς που αντιστοιχούν σε ευσταθές και αιτιατό ϕίλτρο : από το σύνολο των πόλων που προγραµµατίσατε στο MATLAB, επιλέξτε µόνο τους απαραίτητους, δηλ. όσους ϐρίσκονται στο αριστερό µιγαδικό ηµιεπίπεδο του s-χώρου. είτε το σχήµα των διαλέξεών σας. Χρησιµοποιήστε τη συνάρτηση real επάνω στο διάνυσµα των πόλων sk που προγραµµατίσατε πριν. σχηµατίστε το ϕίλτρο B(s)/A(s) που δηµιουργούν οι πόλοι που επιλέξατε : ο λόγος πολυωνύµων του s ϑα ϕτιαχτεί ακριβώς όµοια µε τα πολυώνυµα του z που γνωρίζετε πως κατασκευάζονται στο MATLAB, δηλ. χρησιµοποιώντας τους συντελεστές τους µόνο σε διανύσµατα B και A. 2 Με άλλα λόγια, αν κάποιος ϑελήσει να αλλάξει τις τιµές των προδιαγραφών, τα νέα Ω c, N να υπολογίζονται αυτόµατα.
Ψηφιακή Επεξεργασία Σήµατος - 207/Πέµπτο Εργαστήριο 5 έχοντας πλέον το ϕίλτρο συνεχούς χρόνου (τους συντελεστές πολυωνύµων του s αριθµητή B και παρονοµαστή A αντίστοιχα) χρησιµοποιήσετε τις εντολές bilinear, freqz, grpdelay για να µετατρέψετε το αναλογικό ϕίλτρο σε ψηφιακό και να δείτε την απόκριση πλάτους και την καθυστέ- ϱηση οµάδας, αντίστοιχα. Παραδώστε τα σχήµατα στην αναφορά σας. Για όλα τα παραπάνω, σας δίνεται ο σκελετός - κώδικας στο αρχείο BW_BT.m, τον οποίο και πρέπει να συµπληρώσετε. Ελέγξτε το σχήµα του ϕάσµατος πλάτους. Τι παρατηρείτε για το ω p και για το ω s, σε σχέση µε τα αρχικά (δηλ. µε τις προδιαγραφές); Κάνετε µεγέθυνση των εικόνων στις κρίσιµες συχνότητες και δείτε/επιβεβαιώσετε την ακρίβεια των υπολογισµών σας. Καταγράψτε στην αναφορά σας τις παρατηρήσεις σας και παραδώστε το γράφηµα που παρήγαγε το συµπληρωµένο αρχείο. (ϐʹ) Ολα τα παραπάνω µπορούν να γίνουν και χωρίς όλη την παραπάνω διαδικασία, πιο εύκολα, µε χρήση έτοιµων συναρτήσεων. Σας δίνουµε τις εντολές : fs = ; % sampling frequency in Hz : does not matter Wp = 2*fs*tan(wp/2); Ws = 2*fs*tan(ws/2); % Find optimum N, Wc [Nm, Wcm] = buttord(wp, Ws, -20*log0(d), -20*log0(d2), s ); [Bm, Am] = butter(nm, Wcm, s ); % Construct filter [Bzm, Azm] = bilinear(bm, Am, fs); % Analog -> Digital [Hm, w] = freqz(bzm, Azm, 52); [Gdm, w] = grpdelay(bzm, Azm, 52); figure; subplot(3);plot(w/pi, 20*log0(abs(Hm))); % Divide with pi for easier check subplot(32);plot(w/pi, abs(hm)); subplot(33);plot(w/pi, Gdm) Περάστε το σήµα ϕωνής που σας δίνεται (speech.wav) µέσα από το παραπάνω ϕίλτρο (εντολή filter). Ακούστε το αποτέλεσµα και καταγράψτε τις παρατηρήσεις σας στην αναφορά σας. Υπάρχει διαφορά µε το προηγούµενο ; Ασκηση 3 - Ανάλυση Φίλτρων Στις διαλέξεις δουλέψαµε µόνο µε το ϕίλτρο Butterworth αλλά στην πραγµατικότητα υπάρχουν εκατοντάδες ϕίλτρα τα οποία µπορούν να χρησιµοποιηθούν για πολλούς σκοπούς. Στο αρχείο Lab5OtherFilters.p ϑα ϐρείτε 8 ϕίλτρα τα οποία έχουµε οπτικοποιήσει για σας. Σκοπός σας είναι αφένός να δείτε τις διαφορετικές ποικιλίες/σχεδιάσεις ϕίλτρων που υπάρχουν - και να επιβεβαιώσετε ότι όντως η σχεδίαστη ϕίλτρων αποτελεί τέχνη! - και αφέτέρου να αναγνωρίσετε τα χαρακτηριστικά τους, συµπληρώνοντας τον Πίνακα. Εκτελέστε το αρχείο που σας δίνεται και ϑα λάβετε 8 σχήµατα που περιγράφουν κάθε ϕίλτρο από όλες τις οπτικές γωνίες που είδαµε στο µάθηµα. Ελέγξτε τα διαγράµµατα πόλων-µηδενικών και δείτε πόσο πολύπλοκα είναι. Ελέγξτε το µέτρο του µετασχ. Z και δείτε πως οι πόλοι και τα µηδενικά σχηµατίζουν την απόκριση πλάτους του ϕίλτρου. Το πρώτο γράφηµα που σας δίνεται αποτελεί ένα χαµηλοπερατό ϕίλτρο Butterworth, το οποίο δε συµπεριφέ- ϱεται καλά, διότι οι προδιαγραφές που έχουµε δώσει είναι πολύ αυστηρές στην pass-band. Ολα τα στοιχεία του ϕίλτρου αυτού έχουν συµπληρωθεί για σας στην πρώτη γραµµή του Πίνακα. Συµπληρώστε όµοια και τα υπόλοιπα και παραδώστε τον στην αναφορά σας. Εναλλακτικά, µπορείτε να συµπληρώσετε τον Πίνακα ηλεκτρονικά (το Adobe Reader έχει την ικανότητα αυτή) και να παραδώσετε το PDF της εκφώνησης στον ϕάκελο µε τα παραδοτέα σας.
Ψηφιακή Επεξεργασία Σήµατος - 207/Πέµπτο Εργαστήριο 6 Τέλος, επιλέξτε ένα χαµηλοπερατό, ένα Ϲωνοπερατό, κι ένα υψιπερατό ϕίλτρο της επιλογής σας από αυτά που σας δίνονται και ϕιλτράρετε το σήµα speech.wav που σας δίνεται. Αποθηκεύστε το αποτέλεσµα (συνάρτηση audiowrite) και παραδώστε το µαζί µε τα υπόλοιπα αρχεία σας. Περιγράψτε στην αναφορά σας (µε ποιοτικό τρόπο) σε µια µικρή παράγραφο την επίδραση των τριών ϕίλτρων στο σήµα σας. Για την παράδοση της άσκησης, γράψτε πλήρη αναφορά, συµπεριλαµβάνοντας απαντήσεις σε όλα τα ερωτήµατα του εργαστηρίου, καθώς και διαγράµµατα/γραφήµατα/εικόνες µε τα αποτελέσµατά σας, και συµπεριλάβετε τον κώδικα MATLAB σε ξεχωριστά.m files. Η παράδοση γίνεται αποκλειστικά µε το πρόγραµµα TURNIN. Ανάθεση : 5/2/207 Προθεσµία : 3//208, timestamp: 23:59:59
Ψηφιακή Επεξεργασία Σήµατος - 207/Πέµπτο Εργαστήριο 7 Αρ. Φίλτρου Χαµηλοπερατό Υψιπερατό Ζωνοπερατό Γραµµικής Φάσης FIR/IIR Pass-band Transition band Stop-band IIR Κακή Οµαλή Καλή 2 3 4 5 6 7 8 9 0 2 3 4 5 6 7 8 Πίνακας : Πίνακας Χαρακτηριστικών Φίλτρου