Tại sao phép chuyển đổi song tuyến thủ công này mang lại kết quả khác với Matlab?


10

Tôi đã có bộ lọc Butterworth đặt hàng đầu tiên với tần số cắt . Chức năng chuyển của nó làωc

H(s)=ωcs+ωc

Sử dụng biến đổi song tuyến để tìm (hàm đó được gọi là gì?), Tôi nhận đượcH(z)

H(z)=ωc2Tz1z+1+ωc=ωcz+ωc(2T+ωc)z+ωc2T

Tuy nhiên, tôi không thể dung hòa kết quả này với những gì Matlab đang làm. Có vẻ như sai, không có vấn đề gì giá trị của . Tôi giả sử rằng và dưới đây là các hệ số của H ( z ) .TBAH(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

Tôi đang hiểu lầm điều gì?


MATLAB không sử dụng chuyển đổi tương tự sang số. Nó thiết kế bộ lọc kỹ thuật số, do đó, ý tưởng biến đổi song tuyến có thể không được áp dụng.
Phonon

1
@Phonon: Câu trả lời này dường như chỉ ra rằng Matlab sử dụng phép biến đổi song tuyến theo một cách nào đó.
Andreas

Đến cuối trò chơi ở đây nhưng tất cả các hàm chữ hoa H của z / s / \ omega thường được gọi là hàm chuyển. Khi đối số là thời gian hoặc mẫu, nó được gọi là đáp ứng xung và nó thường được hạ thấp, h. Vì vậy, hàm truyền là biến đổi (Z, Fourier, Laplace tùy thuộc vào ứng dụng) của đáp ứng xung.
Emanuel Landeholm

Câu trả lời:


10

Một vài điều:

S= =2Tz-1z+1

ωc,w= =2Ttan(ωcT2)

ωc,wz±π

butterT(0,1)

ωn= =ωc2πfS2

ωn= =ωcπfS

ωn= =ωcTπ

Cảm ơn bạn! Bây giờ tôi có được hệ số đúng. Ở đây, tôi thay thếωcomegmộtc,wH(z)H(S)

H(S)

Sz

5

Khi mở mã cho butterchức năng của MATLAB , chúng tôi thấy rằng nó sử dụng tiền cong vênh tần số :

%# step 1: get analog, pre-warped frequencies
if ~analog,
    fs = 2;
    u = 2*fs*tan(pi*Wn/fs);
else
    u = Wn;
end
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.