Mam filtr Butterwortha pierwszego rzędu z częstotliwością odcięcia . Jego funkcja transferu jest wtedy
Używam transformacji dwuliniowej do znalezienia (jak nazywa się ta funkcja?)
Nie mogę jednak pogodzić tego wyniku z tym, co robi Matlab. Wydaje się źle, bez względu na to, co wartość . Zakładam, że i poniżej są współczynniki H ( z ) .B
A
>> [B,A] = butter(1,0.5)
B = 0.5000 0.5000
A = 1.0000 -0.0000
>> [B,A] = butter(1,0.6)
B = 0.5792 0.5792
A = 1.0000 0.1584
>> [B,A] = butter(1,0.7)
B = 0.6625 0.6625
A = 1.0000 0.3249
>> [B,A] = butter(1,0.8)
B = 0.7548 0.7548
A = 1.0000 0.5095
Co ja mylę?
Odpowiedzi:
Kilka rzeczy:
Przed dokonaniem podstawienia , musiszs=2Tz−1z+1 zmienić częstotliwość odcięcia, dokonując podstawienia:
gdzie jest wypaczoną częstotliwością odcięcia. Jest to konieczne, ponieważ transformacja dwuliniowa odwzorowuje lewą połowę płaszczyzny w domenie Laplace'a (stosowaną w projekcie filtra analogowego) na koło jednostkowe w domenie Z w sposób nieliniowy. Dlatego w miarę zbliżania się do częstotliwości Nyquista (częstotliwości cyfrowe ± π ) przybliżenie prototypu filtra analogowego staje się niedokładne.ωc,w z ±π
Również drugi parametr, które przechodzą doT (0,1) i jest równa stosunkowi pożądanej częstotliwości odcięcia do częstotliwości Nyquista:
butter
funkcji jest znormalizowana częstotliwość odcięcia, a nie przedział próbkowania . Znormalizowana częstotliwość używana przez tę funkcję jest w przedziale ( 0 , 1 )źródło
Otwierając kod
butter
funkcji MATLAB , widzimy, że wykorzystuje wstępne dopasowanie częstotliwości :źródło