COLUMN技術コラム

  • ホーム /
  • 技術コラム /
  • [No.35] MATLABとC言語による開発の比較 - それぞれの言語を開発において有効活用する方法 -

[No.35] MATLABとC言語による開発の比較 - それぞれの言語を開発において有効活用する方法 -

2019.07.31

MBD

システム開発では、C言語に加えてMATLABなどのシミュレーション言語を利用する機会が増えてきています。開発を効率よく行うためには、C言語とMATLABのどちらの方法が適切でしょうか。それは、開発ターゲットや開発事象により異なるので、それぞれの言語の特長を把握して、どの方法が適切であるかの判断が必要です。

本コラムでは、制御工学や通信工学、画像処理などで広く用いられているフィルタを例題に、C言語とMATLABによる開発の比較を行います。フィルタ設計に関しては、予備知識が必要ないように基礎から説明します。フィルタ設計から検証までの各プロセスにおいて、C言語とMATLABを使用したときの特長について解説します。

1.フィルタとは

フィルタという言葉で皆さんは何を連想するでしょうか。コーヒーのフィルタや空気清浄機のフィルタなどを連想されるのではないでしょうか。では、これらのフィルタに共通することは何でしょうか。それは不要なものを取り除くという働きです。コーヒーかすや、空気中のゴミや花粉を取り除くために用いられるものがフィルタです。

私たちの身の回りのエレクトロニクス製品でも、見えないところで電気的なフィルタがよく用いられています。たとえば、TVではチャンネルを選択すると、選択した放送局以外の不要な信号をフィルタで取り除くことで、見たいチャンネルの映像を見ることができます。またオーディオ製品では、信号処理の過程で発生した雑音をフィルタで取り除くことでクリアなサウンドを再生しています。スマートフォンの電源でも電圧変動を抑えるためにフィルタが使われています。フィルタが使われていないエレクトロニクス製品はほとんどないといってよいでしょう。

コーヒーや空気清浄機のフィルタでは、不要な物質の大きさよりも小さな隙間の繊維を用いることで不要な物質を取り除いています。では、電気的なフィルタでは、どうやって不要な信号を取り除いているのでしょうか。信号にはさまざまな周波数成分が含まれており、電気的なフィルタでは、この周波数を利用して不要な信号を取り除いています。周波数というのは1秒間に繰り返される波の数のことで、単位はHzを用います。具体例を用いて以下で説明します。

フィルタの種類 Fig.1 フィルタの種類

音声信号の主要な周波数成分は300~3.4kHzに分布していることが知られています。音声に300~10kHzの周波数範囲で均一に雑音が加わっている場合、3.4kHz以上の周波数成分を取り除くフィルタを用いることで3.4kHz以上の雑音が除去されて、よりクリアにその音声を聞くことができるようになります。電気的なフィルタには、この例のようにある周波数以上の成分を取り除くフィルタ(Fig.1(a)のローパスフィルタ)のほかに、Fig.1に示されるようにさまざまな特性のフィルタがあります。

2. MATLABとC言語による開発の比較

Fig.1(a)の振幅特性を持つローパスフィルタを設計するプログラムをC言語とMATLABで作成し、プログラムのコード効率や速度の比較などを行うことで、それぞれの言語の特長について述べていきます。わかりやすい例題として、フィルタ設計法の中で最も簡単な式で表される、バタワースフィルタと呼ばれる設計法を用います。

2.1 バタワースフィルタの振幅特性の理論式

バタワースフィルタの振幅特性は下記の式で与えられます。

式  (1)

ただし、式は虚数単位、式はフィルタ次数、式は定数のカットオフ周波数、は変数の周波数です。

バタワースフィルタの振幅特性 Fig.2 バタワースフィルタの振幅特性

Fig.2は、カットオフ周波数 を1にして、周波数 を0Hzから5Hzまで変化させたときの式(1)の値を対数でプロットしたものです。この図から、前述のローパスフィルタの特性となっていることがわかります。式がカットオフ周波数と同じ値1のとき、式(1)の値は(デシベルで表すと3dB)となります。このようにカットオフ周波数とは振幅特性が3dB減衰する周波数のことを指します。

  • 式

2.2 極の導出

フィルタ設計は、式(1)で与えられる振幅特性を持つフィルタの伝達関数を求めることです。この伝達関数を求めるために必要になるのが、極と呼ばれるものです。式(1)はラプラス演算子式を用いて表すと以下のように書き直すことができます。

式  (2)

ただし、式式です。式を角周波数、式をカットオフ角周波数といいます。

式(2)は複素関数 の2乗となっていますので、ある関数とその関数の共役を掛けたときに、この式の右辺になるような、ある関数がバタワースフィルタの伝達関数となります。分子は1なので、分母の関数がわかればフィルタの伝達関数が求まります。

以下では、簡単化のために式として、式が1と2のとき分母の関数がどのようになるのかについて考えていきます。


式のとき

式(2)の分母は式となり、式を満たす2つの根式を求めて式と展開したときの式式がバタワースフィルタの分母の関数になります。この根式のことをフィルタの極といいます。

ここでは、式(2)の分母の項式が-1になる式が1以上の奇数のときにも同じ考え方で一般解となるように、極式をオイラーの公式を用いて求めていきます。

オイラーの公式の幾何学的表示 Fig.3 オイラーの公式の幾何学的表示

オイラーの公式
式  (3)
を用いると、Fig.3に示されるように1という数字は式式は整数)と表すことができます。

よって極は、式を解くことで
式  (4)
から±1と求まります。

従って、式と展開できますので、式もしくは式のどちらか一方がバタワースフィルタの伝達関数の分母となります。どちらを選ぶべきかについては後述します。


式のとき

N=2のときの極配置 Fig.4 式のときの極配置

式(2)の分母は式となりますので、極は式を解くことで
式  (5)
となり、Fig.4の丸印で示されるように極は円周上に等間隔に分布します。

従って、式の4つの関数の中から2つの関数を選んで、それらを掛けたものがバタワースフィルタの伝達関数の分母になります。残りの2つの関数を掛けたものが、この関数の共役関数になります。

上記では簡単化のために式としていましたが、任意の式に対する極式は、式(4)、(5)から次式のようになります。

式  (6)

ただし、式です。

極の選択方法 Fig.5 極の選択方法

これらの2 個の極は、Fig.5に示されるように半径式の円周上に等間隔に並びます。

この中からどのようにして半数の式個の極を選ぶかについてですが、実は安定したフィルタを実現するためには、左半平面にある式個の極だけを選ぶ必要があります。すなわち、実部の符号が負になる極を選べばよいということになります。

*

次回は、極を求めるためのプログラムをMATLABとC言語で作成し比較するところから解説します。

技術コラム一覧へ戻る