DSP - projektowanie wspomagane komputerowo
Filtry FIR mogą być przydatne w tworzeniu wspomaganego komputerowo projektowania filtrów. Weźmy przykład i zobaczmy, jak to działa. Poniżej podano rysunek pożądanego filtra.
Projektując komputerowo, całe ciągłe wykresy dzielimy na dyskretne wartości. W pewnych granicach dzielimy to na 64, 256 lub 512 (i tak dalej) liczbę części o dyskretnych wielkościach.
W powyższym przykładzie przyjęliśmy granice między -π a + π. Podzieliliśmy go na 256 części. Punkty można przedstawić jako H (0), H (1),… aż do H (256). Tutaj stosujemy algorytm IDFT, a to da nam liniową charakterystykę fazową.
Czasami możemy być zainteresowani jakąś konkretną kolejnością filtrów. Powiedzmy, że chcemy zrealizować powyższy projekt przez filtr 9- go rzędu. Zatem przyjmujemy wartości filtrów jako h0, h1, h2… .h9. Matematycznie można to pokazać jak poniżej
$$ H (e ^ {j \ omega}) = h_0 + h_1e ^ {- j \ omega} + h_2e ^ {- 2j \ omega} + ..... + h_9e ^ {- 9j \ omega} $$W przypadku dużej liczby zwichnięć otrzymujemy maksymalną liczbę punktów.
Na przykład na powyższym rysunku występuje nagły spadek nachylenia między punktami B i C. W tym miejscu staramy się przyjąć bardziej dyskretne wartości, ale między punktem C i D. jest stałe nachylenie. mniejsza liczba wartości dyskretnych.
Aby zaprojektować powyższy filtr, przechodzimy przez proces minimalizacji w następujący sposób;
$ H (e ^ {j \ omega1}) = h_0 + h_1e ^ {- j \ omega1} + h_2e ^ {- 2j \ omega1} + ..... + h_9e ^ {- 9j \ omega1} $
$ H (e ^ {j \ omega2}) = h_0 + h_1e ^ {- j \ omega2} + h_2e ^ {- 2j \ omega2} + ..... + h_9e ^ {- 9j \ omega2} $
Podobnie,
$ (e ^ {j \ omega1000}) = h_0 + h_1eH ^ {- j \ omega1000} h_2e ^ {- 2j \ omega1000} + ..... + h_9 + e ^ {- 9j \ omega1000} $
Reprezentując powyższe równanie w postaci macierzowej, mamy -
$$ \ begin {bmatrix} H (e ^ {j \ omega_1}) \\. \\. \\ H (e ^ {j \ omega_ {1000}}) \ end {bmatrix} = \ begin {bmatrix} e ^ {- j \ omega_1} & ... & e ^ {- j9 \ omega_1} \\. & &. \\. & &. \\ e ^ {- j \ omega_ {1000}} & ... & e ^ {j9 \ omega_ {1000}} \ end {bmatrix} \ begin {bmatrix} h_0 \\. \\. \\ h_9 \ end {bmatrix} $$Weźmy macierz 1000 × 1 jako B, macierz 1000 × 9 jako A, a macierz 9 × 1 jako $ \ hat {h} $.
Tak więc, aby rozwiązać powyższą macierz, napiszemy
$ \ hat {h} = [A ^ TA] ^ {- 1} A ^ {T} B $
$ = [A ^ {* T} A] ^ {- 1} A ^ {* T} B $
gdzie A * reprezentuje złożony koniugat macierzy A.