ntua-cvsp-lab / DSP_LabSupport

Here the students of the 2019-2020 DSP course can submit questions regarding the course to the teaching assistants.
7 stars 3 forks source link

LAB2 4.2 #57

Open giorgoskallitsis opened 4 years ago

giorgoskallitsis commented 4 years ago

Καλησπερα, εχω 3 ερωτησεις για την υλοποιηση του φιλτρου butterworth: 1) Το φιλτρο μας θα ειναι αναλογικο ή ψηφιακο? 2) Το φιλτρο μας θα ειναι βαθυπερατο ή υψιπερατο? Αν και η εκφωνηση αναφερει υψυπερατο, πανω απο τη συχνοτητα 2Hz, θυμαμαι πως κατα την παρουσιαση του εργαστηριου, ειχε αναφερθει πως θα πρεπει να υλοποιησουμε βαθυπερατο με συχνοτητα αποκοπης τα 2 Hz, γι αυτο κυριως ρωταω (επισης, μου γραφει πως αν υλοποιησω ψηφιακο φιλτρο, τοτε η μεγιστη τιμη που μπορει να λαβει η παραμετρος wn (που υποθετω ειναι η συχνοτητα αποκοπης) ειναι απο 0 εως 1, αρα δεν μπορω να βαλω τιμη 2 ) 3) Σε καθε περιπτωση (είτε φτιαχνω βαθυπερατο είτε υψιπερατο), οταν περναω το σημα μου απο το φιλτρο, παρατηρω πως τα τελευταια του δειγματα ειναι Nan, δηλαδη απειριζονται πρακτικα. Ετσι, δεν μπορω να εφαρμοσω stft στο φιλτραρισμενο σημα.

Σας ευχαριστω πολυ.

filby89 commented 4 years ago

Καλημέρα:

  1. Το φίλτρο θα είναι ψηφιακό. Διορθώθηκε κατάλληλα η εκφώνηση.
  2. Έχεις δίκιο, θα είναι βαθυπερατό. Ανεβάσαμε νέα version στην εκφώνηση που το επεξηγεί σωστά. Η συνάρτηση butter() παίρνει κανονικοποιημένο το Wn, έτσι ώστε το 1 να αντιστοιχεί στη συχνότητα Nyquist (που είναι η μέγιστη συχνότητα που μπορούμε να προσδιορίσουμε χωρίς aliasing), που στην περίπτωση μας ισούται με fs/2 = 10 Hz. Επομένως θα κανονικοποιήσεις τη συχνότητα αποκοπής, πριν την δώσεις ως όρισμα στο Wn. Εναλλακτικά, αν δώσεις σαν όρισμα την στην butter() τη συχνότητα δειγματοληψίας fs του σήματος, μπορείς να δώσεις την κανονική τιμή 2 χωρίς κανονικοποίηση.
  3. Αυτό δεν πρέπει να συμβαίνει! Πως ακριβώς εφαρμόζεις το φίλτρο στο σήμα;
giorgoskallitsis commented 4 years ago

Καλησπερα, με βαση τις απαντησεις σας στα 1,2 τωρα μου τρεχει κανονικα χωρις προβλημα, ευχαριστω παρα πολυ! Οσον αφορα το φιλτραρισμα που ρωτησατε, αρχικα σκεφτηκα το κλασικο lfilter αλλα μετα ειδα και την sosfilt της scipy και προτιμησα αυτην