AIの片隅で(30) Googleの生成AI、Geminiにローパスフィルタを設計してもらう

Joseph Halfmoon

Googleの生成AI、Gemini様には過去回でVerilog使った論理設計や、エミッタ接地増幅回路など、好き勝手なお題に回答していただいとります。立派な回答いただけてます。デジタルでもアナログでも任せておけってか? 今回はまたGemini様に茫漠とした問いかけをしてしまいました。「ローパスフィルタを設計して」と。

AIの片隅で 投稿順index

※Google様の生成AI、Gemini(無料プランだけれども)を使って回路を設計してもらっています。

「ローパスフィルタを設計して」

我ながら茫漠とした問いかけであります。「ローパス」というだけで、フィルタの諸元は一切ありません。しかしGemini様は、こんな茫漠とした問いかけにも答えてくれるのです。こんな感じ。lPF0

「ローパスフィルタの設計には、以下の情報が必要です」ということで暗にもっと情報よこせよ!と要求されてます。その前に、最初の3案の時点で眺めておくと、以下の事実に気づきます。

プロンプトには「デジタル」フィルタとは指定していないのだけれど、アナログフィルタへの言及は一切ない。

3案ともフィルタにはFIRとIIRがあり、という感じでデジタルフィルタ一辺倒です。まあ、当方もGemini様にアナログフィルタを設計していただくつもりはないので、当方意図を見抜かれている?

なお、以下のようにハッキリと指定すれば、アナログフィルタも設計してくれます。

    1. パッシブ型のアナログローパスフィルタを設計して
    2. アクティブ型アナログローパスフィルタに変更して

1のように指定すれば、RCのパッシブ・フィルタらしい回路が、2の場合はオペアンプ使ったアクティブ・フィルタ(ちなみに使用オペアンプはTL072)が出力されました。ただし「エミッタ接地増幅回路」のときと同様、回路図なしで、突然R1、R2などと部品番号で記述されるので、アナログ素人の年寄はどこがR1でR2なの?と戸惑います。参照回路図でなくてもSPICEのネットリストくらい欲しかったな。。。

さて本題のデジタル・フィルタに戻ります。3案出力された回答案にはフィルタを設計するためにはいろいろ情報が必要だということをまず述べた上で、設計例的なものが後ろに書かれてました。勝手にかいつまむと以下のようです。

    • 回答案1、MATLAB利用と書かれているが具体コードはなし。MathWorks社の関連ページへのリンクあり。
    • 回答案2、具体的な設計例(フィルタ係数まで含む)あり、Python実装。
    • 回答案3、使用するツールとして、MATLAB、SciPy、FilterLabを列挙し、これらを指定すれば先にすすめるよ~という感じ。

MathWorks社のドキュメンテーションの充実は良く知られているところです。Helpファイルを読んでいるだけで、立派な人になったような気がします(気のせいだけど。)また、MATLAB自身のツールも超充実。唯一の欠点は有料だということです。特に商用利用の場合は、MATLAB本体に加えて、各種ツールボックスの料金も必要。立派なツールに見合っただけ、毎年年貢を納めね~となりません。非商用のライセンスも存在しかなりお安いですが貧乏な年寄は近寄りがたいです。理工系の大学等に在籍している諸君には、多分、MathWorks社から学生様向けの無料ライセンス(大学毎管理している?)が提供されている筈なのでありがたく使ってくだされ。

ま、その辺、Pythonであれば、むりょ~。ただし、MATLABのドキュメントの充実とツールと比べると凸凹ありかと。

フィルタの諸元を指定

回答案1のつづきで、以下をGemini様のプロンプトに打ち込みました。サンプリング周波数を1Hzとする正規化周波数のつもりっす。

33次、遮断周波数0.2Hz、サンプリング周波数1Hz、通過域減衰量1dB、阻止域減衰量40dB

すると以下のように具体的なMATLABのコードが生成されてきました。lPF_EC

黄色くマーカ引いた部分が大事です。MATLABには、フィルタ設計できる関数が含まれたツールボックス(通常別料金の筈)が複数あり、

    • 一般的なヤツらはSignal Processing Toolboxにいる
    • マニアック?なヤツらはDSP System Toolboxにいる

という感じです。多分DSP System Toolbox使う人は当然Signal Processing Toolbox持っている筈。そして黄色のマーカの関数は「マニアック(個人の感想デス)」な方っす。おお。。。

MATLABとの互換性の高いOctave(フリーね)には、MATLABでよく使う fir1関数(Signal Processing Toolbox所蔵)が実装されていたような気がしますが、こちらの方はどうか?Octave良く知らんので。辺境の年寄にはちょくら動かしてみることはできんのう。

「Scilabを使用して」

そこで苦し紛れに、「Scilabを使用して」と打ち込んでみました。すると、『Scilab』と書かれているコードが生成されてきました。ScilabはOctaveほどではないですが、MATLABと互換性のある処理が行えるソフトです。もちフリーね。ただしScilabは「我が道」を行く部分があり、独自関数が多いだけでなくMATLABと同名の関数があっても引数が違っていたりします。手元ではこれを使うことが多いのでScilabコードであれば即実行可能。しかし、Gemini様が『Scilab』と書いてお示しくださったコードは、MATLABじゃん。。。

まあ、Scilab使って33次のFIRローパスフィルタ、遮断周波数が正規化周波数で0.2Hzというものはいろいろ求めてあるので、Gemini様のコードを修正して動かすのは見送ってしまいました。以下はMATLAB、Octaveのfir1関数相当?じゃないかと思われるScilabのwfir関数を使って計算した別シリーズ記事です。

手習ひデジタル信号処理(120) Scilab、wfirでFIRフィルタを設計

MATLAB持っていたらな、Gemini様のコードを走らせられたんだがのう。高望みだな。

AIの片隅で(29) Googleの生成AI、Geminiにトランジスタを変更してもらう へ戻る

AIの片隅で(31) Googleの生成AI、Gemini、PIC16にメモリを接続してね へ進む