朝礼があるかと思ったけど無かった。午前中は休みの間に来たスパムメールの処理や、メールアドレスの変更に伴うメルマガなどの登録変更。
連休前に始めたデジタルフィルタの実装を昼前から再開した。まずはデジタルフィルタの係数を計算するクラスを整理する。まず今回の目的に必要でないコードを削除して条件分岐を減らして高速化・省メモリ化する。(さらに削除した箇所のためにリンクしていた外部ライブラリも不要になる。)
コードのスリム化が終わったら呼び出し側から使いやすいようにクラスのインターフェースを整理する。そうやって整理したソースとヘッダを本番のプロジェクト(Borland C++ Builderのプロジェクトファイル)に追加する。本番のプロジェクトには前に実装したデジタルフィルタの係数計算コードが含まれているので、それを追加したクラスの機能を呼び出すように変更する。以上でホスト側PCの実装は終わり。
続いて装置側のファームウェアにフィルタ演算のコードを実装する。既に入力-演算-出力という信号の流れは出来ているので、その途中にあるフィルタ演算関数の内容を書き換えて、必要に応じて変数を用意してやれば良い。
夕方には一通りの実装が終わった。波形生成器の正弦波を入力してフィルタの効果を確認してみると、以前のデジタルフィルタに比べると明らかに特性が良くなっている。期待した通りエイリアシングリップルもほとんど見られない。
が、困ったことにデジタルフィルタを通すと信号の振幅が増幅されるという現象が現れた。しかもカットオフ周波数を下げるとその増幅率が上がっていく。本当ならカットオフ周波数以下の信号の増幅率は1であって欲しい。係数のスケーリングはしてあるのだけど、まだ何か間違いがあるんだろうか?


歯医者のために定時後すぐ外出。歯医者の後は会社に戻って外国語会話の研修(?)。社員は10人ほど出席していた。今回が初回ということでまずは基本となる発音の練習。難しい。周りの社員はテキストを見ながら講師の発音を真似ていたが、講師の口の形や動きを見て真似をする方がやりやすいんじゃなかろうか。
ちなみに講師の人は資格等を持っているわけでは無さそうなので、研修は発音の確認などの補助的なものと考えて、日本人向けに書かれたテキストを自分で読むのをメインにするのが良さそうだ。