Bu manuel bilinear dönüşüm neden Matlab'lardan farklı sonuçlar veriyor?


10

Kesim frekansı olan birinci dereceden bir Butterworth filtresim var . Transfer fonksiyonuωc

H(s)=ωcs+ωc

bulmak için bilinear dönüşümü kullanarak (bu işleve ne denir?)H(z)

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

Ancak, bu sonucu Matlab'ın yaptığıyla uzlaştıramıyorum. değeri ne olursa olsun yanlış görünüyor . Ben varsayalım ve aşağıdaki katsayılarıdır 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

Neyi yanlış anlıyorum?


MATLAB analogdan dijitale dönüşüm kullanmaz. Filtreyi dijital olarak tasarlar, bu nedenle bilinear dönüşüm fikri uygulanamayabilir.
Phonon

1
@Phonon: Bu cevap Matlab'ın bilinear dönüşümü bir şekilde kullandığını gösteriyor.
Andreas

Oyunun sonlarına doğru, ancak z / s / \ omega'nın tüm büyük harf fonksiyonlarına H genellikle transfer fonksiyonu denir. Argüman zaman veya örnek olduğunda, buna dürtü yanıtı denir ve genellikle küçük harflerle ifade edilir, h. Bu nedenle transfer fonksiyonu, dürtü yanıtının dönüşümüdür (Z, Fourier, Laplace, uygulamaya bağlı).
Emanuel Landeholm

Yanıtlar:


10

Birkaç şey:

Değişikliği yapmadan önce 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

5

MATLAB butterişlevi için kodu açarken, frekans ön çözgü kullandığını görüyoruz :

%# step 1: get analog, pre-warped frequencies
if ~analog,
    fs = 2;
    u = 2*fs*tan(pi*Wn/fs);
else
    u = Wn;
end
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.