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