Чому це ручне білінеарне перетворення дає різні результати від результатів Matlab?


10

У мене є фільтр Баттерворта першого порядку з частотою відсічення . Його передача функція є тодіωc

H(s)=ωcs+ωc

Використовуючи білінеарне перетворення для пошуку (як називається ця функція?), Я отримуюH(z)

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

Однак я не можу примирити цей результат із тим, що робить Матлаб. Це здається неправильним, незалежно від того , яке значення . Я припускаю, що і нижче - коефіцієнти 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

Що я нерозумію?


MATLAB не використовує аналого-цифрове перетворення. Він розробляє фільтр цифровим шляхом, тому ідея білінеарного перетворення може бути непридатною.
Phonon

1
@Phonon: ця відповідь, схоже, вказує на те, що Matlab якимось чином використовує білінеарне перетворення.
Андреас

Пізно до гри тут, але всі великі функції H z / s / \ omega зазвичай називають функцією передачі. Коли аргумент - це час або вибірки, він називається імпульсною відповіддю, і зазвичай це нижній регістр, год. Отже функцією передачі є перетворення (Z, Фур'є, Лапласа залежно від застосування) імпульсної відповіді.
Емануель Ландегольм

Відповіді:


10

Кілька речей:

s=2Tz1z+1

ωc,w=2Ttan(ωcT2)

ωc,wz±π

butterT(0,1)

ωn=ωc2πfs2

ωn=ωcπfs

ωn=ωcTπ

ωcomegac,wH(z)H(s)

H(s)

sz

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.