TNJ-096: アナログ・フィルタの伝達関数をデジタル・フィルタに変換する「双一次変換」とは

TNJ-096: アナログ・フィルタの伝達関数をデジタル・フィルタに変換する「双一次変換」とは

著者の連絡先情報

石井 聡の写真

石井 聡

はじめに

ヨタヨタ毎回進んでいる Web ラボ。今回も与太話から始めましょう。それでも 96 回目になりました…。

 

「シミュレーション仮説」をお話ししよう

あなたは信じるか、「シミュレーション仮説 [1]」。シミュレーション仮説とは、自分の周りはすべてシミュレーションで成り立っている、という考え方です。昔「マトリックス [2]」という映画があり、かなりの興行収入となりましたが、この映画の構成と同じ概念とも言えるものです。テスラ社のイーロン・マスク(Elon Reeve Musk)氏の発言や投資銀行・メリルリンチ社が出したレポート [3]からも、多くの人が注目し、その可能性・確率がかなり高いこと(誰も証明できるものではありませんが。いつまで経っても「仮説」のままでしょう)が分かります。私は子供のころからシミュレーション仮説と同様なことを考えており、いつかはこの Web ラボでも書こうと思っていたものです。私だけではなくても、多くの人が同様な気づきに至ったものではないかと思います。

 

「シミュレーション仮説」にはふたつの考え方がある

シミュレーション仮説にはふたつの考え方があります。ひとつはコンピュータ上で宇宙全体がシミュレーションされており、また複数の「意思」が存在していて、その「意思」、つまり複数の脳みそからその宇宙全体の動きが見える、という考えかたです。複数の「意思」同士はコンピュータ上に存在しているわけなので、相互に疎通することができます。宇宙全体の動きが見えるとはいえ、実際は「意思」に対する「刺激(スティミュラス)」を生じさせることにより、仮想的に「見せている」と言ったほうが適切でしょう。

しかしこのひとつめの考え方(宇宙全体をシミュレーション)はコンピュータの計算能力や容量に、非常に高く・大きいものが必要となるため、かなり大掛かりなものとなってしまいます。

もうひとつの考え方、これは私が小学校のころに気づきに至った考え方、これをご紹介しましょう。こちらはずっと単純です。

「意思」はひとつ(自分のみ)しか存在せず、その「意思」の周囲の環境(景色)をコンピュータがシミュレーションしている、というものです。単一の「意思」は水槽の培養液中に浮かんで電極が差し込まれた脳としてイメージすることもできます。私が小学校のころに気づきに至ったイメージはこの「水槽に浮かぶ脳」でした。

この考え方は、逆にいうと「自分以外には何も実態がないんだ」というものです。世界には自分しか存在せず、その周りはシミュレーションで見せられているだけなのです。この考え方は恐ろしいもので、たとえばこの Web ラボの記事は「私が書いているだけで、誰も読んでいない」ということになるわけです。

図 1. すべてはシミュレーションなのか (海に沈む夕日。本当に美しい)
図 1. すべてはシミュレーションなのか (海に沈む夕日。本当に美しい)

誰も読んでいない、つまり書いていることが無駄となるわけですね(笑)。恐ろしい話しです(笑)。

 

双 1 次変換とは

 

双 1 次変換は s 領域と z 領域をつなぐもの

アナログ・フィルタをデジタル・フィルタに変換する手法に双1 次変換(Bilinear Transformation)というものがあります。「シミュレーション仮説」同様、現実世界をコンピュータ(もしくはデジタル)世界に写像するひとつの手法といえるのではないでしょうか。

これは

数式1

として𝑠領域(連続時間での周波数軸)と𝑧領域(離散時間システム。𝑧は離散時間軸での表記でもあり、周波数軸でもある…と理解しています。𝑧に-1 がついているのはサンプリング・レート 1 クロックぶんの遅延を意味します)を関連づけるものです[4]。ここで𝑇𝑆はサンプリング・レート、𝑧−1は 1 タップの遅延を表します。

 

まずは z 変換の考え方

図 2 をご覧ください。この図は𝑧変換の考え方を示しています。これは CK(クロック)で IN から入ってくるワード(複数ビット)をブロック𝑇𝑆でラッチし、そのワードを次段に伝搬させる回路です。ここで𝑇𝑆はさきと同じく 1 遅延に相当しますが、これが𝑧−1です。2 遅延になると𝑧−2という考え方です。

また図 3は

数式2

という「2 個のサンプルを平均する」というデジタル・ローパス・フィルタ(移動平均)です。

まずアナログ・フィルタと双 1 次変換されたデジタル・フィルタとの周波数特性(特性カーブ)の関係を考えておきましょう。なぜこんなことをここで書くかというのは、そういう私も「𝑧−1は 1 タップの遅延を表しているだけだが、その周波数特性はアナログ・フィルタとどのように関連づけられていくのか?」とふと思ったからです。

たとえばアナログ・フィルタのカットオフ周波数が「ある」周波数だとします。それを双 1 次変換したデジタル・フィルタの周波数特性は、式(1)のサンプリング・レート𝑇𝑆でスケーリングされているため、𝑧−𝑛の係数や𝑧−𝑛の次数(多項式としての項の数)で「調整(適応)」されることになります。…と、関連づけられているわけですね。

 

双 1 次変換の成り立ち

式(1)に示した双 1 次変換とラプラス演算子𝑠とは、以下に説明するような関係でつながっています。この関係は[4]の 145 ページ以降に(たぶん他書にも)導出過程が詳しく掲載されています。ここではその考え方(エッセンス)のみを示してみましょう。

まず演算子𝑠は、アナログ信号(連続時間軸)処理においては「微分」を意味します。微分したい関数を𝑓(𝑡)とし、それをラプラス変換したものを𝐹(𝑠)とすると

数式3

図 2. 𝑧変換の考え方(CK で遅延させるイメージ)
図 2. 𝑧変換の考え方(CK で遅延させるイメージ)
図 3. OUT = IN(1 + 𝑧−1)のブロック
図 3. OUT = IN(1 + 𝑧−1)のブロック
図 4. 2 点のサンプル微分値の平均が実際の微分値だと考える
図 4. 2 点のサンプル微分値の平均が実際の微分値だと考える

として表されます[5]。右辺の第 2 項は電子回路においては無視してかまいません。これは関数𝑓(𝑡)についてプラス側からゼロにするものです(プラス側からのゼロの極限)。𝑓(𝑡)が𝑡 =ゼロで非連続な場合などに考えるべきアプローチです。

さていま、関数𝑓(𝑡)があったとしましょう。この微分𝑔(𝑡)は

数式4

として得ることができます[一番右は式(3)からです]。これを𝑠領域で示せば

数式5

とも表すことができます。ここで∆を極限(limit)で考えることなく、サンプリング動作として

数式6

だとして考えます。繰り返しますが、極限(limit)をとるものではありません。つまりアナログ(連続時間軸/数学)の微分と双 1 次変換に用いられる式というのは、まったく同一ではなく「ニアリ・イコール」だということです。ともあれ、

数式7

としてみます。𝑘はサンプルの番号(インデックス)です。微分で考えておらず、サンプリング動作として極限を取らず考えています。本質的に微分された値𝑔(𝑡)は𝑓(𝑘𝑇𝑆)と𝑓[(𝑘 + 1)𝑇𝑆]の中央位置のものになりますが、「変動値」になるということです。

ここで図 4 のように、時間𝑡での微分値𝑔(𝑡)を、ふたつの時刻(サンプリング・ポイント)𝑡= 𝑘𝑇𝑆と(𝑘 + 1)𝑇𝑆の微分値で考えてみます。ふたつの時刻の中間は𝑘番目のサンプルと𝑘 + 1 番目のサンプルの微分値の平均になります。「微分平均値」という考え方です。ここでも「ニアリ・イコール」です。

数式8

このように平均したものとして考えれば、結局

数式9

となりますので、これを𝑧変換を使って「1 サンプル(𝑇𝑆)の遅延」だとして表すと、

数式10

数式11

と計算でき、これを伝達関数とすれば

数式12

として

数式13

が得られることが分かります。式(5)

数式5-2

と式(13)から

数式14

となります。

ポイントは「ニアリ・イコール」ということです。つまりアナログ・フィルタと双 1 次変換されたデジタル・フィルタとでは、全く同じ出力波形/周波数特性は「得られない」ということになります。

 

アナログ・フィルタを双 1 次変換をもちいてデジタル・フィルタに変換してみる

アナログ・フィルタを双 1 次変換を用いてデジタル・フィルタに変換してみる例を示します。

図 5に示すアナログ・ローパス・フィルタの IN/OUT間の電圧伝達関数は

数式15

これをラプラス演算子𝑠= 𝑗ωを用いて𝑠の関数にしてみると

数式16

となります。ここに式(14)を代入してみると、

数式17

と双一次変換を行うことができます(一般的に2𝐶R − 𝑇𝑆 > 0になるため、分母の第 2 項はマイナス)。式(17)から得られるデジタル・フィルタのブロック図を図 6 に示します。式中の分子が図中前段の FIR(Finite Impulse Response)フィルタ、分母が図中後段の IIR(Ininite Impulse Response)フィルタに相当します。この分子・分母と FIR/IIR との関係については記載を省略します。詳細を知りたいかたはデジタル信号処理の書籍を参照してみてください。

 

シミュレーションで特性の差異を確認してみる

それでは式(15), (16)で示されるアナログ・フィルタ(図 5)の特性と、式(17)や図 6 で示される双一次変換されたデジタル・フィルタの特性とを比較してみましょう。用いる数値としては図 5の定数で、R = 1, C = 1 とします。サンプリング周波数は TS = 1 kHz にしてあります。

このシミュレーションは MATLAB 互換の GNU Octave を使用しました(デジタル・フィルタの特性は freqz という関数を用いました [6])。まず図 7 に、図 5 のアナログ・ローパス・フィルタによる入出力伝達特性を示します。つづいて図 8 に図 6 の双一次変換されたデジタル・フィルタによる入出力伝達特性を示します。ほぼ同じになっていることが分かりますね。

図 5. アナログ・ローパス・フィルタ
図 5. アナログ・ローパス・フィルタ
図 6. 図 5 のフィルタを双一次変換でデジタル・フィルタ に変換したもの(サンプリング周波数 1 kHz)
図 6. 図 5 のフィルタを双一次変換でデジタル・フィルタ に変換したもの(サンプリング周波数 1 kHz)
図 7. 図 5 のアナログ・フィルタの周波数特性を計算してみた(R = 1 Ω、C = 1 F)
図 7. 図 5 のアナログ・フィルタの周波数特性を計算してみた(R = 1 Ω、C = 1 F)
図 8. 図 6 のデジタル・フィルタの周波数特性を計算してみた(サンプリング周波数 1 kHz。freqz という関数を用いた)
図 8. 図 6 のデジタル・フィルタの周波数特性を計算してみた(サンプリング周波数 1 kHz。freqz という関数を用いた)

このように双一次変換を用いることで、アナログ・フィルタを「ほぼ」等価なデジタル・フィルタに置き換えることができるわけですね。ポイントは(繰り返しますが)「ニアリ・イコール」ということです。つまりアナログ・フィルタと双 1 次変換されたデジタル・フィルタとでは、「全く同じ」出力波形/周波数特性は「得られない」ということになります。

 

まとめ

この技術ノートでは、アナログ・フィルタの特性(ラプラス演算子 s で表されたもの)をデジタル領域(z 変換 z で表されたもの)でフィルタ計算させるための変換手法、「双一次変換」について検討してみました。アナログ・フィルタの特性にかなり近い特性のフィルタが実現できることが分かりました。

時間があればもっとデジタル・フィルタを学んだり、FPGA に実装してみたいと思ったりする今日この頃でありました。