この手動の双一次変換により、Matlabとは異なる結果が得られるのはなぜですか?


10

カットオフ周波数 1次バタワースフィルターがあります。その伝達関数はωc

H(s)=ωcs+ωc

双線形変換を使用して(その関数は何と呼ばれていますか)を見つけると、H(z)

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

ただし、この結果をMatlabが行っていることと一致させることはできません。値に関係なく、それは間違っているようです。以下は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
@フォノン:この回答は、Matlabが双線形変換を何らかの方法で使用していることを示しているようです。
Andreas

ここではゲームに遅れますが、z / s / \ omegaのすべての大文字の関数Hは、通常、伝達関数と呼ばれます。引数が時間またはサンプルの場合、それはインパルス応答と呼ばれ、通常は小文字のhです。したがって、伝達関数はインパルス応答の変換(アプリケーションに応じてZ、フーリエ、ラプラス)になります。
Emanuel Landeholm、2015

回答:


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

5

MATLABのbutter関数のコードを開くと、周波数プリワーピングが使用されていることがわかります。

%# step 1: get analog, pre-warped frequencies
if ~analog,
    fs = 2;
    u = 2*fs*tan(pi*Wn/fs);
else
    u = Wn;
end
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.