マエカワの備忘録的な何か

思い立ったが吉日

インタラクティブシステム論 其の四 20170518

コンボリューション

出力を周波数領域ではなくて、時間領域でしたい!!
ということで… \displaystyle X(\omega)=H(\omega)F(\omega)を時間領域に直してやる.

 \displaystyle \begin{eqnarray}x(t)&=&\int_{-\infty}^\infty X(\omega)\exp(j\omega t)d\omega\\&=&\int_{-\infty}^\infty H(\omega)F(\omega)\exp(j\omega t)d\omega\\ &=&\int_{-\infty}^\infty \left(\int_{-\infty}^\infty f(\tau)\exp(-j\omega t)d\tau\right)\exp(j\omega t)d\omega\\&=&\int_{-\infty}^\infty f(\tau)\left(\int_{-\infty}^\infty H(\omega)\exp(j\omega (t-\tau))d\omega\right)d\tau\\&=&\int_{-\infty}^\infty f(\tau)h(t-\tau)d\tau\end{eqnarray}

出てきたこいつをコンボリューション(重畳積分)という.また、コンボリューションは

  \displaystyle x(t)=f(t)*h(t)=h(t)*f(t)

で表し、演算子は" \displaystyle *".
つまり、フーリエ変換して伝達関数をかけて…といった周波数領域での処理は時間領域ではコンボリューションを取ればいいことがわかった.

コンボリューションとは何か

フーリエ変換の時間領域verがコンボリューションだということはわかったが、これはそもそもどんなものなのだろうか??


結論から言うと、関数 f(t)を平均化するフィルタになっている.
 ex)
  \displaystyle h(t)=\begin{cases}0.5(-1\le t\le 1)\\0(others)\end{cases}
の時を考える.
  \displaystyle \begin{eqnarray}x(t)&=&\int_{-\infty}^\infty h(\tau)f(t-\tau)d\tau\\&=&\int_{-1}^1 0.5f(t-\tau)d\tau\end{eqnarray}
となり、これは任意の tにおける値を f(t) [t-1,t+1]までの値を足し合わせに 0.5をかけたものにするということ.離散的に考えると、 x(t)の値は \displaystyle \frac{f(t-1)+f(t)+f(t+1)}{2}になり、平均化していることがわかる。
ここで、もう一回 h(t)に注目したい.この関数をフーリエ変換したときに出てくるものは何か.前回も扱ったSINC関数になっている.これは高周波数の成分をカットする特徴を持っていたのでLPFとして作用する.つまり、時間領域での平均化は周波数領域でLPFになっているという対応関係がわかる.もっと簡単に言うと、「平均化は低周波数成分をカットする効果を持つ」ということ.

SINC関数についてもうちょっと

上で示した関数をフーリエ変換したときのグラフを出力するように書いてみた.

t1=[-1:0.1:1];
t2=[2:0.1:500];
t3=[-500:0.1:-2];
wave1=0.5*ones(t1);
wave2=zeros(t2);
wave3=zeros(t3);
wave=[wave3,wave1,wave2];

fourire=fft(wave);
power_spec=fourire.*conj(fourire);
//plot(power_spec);
plot(fourire,"r");

f:id:maekawa_yoshimiki_1119:20170623193200p:plain

上のグラフを見てもわかる通り、振動するため、正負が逆転してしまうところが必ずある.ここで高周波成分を漏らしてしまう.

次にHPFはどうなるのかを考えていく

元々の波形からLPFの分を引けばHPFになるんじゃないだろうか??
幅が2のLPFの一番簡単な形はは
  \displaystyle x(t)=\frac{f(t)+f(t-1)}{2}
なので、HPFは次のようになる.
  \displaystyle \begin{eqnarray}y(t)&=&f(t)-x(t)\\&=&f(t)-\frac{f(t)+f(t-1)}{2}\\&=&\frac{f(t)-f(t-1)}{2}\end{eqnarray}
ということで、これは差分をとっている.LPFが積分で表現されていたのに対してHPFは微分的に表現することができている.こんなところにも双対性を感じる.

FIRフィルタ

ここまでLPF、HPFを見てきたが、どれも一定時間前の信号を足したり引いたりして処理を行っている.このように、ここの信号を有限個足し合わせて信号を生成するフィルタのことをFIR(Finite Impulse Response)フィルタと呼ぶ.
これを応用して、現在の信号と一定時間前の信号と足し合わせて出力すると、これはエコーになる.