yamamoto2002
yamamoto2002
オーディオ関連のフリーソフトウェアを作っています。 Amazon.co.jpのyamamoto2002さんは別人です。 楽天オークションのyamamoto2002さんも別人です。 Twitt…

マイルーム

yamamoto2002のページ
yamamoto2002のページ
yamamoto2002のページです。
所有製品

レビュー/コメント

カレンダー

      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

最新のレス

日記
製品レビュー/コメント

製品レビュー/コメントへのレスはありません

お気に入り製品

お気に入り製品はありません

日記

ミニマムフェーズシステム

このエントリーをはてなブックマークに追加
2017年03月20日

ミニマムフェーズシステムはcausalかつstableなシステムで、なおかつ逆システムがcausalかつstableなシステムだ。

ミニマムフェーズIIRフィルターの伝達関数のポールとゼロを複素平面上にプロットしたとき全てのポールとゼロは単位円の内側(単位円上は不可)にある。

自作プログラムでアナログ楕円フィルターを設計しインパルス不変法でIIRフィルターに変換すると、出てくる伝達関数がミニマムフェーズの場合とそうでない場合があり、ミニマムフェーズではない事が多い感じがする。

図1 ミニマムフェーズのIIR。ポール(×印)が4個、ゼロ(〇印)が3個。

図2 mixed phaseのIIR。ポールが5個、ゼロが4個。

プログラムがバグっているかもしれないな。

もしかして、インパルス不変法から出てきた伝達関数がミニマムフェーズでないときは単位円の外側のゼロを逆数の位置に移動してミニマムフェーズにするのかな。もう少し調べてみようと思っている。

2017年3月21日追記: Discrete-time signal processing 3rd ed.の340ページに、伝達関数をミニマムフェーズにするには単位円の外側にある零をconjugate reciprocalの位置に移動する、と書いてあった。

作ったプログラム
https://sourceforge.net/p/playpcmwin/code/HEAD/tree/PlayPcmWin/WWOfflineResampler/MainWindow.xaml.cs#l181

2017年3月26日追記: 単位円の外側のゼロをconjugate reciprocalの位置に移動してミニマムフェーズ特性にするプログラムを作った(図3)。現在の実装は場合によってはうまく動作する(発振しないという意味)ことがあるがJenkins Traub RPolyの私の実装の完成度が低いために零の位置の精度が怪しい感じになる場合があり、修正する必要があるといえよう。

連続時間(アナログ)楕円フィルターをインパルス不変法で変換して離散時間IIRフィルターを作る方法は、ロマンがあって面白いと思う。

図3

2017年4月1日追記

ミックスドフェーズフィルターの伝達関数の零をz平面上で共役逆数の位置に移動してミニマムフェーズフィルター(全てのポールと零が単位円の内側にある)を作る図。この変換によって周波数振幅特性は変わらないが周波数位相特性が変化する。

図4 図の伝達関数は5次のrational functionでポール(×印)が5個、零(〇印)が4個ある。

作ったプログラム

アナログ楕円フィルターを設計 → インパルス不変法でIIRフィルターのインパルス応答を得る → 伝達関数の分子の多項式を解いて零の位置を求める → 伝達関数の零の位置を単位円の内側にしてミニマムフェーズフィルターにする → 伝達関数の1次Rational functionの複素共役ペアを掛けて係数が全て実数の2次Rational functionを得る → IIRフィルターの係数を得る

https://sourceforge.net/p/playpcmwin/code/HEAD/tree/PlayPcmWin/WWOfflineResampler/Main.cs

https://sourceforge.net/p/playpcmwin/code/HEAD/tree/PlayPcmWin/WWAnalogFilterDesign/CauerDesign.cs
アナログ楕円フィルターを設計するプログラム

https://sourceforge.net/p/playpcmwin/code/HEAD/tree/PlayPcmWin/WWIIRFilterDesign/ImpulseInvarianceMethod.cs インパルス不変法でIIRフィルターのインパルス応答を得る

https://sourceforge.net/p/playpcmwin/code/HEAD/tree/PlayPcmWin/WWMath/JenkinsTraubRpoly.cs 伝達関数の分子の多項式を解くプログラム

https://sourceforge.net/p/playpcmwin/code/HEAD/tree/PlayPcmWin/WWIIRFilterDesign/IIRFilterSerial.cs

アナログ楕円フィルターの設計についての記事
http://community.phileweb.com/mypage/entry/2721/20170102/54222/

次回の日記→

←前回の日記

レスを書く

レスを書くにはログインする必要があります
ログインする