IQ 処理して、実部だけ出力して良いのか?

備忘録です。
入力が実信号であっても、ディジタル信号処理の複素 FIR フィルタで負の周波数成分を除去した場合、信号は複素信号になります。これを現実の信号に戻す際、単純に虚部を捨ててしまって良いのでしょうか。本当は数学的に検証しなくてはいけないのでしょうが、もはや老境の頭では計算が厄介なので、直感を交えて考えてみることにしました。
少し厳密にいうと、考えなくてはいけないのは次の 2つのようです。

  • 実信号の負の周波数成分を捨てること
  • 複素信号の虚部を捨てること

まず前者です。(離散時間システムで考える)現実世界の余弦波(振幅は 1 とする)は \cos(\omega n) で表されますが、これをオイラーの公式で複素表現にすると  (\exp(j\omega n) + \exp(-j\omega n))/2 となります。いま、ここから負の周波数成分を捨ててしまうと、\exp(j\omega n)/2 だけが残ります。直感的には、この処理で元の余弦波のエネルギー(電気信号であれば電力)は半分になるように思えます。
数値を当てはめて検証してみます。たとえば、いま余弦波の周波数を標本化周波数の 1/4 とすると、もともとの信号は時間軸上で {1, 0, -1, 0, ...} ですが、負の周波数を捨ててしまうと、{1/2, j/2, -1/2, -j/2, ...} のようになります。エネルギーは変位の自乗和ですから、もともとの信号のエネルギー密度を 0.5/サンプル とすると、負の周波数を捨てた場合には 0.25/サンプルとなります。やはり、エネルギーが半分になると考えて良いように思えます。(位相が異なる「正弦波」については、別途考えてみます。)
次に後者です。負の周波数成分を捨てると {1/2, j/2, -1/2, -j/2, ...} のような変位が得られますが、ここから虚部を捨てて現実世界に戻すと、{1/2, 0, -1/2, 0, ...} のようになります。一般に(連続時間システムの)複素正弦波の自乗 \exp(j\omega t)^2 を 0 から 2\pi/\omega まで積分すると 2\pi になりますが、その実部を取り出した余弦波の自乗 \cos(\omega t)^2 を同じように積分すると \pi になりますので、やはりエネルギーが半分になると考えて良さそうです。
最後に実験をしてみました。実部(の一部)だけを通す複素 FIR フィルタを組んで、パスバンドの正弦波を通し、最後に虚部を捨てて実信号に戻してみたところ、振幅が半分(つまり、エネルギーが 1/4)になることを確認できました。このような信号処理系で振幅を補償するには、振幅 2倍のゲイン(つまり、およそ 6dB)を与えてやれば良いようです。
今度、もう少し数学的に検証してみたいと思います。(← たぶん、やらない。)