PROJEKT 2 Filtry o skończonej odpowiedzi impulsowej (SOI) Finite
Transkrypt
PROJEKT 2 Filtry o skończonej odpowiedzi impulsowej (SOI) Finite
PROJEKT 2 Filtry o skończonej odpowiedzi impulsowej (SOI) Finite Impulse Response filters (FIR) Termin oddania: 13.06.2016 r., godz. 16:59 Filtry SOI to nierekursywne filtry cyfrowe. Ich transmitancja wyraża się wzorem: H(z) = N X bj z −j . j=0 Odpowiedź impulsowa tego filtru jest równoważna współczynnikom bj . Filtrami, które posiadają dobre właściwości w dziedzinie częstotliwości są tzw. filtry oparte na funkcji sinc. Wyróżniamy tu oczywiście filtry dolnoprzepustowe, górnoprzepustowe, pasmowoprzepustowe oraz pasmowozaporowe. Zad. 1 Zaprogramuj filtr dolnoprzepustowy oparty na funkcji sinc . Współczynniki bj wylicza się z równania: N −1 ) sin 2πf (j − 2 wj , dla j 6= N2−1 N −1 , (1) bj = j− 2 2πf wj dla j = N −1 2 gdzie f jest częstotliwością graniczną podzieloną przez częstotliwość próbkowania fp , wj jest funkcją okna. Program ma uwzględniać trzy okna: prostokątne, Hamminga oraz Blackmana. Należy także pamiętać, że po obliczeniu współczynników filtra należy je znormalizować przez ich sumę, tzn. bj (n) bj = PN −1 . (2) l=0 bl Zad. 2 Po poprawnym zaprogramowaniu filtru dolnoprzepustowego możemy zaprogramować filtr górnoprzepustowy. Jego współczynniki dane są następującą zależnością: b(g) (j) = I{j= N −1 } (j) − b(d) (j), (3) 2 gdzie b(d) (j) pochodzą z (2). Częstotliwość przepustowa jest taka sama jak dla filtra dolnoprzepustowego. Zaprogramuj także ten filtr. Zad. 3 Dokonaj filtracji wybranych przez siebie dwóch sygnałów teoretycznych. Wyniki przedstaw na wykresach. Zad. 4 W pliku vox.wav znajduje się pewien sygnału dźwiękowy. Za pomocą polecenia [y,fp,bit]=wavread wczytaj dane do Scilab oraz wykonaj ich analizę. Przedstaw sygnał oraz jego widmo na wykresach (pamiętaj o prawidłowej skali na osiach!). Dokonaj jego filtracji za pomocą zaprogramowanego przez siebie filtru. Skomentuj wyniki. Odtwórz dźwięk pierwotny jak i po filtracji. Do zapisu nowego dźwięku użyj funkcji savewave(). Prawidłowo wykonany projekt powinien zawierać kilka elementów: 1. Krótki raport. Proszę pamiętać o zachowaniu stylu naukowego. Praca powinna zawierać wstęp, preliminaria teoretyczne, przykłady, wykresy oraz krótkie podsumowanie pracy. Proszę NIE wklejać kodów programów. 2. Program napisany w Scilab. (Zad. 1 oraz 2) Program powinien mieć następujące argumenty wejściowe: fc - częstotliwość graniczna, N - długość odpowiedzi impulsowej, filter - rodzaj filtra (dla argumentu −1 powinien być dolnoprzepustowy, zaś dla argumentu 1 górnoprzepustowy), window - rodzaj okna (dla argumentu 0 okno prostokątne, dla 1 okno Hamminga, dla argumentu 2 okno Blacmana). 1 3. Co najmniej dwa pliki dźwiękowe (dot. zadania 4): dźwięk oryginalny i dźwięk po filtracji. Raport należy wysłać na adres e-mail prowadzącego do dnia 13.06.2015 do godz. 20:29, zaś program i dźwięki każdy będzie prezentował podczas ostatnich zajęć w semestrze. Wskazówki: Pamiętaj, że filtracja sygnału przez drugi to inaczej mówiąc splot tych sygnałów. Zapoznaj się z funkcją conv. Zadanie NIE jest trudne. Prowadzący napisał program w 30 min. M. Skarupski 2