ΨΗΦΙΑΚΗ ΕΠΕΞΕΡΓΑΣΙΑ ΣΗΜΑΤΟΣ ΑΣΚΗΣΗ 5 Α. Σχεδίαση Ψηφιακών Φίλτρων Β. Φίλτρα FIR Σχετικές εντολές του Matlab: fir, sinc, freqz, boxcar, triang, hanning, hamming, blackman, impz, zplane, kaiser. Α. ΣΧΕΔΙΑΣΗ ΨΗΦΙΑΚΩΝ ΦΙΛΤΡΩΝ Ψηφιακό φίλτρο είναι κάποιο σύστημα που επενεργεί πάνω σε ψηφιακά σήματα με σκοπό να αλλάξει τα χαρακτηριστικά τους, όπως είναι το φάσμα ή το πλάτος. Ο βασικός σκοπός τους είναι η βελτίωση της ποιότητας του σήματος, μέσω της ανάδειξης συγκεκριμένων χαρακτηριστικών ή της εξαγωγής του θορύβου. Ανάλογα με την απόκριση μέτρου τους H (), τα ψηφιακά φίλτρα, κατηγοριοποιούνται σε βαθυπερατά (lowpass), υψηπερατά (highpass), ζωνοδιαβατά (bandpass) και ζώνης αποκοπής (bandstop).
Οι κρουστικές αποκρίσεις των ιδανικών φίλτρων δεν είναι τυχαίες. Για παράδειγμα, το ιδανικό βαθυπερατό φίλτρο του παραπάνω σχήματος έχει κρουστική απόκριση h n c sin cn, όπως παρουσιάζεται στο παρακάτω σχήμα για / 4. n c c Η συνάρτηση μεταφοράς H(z) ενός LTI συστήματος, η οποία είναι ο μετασχηματισμός -z της κρουστικής απόκρισης h(k), δίνεται στη γενική περίπτωση συστήματος Ν-βαθμού ως: H z B( z) b0 b z bm z A( z) a a z a z 0 N M N kz z z z2 z zm z p z p z p 2 M (), (2) όπου z i και p i οι μηδενισμοί και οι πόλοι του συστήματος. Επομένως, η απόκριση συχνότητας H(ω) εξαρτάται από τους συντελεστές α k και b k, ή ισοδύναμα, από την τοποθέτηση των πόλων και μηδενισμών στο επίπεδο z. Συνεπώς, με κατάλληλη επιλογή των συντελεστών και της τάξης (Μ,Ν) είναι δυνατή η πραγματοποίηση φίλτρων τα οποία ικανοποιούν συγκεκριμένες προδιαγραφές, όπως επιθυμητή απόκριση μέτρου και φάσης. Παρόλα αυτά, οι ακόλουθοι περιορισμοί πρέπει να τηρούνται:
Οι πόλοι πρέπει να βρίσκονται εντός του μοναδιαίου κύκλου, έτσι ώστε το φίλτρο να είναι ευσταθές. Μόνο σε αυτή την περίπτωση η άπειρη κρουστική απόκριση είναι φθίνουσα και ισχύει k 0 h ( k). Η ιδιότητα αυτή εξασφαλίζει ότι το σύστημα θα δίνει περιορισμένη σε πλάτος έξοδο, όταν η είσοδος είναι επίσης περιορισμένη (ΒΙΒΟ). Όταν ο πόλος βρίσκεται πάνω στον μοναδιαίο κύκλο, χρειάζεται ένας μηδενισμός στο ίδιο σημείο για να εξασφαλιστεί η ευστάθεια. Οι μιγαδικοί πόλοι και μηδενισμοί πρέπει να βρίσκονται σε συζυγή μιγαδικά ζευγάρια, έτσι ώστε οι συντελεστές του φίλτρου να είναι πραγματικοί. Οι προδιαγραφές ενός φίλτρου, ορίζονται ως τα χαρακτηριστικά του φίλτρου στην απόκριση συχνότητας. Για να γίνουν κατανοητά όλα αυτά, παρακάτω παρουσιάζεται ένα πραγματοποιήσιμο βαθυπερατό φίλτρο όπου περιγράφονται τα χαρακτηριστικά του. Για κάθε ψηφιακό φίλτρο, η συμπεριφορά του στη συχνότητα ορίζεται στην περιοχή [0, F s /2]. Η περιοχή όπου το φίλτρο επιτρέπει να περνούν όλες οι συχνότητες, καλείται ζώνη διέλευσης (passband). Η περιοχή που σχεδόν αποκόπτονται όλες οι συχνότητες, ονομάζεται ζώνη αποκοπής (stopband). Τέλος, οι δύο περιοχές συνδέονται με τη ζώνη μετάβασης (transition band). Συνήθως, τα όρια των ζωνών ορίζονται ως κλάσματα της F s. Συνεπώς, ο σχεδιασμός ενός φίλτρου χρειάζεται τις παρακάτω προδιαγραφές: Μέγιστη ανοχή (κυμάτωση) στη ζώνη διέλευσης δ (ή δ p ). Μέγιστη ανοχή (κυμάτωση) στη ζώνη αποκοπής δ 2 (ή δ s ). Τέλος της ζώνης διέλευσης ω p.
Τέλος της ζώνης αποκοπής ω s. Τότε, μπορεί να χρησιμοποιηθεί κάποιο κριτήριο σχεδιασμού για την επιλογή των συντελεστών α k και b k, το οποίο προσεγγίζει καλύτερα τις προδιαγραφές. Αν επιπλέον καθορίζεται η τάξη του φίλτρου, δηλ. οι αριθμοί (Μ,Ν) των συντελεστών, τότε κάποιες από τις υπόλοιπες προδιαγραφές μπορούν να παραλειφθούν. Α. Κατηγορίες Ψηφιακών Φίλτρων Τα γραμμικά ψηφιακά φίλτρα χωρίζονται σε δύο μεγάλες κατηγορίες, οι οποίες χαρακτηρίζονται από το μήκος της κρουστικής απόκρισης του φίλτρου. Έτσι τα φίλτρα που έχουν μη-πεπερασμένη κρουστική απόκριση ονομάζονται IIR (Infinite Impulse Response), ενώ αυτά με πεπερασμένη κρουστική απόκριση FIR (Finite Impulse Response). H γενική μορφή των ψηφιακών φίλτρων, όπως προκύπτει και από την εξίσωση () είναι: n b xn b xn b xn 2 a yn a yn 2, n 0,,2, y (3) 0 2 2 Το γενικό μπλοκ-διάγραμμα αναπαράστασης ενός ψηφιακού φίλτρου, έχει την παρακάτω μορφή:
Στο κύκλωμα αυτό, η έξοδος υπολογίζεται θεωρώντας εκτός από τις τιμές της εισόδου και καθυστερημένες τιμές της εξόδου, όπως περιγράφεται από τη σχέση (3). Για το λόγο αυτό τα IIR φίλτρα καλούνται και επαναληπτικά (recursive). Αντίθετα, στα FIR φίλτρα η έξοδος υπολογίζεται μόνο από τις τιμές της εισόδου, γι αυτό τα φίλτρα αυτά ονομάζονται και μη-επαναληπτικά (non-recursive). M FIR: yn hk xn k b xn k k 0 M k 0 k (4) M IIR: yn b xn k a yn k k 0 k Σύμφωνα με τις παραπάνω εξισώσεις, τα FIR φίλτρα αποτελούν ειδική περίπτωση των IIR φίλτρων και λαμβάνονται όταν οι συντελεστές α k είναι μηδέν (δεν υπάρχει ανατροφοδότηση). Η επιλογή ανάμεσα στα δύο είδη φίλτρων εξαρτάται τόσο από την εφαρμογή όσο και από τα ιδιαίτερα χαρακτηριστικά των φίλτρων. N k 0 k (5) Β. ΦΙΛΤΡΑ FIR Στην πράξη, τα FIR φίλτρα χρησιμοποιούνται σε προβλήματα φιλτραρίσματος όπου υπάρχει απαίτηση για χαρακτηριστικά γραμμικής φάσης εντός της ζώνης διέλευσης του φίλτρου. Για το σχεδιασμό γραμμικής φάσης FIR φίλτρων, θα χρησιμοποιήσουμε τις ακόλουθες δύο μεθόδους: Μέθοδος των παραθύρων (Matlab fir) Βέλτιστα φίλτρα (Matlab remez) B. Μέθοδος των Παραθύρων Υλοποιείται με χρήση της συνάρτησης b=fir(m,fp), η οποία σχεδιάζει ένα βαθυπερατό FIR φίλτρο Μ-τάξεως και επιστρέφει τους συντελεστές του φίλτρου σε ένα διάνυσμα b με μέγεθος (Μ+). Η συχνότητα αποκοπής Fp πρέπει να είναι μεταξύ [0,.0], όπου.0 αντιστοιχεί στο ήμισυ της συχνότητας δειγματοληψίας.
Οι συντελεστές του FIR βαθυπερατού φίλτρου αρχικά είναι οι h(n). Επιλέγοντας το αντίστοιχο παράθυρο με συντελεστές b(n), βρίσκουμε τις τελικές τιμές των συντελεστών ως το γινόμενο b(n)*h(n). Στο Matlab η διαδικασία αυτή γίνεται μέσω της εντολής fir. α. Να βρείτε τους συντελεστές ενός βαθυπερατού FIR φίλτρου 23 συντελεστών με συχνότητα αποκοπής ω c =0.3π και χρησιμοποιώντας τα εξής παράθυρα:. Ορθογώνιο (boxcar) 2. Τριγωνικό (triang) ή Barlett 3. Hanning 4. Hamming 5. Blackman >> M = 22; >> wc = 0.3; >> b = wc*sinc(wc*(-m/2:m/2)) >> [h,w] = freqz(b); >> plot(w/pi,abs(h)); Φαινόμενα όπως η μεγάλη κυμάτωση στο τέλος της ζώνης διέλευσης, μπορούν να βελτιωθούν αν πολλαπλασιάσουμε τους παραπάνω συντελεστές με τους συντελεστές ενός εκ των παρακάτω παραθύρων. Ως γνωστών, πολλαπλασιασμός στο πεδίο των χρόνων ισοδυναμεί με συνέλιξη στο πεδίο των συχνοτήτων. >> w=boxcar(m+); figure, plot(w); >> w2=triang(m+); figure, plot(w2);
>> w3=hanning(m+); figure, plot(w3); >> w4=hamming(m+); figure, plot(w4); >> w5=blackman(m+); figure, plot(w5); β. Να σχεδιαστεί σε κάθε περίπτωση (για κάθε παράθυρο) η απόκριση συχνότητας χρησιμοποιώντας 50-σημεία, η κρουστική απόκριση, και το διάγραμμα πόλων και μηδενισμών και να απεικονισθούν τα αντίστοιχα διαγράμματα. Συγκρίνατε τα χαρακτηριστικά τους. Τι παρατηρείτε; >> N=50; % Boxcar >> b=fir(m,wc,w); >> a=[ 0]; >> figure, freqz(b,a); >> figure, impz(b,a,n); >> figure, zplane(b,a); γ. Παράθυρο Kaiser Πρόκειται για ένα βέλτιστο παράθυρο, δίνει δηλαδή για συγκεκριμένο ύψος των παράπλευρων λοβών τη μέγιστη δυνατή ενέργεια στον κεντρικό λοβό. Η ακολουθία έχει ως εξής: 0.02 0.584 0 8.7 0.4 2 0.0789 2 50 2 50 2 όπου Α η πλευρική πτώση του κεντρικού λοβού, σε db. H χρήση του παραθύρου Kaiser στο Matlab γίνεται με την εντολή w=kaiser(n,beta), όπου beta είναι η παράμετρος - β η οποία επηρεάζει την εξασθένηση του κεντρικού λοβού του παραθύρου. Η προεπιλεγμένη τιμή (default) είναι το 0.5. Η αύξηση της παραμέτρου β ευρύνει τον κεντρικό λοβό, αλλά ελαττώνει την απόκριση μέτρου των πλευρικών λοβών. Επαναλάβετε τις διαδικασίες Βα. και Ββ. για παράθυρο Kaiser με β = 4, 6, 9 και συγκρίνετε τα αποτελέσματα με τα αντίστοιχα των διαδικασιών. Τι παρατηρείτε;
δ. Μετασχηματισμοί Φίλτρων Ένα βαθυπερατό φίλτρο μπορεί εύκολα να μετασχηματισθεί σε υψηπερατό, ζωνοδιαβατό ή ζώνης αποκοπής. Στο Matlab, ένα υψηπερατό φίλτρο υπολογίζεται με χρήση του ορίσματος high, ένα ζωνοδιαβατό λαμβάνεται αν Wn είναι το δι-διάστατο διάνυσμα Wn=[W W2], και ένα φίλτρο ζώνης αποκοπής λαμβάνεται με χρήση του ορίσματος stop μαζί με το δι-διάστατο διάνυσμα Wn=[W W2]. Να σχεδιάσετε τα και να δείτε την απόκριση συχνότητας για τα εξής φίλτρα:. Υψηπερατό φίλτρο 22 ης τάξεως, με συχνότητα αποκοπής ω c =0.7π, χρησιμοποιώντας το παράθυρο Hamming. >> M=22; wc=0.7; >> b=fir(m,wc,'high'); >> a=[ 0]; >> figure, freqz(b,a); 2. Ζωνοδιαβατό φίλτρο 22 ης τάξεως, με συχνότητες αποκοπής [0.2 0.8], χρησιμοποιώντας το παράθυρο Hamming. >> Wn=[0.2 0.8]; >> b2=fir(m,wn); >> figure, freqz(b2,a);