mixture-art@Q
技術+アイディア+世俗+なんとなく思ったこと、すべての融合がmixture-art
伝達関数ってなんスか?


音響関係に携わるエンジニアには常識

、という内容だが、
今あまり音とは関係無い仕事をしているせいか
「え、伝達関数ってなんスか?」という質問をくらった。
いーや、怒りませんよ、むしろ自分の指導の不十分さ、
ちょっと放置し過ぎたのではないか、後輩に真に優しい先輩であれたのか?お前は?
と自戒しました。いや、ホント

ということで頭の良い小学生ならわかるように説明しちゃおっかな♪

”関数”

っていうからには数学的な代物なわけなのでいちおー簡単に定義すると
「ある元々の状態から、別の状態に変化する過程や拘束条件のこと」

例えば「ボールを壁に投げつけたら」「正面に壁があったので」「ぶつかって跳ね返った」
投げつけたボールが跳ね返るには「壁があった」という条件があったわけよね。

「ウォータースライダーの上で手を離したら」「コースに沿って流れていって」「下に着いた」
下に着くのはコースに沿ってったからだよね。

これが

伝達関数。

『伝達』っていうくらいなので通信とかなら理解し易いかな。
ある信号を送信したときに受信側へどういうふうに伝達するかというのを関数にしたもの。
# 電話でも時間が遅れたり、ノイズが混ざったり、ちょっと聞き取りにくくなったりするよね

ちなみに伝達関数というのは便利なもので、伝達関数さえ押さえておけば
どんな入力があったとしても結果がわかるというシロモノです。

例えば先ほどの壁の話。
・壁がどこに配置されているか?
・壁のサイズは?
・反発力はどんなもんか?
などなど細かいことをすべて関数化しておけば
「真正面から投げた場合はどうか?」「じゃあワンバウンドの球だったら?」
「斜めから投げたらどうか?」「超速い球を投げたらどのくらい跳ね返るのか?」
などなどどんな条件だろうと数式でパパッと計算できる訳です。

実は

方程式

みたいなもの。

y=4x+2

なーんてものがありましたが、
x(入力)がいくつだとしても計算さえすればy(結果)がどうなるかはわかります。
これが関数ってやつだったよね。(上記は一次関数ってやつ)

伝達関数もこれらの親戚みたいなものです。

さて、

少しスロットルを開きましょか。

伝達関数はふつう

行列

で表現されます。
行列は簡単に言うと数字の集合体のことで

1 0 0

とか

1 0 0
2 1 2
0 3 1

とか整列して表現されるこんなやつ。
細かい部分はここでは良いです。「そんなもんかなー」くらいで。

伝達関数は、Aという元々の状態がFという伝達関数の影響でBになっちゃったー
ということを表現するためのもので数学上は行列のかけ算として書きます。

B = F・A

Bという状態はAにFをぶっかけるとできます。みたいな。

並び順はちょっと不自然なカンジがするかもしれないけど本質的な話ではないので
特に気にせず「こんなもん」で片付けといて。
例えば分数の分母と分子は、分母を下、分子を上に書くって決まってるよね。
その程度のもの。数式上の単なるルールです。

さて、ここからが伝達関数の面白いところ。

伝達関数のことを

「フィルタ」

なんて呼ぶこともありますが、
よく技術者が使うのが「逆フィルタをかける」という言葉。

これは広い意味では「問題を解く」という意味でもあります。

なんかふかーいカンジになっちゃった?

ま、ま、ゆっくりいきましょうか。

では簡単に一次関数の話だったとして

y=4x+2

について、例えば「x=2だとしたらyはどうなる?」というのは

y=4×2 + 2 = 10 で「計算してる」ってカンジ。

では、「yが10だとわかっていたとしたらxはいくつでしょうか?」というのは

10 = 4x +2
4x = 10 – 2 =8
x=4

って「問題を解いている」カンジ。
これが伝達関数や行列の計算で言う「逆フィルタをかける」ってやつだったりします。

入力を元に出力を導くのは、まぁ計算してるだけで、
出力がわかっているときに果たして入力はなんだったのか?と解くのが「逆フィルタ」なのです。
逆戻しってカンジ。

さて、

これを伝達関数の話に戻すと

B = F・A

に対して伝達関数Fの逆フィルタをかけることになります。
逆フィルタをかけるっていうのを数学的には
「左からFの逆行列をかける」と言いますが、まぁ感覚だけで。

Fの逆行列はFの-1乗と書きます。ここではF^(-1)と書いときます。

つまり数式は

F^(-1)・B = F^(-1)・F・A

逆フィルタをかけた際、“F^(-1)・F”は消えてなくなるのがルールです。
# むしろそうするための逆行列なのでね

したがって

A = F^(-1)・B

「入力Aは出力Bに伝達関数Fの逆フィルタをかければわかるんだぜ」となります。

さて、もう必要なものはすべてマスターしました。

ここからはこれがどういう風に

音響工学

に使われてるか、って話です。

AがBになる過程がF

その逆回しがF^(-1)

例えばシンプルな例。

あるところで演奏(A)したときに、それがあるホール(F)で反響して、
聞いている人にいいかんじ(B)に聴こえた。

B = F・A ・・・①

それでは家(H)で同じように演奏(A)を聞くといまいちな(C)に聴こえた。

C = H・A ・・・②

いまいちは嫌なのでいいかんじ(B)に聴かせたいなぁ、と思ったら
演奏は先ほどの演奏(A)と比べてどういう(D)ふうにすればいいのだろうか?
B = H・D  ・・・③
にするためには
D = ?・A ・・・④
っていう問題を『解く』ために使えます。

ちょーっと『数学!』ってカンジの話になりますがご辛抱を。
ターゲットはDとAがどういう関係にあるか、ってのを知りたいわけなので
とりあえず③を④っぽくするために「左からHの逆フィルタ」をかけてみましょ。

H^(-1)・B = H^(-1)・H・D
D = H^(-1)・B

おっとこれに①を代入すると

D = H^(-1)・F・A

となりました。
これでDをAと比べてどういうカンジにすればいいかFとHから解けるわけですね。



、、、わかったようなわからんような。でしょ?

なーにか引っかかりますよね。

そう。

「Fってなんだよ!」

「Hってどうやりゃわかるんだよ!」

「そもそも伝達関数ってどうやって出す訳?!」


まだまだある?ハナシは了解。

関数なんて偉そうなカンジするけどどこまでいってもこれは現実世界の話な訳で
結局は

測定

してみることでわかります。
ってか測定することで伝達関数を得るわけです。実際そうしているのです。

これはとても簡単な話で、
「わかりきっている入力を入れて」「出力がどうなるかを見ることで推理する」です。

例えば一次関数だとして

y=ax+b

のaやbが明らかになってなかったら以下みたいなことをやれば十分わかりますよね。
「とりあえずx=0を入れてみて」「yがいくつになるかを見る」
「とりあえずx=1を入れてみて」「yがいくつになるかを見る」

測定の際にもこれとまったくもって似たようなことをやることでFとかHがわかります。

「似たようなこと」って?

これは特殊な行列(I)を使うってことになります。

F・I = F

になっちゃうようなやつです。
かけ算でいうx1みたいな存在。

実際音響測定の際に使うのは

“インパルス”

ってやつで
時間で言うと
「ある瞬間に無限大に大きい音が出ていて、次の瞬間以降は全く音が無いもの」
周波数で言うと
「すべての周波数を等しく含む音」(ちょっとハードル高いかな、またこれは別途)
という特殊なものを使って測定するわけです。

これによってFやHが分かれば、

「家HにいるのにまるでホールFにいるように感じたり」

「いまいちCな演奏をびっくりいいかんじのBにすり替えたり」

というバーチャルなことができるようになります。

世の中いろんなバーチャル技術があり、それぞれ工夫を凝らしていますが、
基本的な理屈となっているのはこの伝達関数や逆フィルタのハナシなんですね。


mixture-art@Q トップへ戻る




Tags:,