Dlaczego ta ręczna transformacja dwuliniowa daje inne wyniki niż Matlaba?


10

Mam filtr Butterwortha pierwszego rzędu z częstotliwością odcięcia . Jego funkcja transferu jest wtedyωc

H(s)=ωcs+ωc

Używam transformacji dwuliniowej do znalezienia (jak nazywa się ta funkcja?)H(z)

H(z)=ωdo2)T.z-1z+1+ωdo=ωdoz+ωdo(2)T.+ωdo)z+ωdo-2)T.

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 ) .T.BAH(z)

>> [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ę?


MATLAB nie korzysta z konwersji analogowo-cyfrowej. Filtr jest projektowany cyfrowo, dlatego pomysł transformacji dwuliniowej może nie mieć zastosowania.
Phonon

1
@Phonon: Ta odpowiedź wydaje się wskazywać, że Matlab w jakiś sposób używa transformacji dwuliniowej.
Andreas,

Późno do gry, ale wszystkie wielkie litery H z / s / \ omega są zwykle nazywane funkcją przenoszenia. Gdy argumentem jest czas lub próbki, nazywa się to odpowiedzią impulsową i zwykle jest pisane małymi literami, h. Zatem funkcją przenoszenia jest transformacja (Z, Fourier, Laplace w zależności od zastosowania) odpowiedzi impulsowej.
Emanuel Landeholm

Odpowiedzi:


10

Kilka rzeczy:

Przed dokonaniem podstawienia , musiszs=2Tz1z+1 zmienić częstotliwość odcięcia, dokonując podstawienia:

ωc,w=2Ttan(ωcT2)

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,wz±π

Również drugi parametr, które przechodzą do butterfunkcji jest znormalizowana częstotliwość odcięcia, a nie przedział próbkowania . Znormalizowana częstotliwość używana przez tę funkcję jest w przedziale ( 0 , 1 )T(0,1) i jest równa stosunkowi pożądanej częstotliwości odcięcia do częstotliwości Nyquista:

ωn=ωc2πfs2

ωn=ωcπfs

ωn=ωcTπ

Dziękuję Ci! Teraz otrzymuję właściwe współczynniki. Tu, są podstawione o o m e g C , wagowo w wyrażeniu H ( Z ) . To zadziałało, ponieważ wiem, gdzie częstotliwość odcięcia wpływa na filtr Butterwortha. Co jeśli miałbym ogólny filtr i po prostu znałem bieguny (i zera) H ( s ) ? Skąd mam wiedzieć, które wartości zastąpić? ωcomegac,wH(z)H(s)
Andreas

H(s)

sz

5

Otwierając kod butterfunkcji MATLAB , widzimy, że wykorzystuje wstępne dopasowanie częstotliwości :

%# step 1: get analog, pre-warped frequencies
if ~analog,
    fs = 2;
    u = 2*fs*tan(pi*Wn/fs);
else
    u = Wn;
end
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.