FFTによるステレオ信号処理

先週末の実験結果をじっと考えています。

f(x) = FFT→周波数フィルタ→逆FFT

という処理を行うとき、f(x)が線形で*1、かつim(x) = 0のときに im(f(x)) = 0 ならば*2

f(x+jy) = f(x) + jf(y)

になります。これを利用して、L R 両チャンネルに同じ信号処理を行うことができます。

f(L+jR) = f(L) + jf(R)

モノラルな信号を取り扱う場合も、隣接するブロックを同時に取り扱えますので信号処理速度が倍になります。
よく似たアイデアに、実FFTがあります。実FFTはN点の実数データにFFTを行うときに、N/2点ずつを実、虚部にふりわけて計算し、後処理を施してN点に仕立てる方式です。ほぼ、倍の性能が出るのと、メモリ消費量が少ないので重宝されます。

*1:我ながらくどい。直感的には線形と言い切れることがほぼ理解できているし、数学的にも線形のはず

*2:つまり、xが実数のときにf(x)も実数にとどまるならば