(57)【要約】      （修正有）【課題】長さＮの離散時間信号ｘ［ｎ］と長さＭのフィルタ係数ｈ［ｍ］の畳み込み演算の演算量等を低減する。【解決手段】N,Mは、M-1≦(P-N)/2を満足する。離散時間信号x[n]を、x1[n],x2[n]に分割し、x1[n]の長さをP/2-(M-1)、x2[n]の長さを残りの長さとし、x1[n]及びx2[n]にゼロ詰めをして、長さP/2、Qのゼロ詰めデータx1′[n]，x2′[n]を得る。Qは、N2+M-1以上の最小の２の乗数である。h[m]にゼロ詰めをして、x1′[n],x2′[n]に対応したゼロ詰めデータh1′[n],h2′[n]を得る。各ゼロ詰めデータにＦＦＴを行い、周波数領域で乗算し、その乗算結果に対してＩＦＦＴを行って、２つの離散時間信号y1[n],y2[n]を得て、重複加算法で加算して、出力離散時間信号y[n]を得る。Q≦P/2となるため、非分割方式より、演算量等を低減できる。【選択図】図２
2010219582.tif 000002
【特許請求の範囲】
【請求項１】
長さＮ（Ｎは整数）の離散時間信号を、長さＭ（Ｍは整数、Ｎ≧Ｍ−１）のフィルタ係数を持つＦＩＲフィルタに入力した場合の出力を得るフィルタリング装置であって、
上記長さＮの離散時間信号を複数分割して、複数個の離散時間信号を得る分割部と、
上記分割部で得られた各離散時間信号の後に適当な数のゼロを詰めて、長さが２の乗数となる複数個のゼロ詰めデータを得る第１のゼロ詰め部と、
上記第１のゼロ詰め部で得られた各ゼロ詰めデータに対して高速フーリエ変換を行って、複数個の周波数領域データを得る第１の高速フーリエ変換部と、
上記長さＭのフィルタ係数の後にゼロを詰めて、上記第１のゼロ詰め部で得られた各ゼロ詰めデータに対応した長さを持つ複数個のゼロ詰めデータを得る第２のゼロ詰め部と、
上記第２のゼロ詰め部で得られた各ゼロ詰めデータに対して高速フーリエ変換を行って、複数個の周波数領域データを得る第２の高速フーリエ変換部と、
上記第１の高速フーリエ変換部で得られた各周波数領域データに、上記第２の高速フーリエ変換部で得られた各周波数領域データを乗算して、複数個の乗算結果を得る乗算部と、
上記乗算部で得られた各乗算結果に対して逆高速フーリエ変換を行って、複数個の離散時間信号を得る逆高速フーリエ変換部と、
上記逆高速フーリエ変換部で得られた各離散時間信号を加算して、出力離散時間信号を得る加算部
を備えるフィルタリング装置。
【請求項２】
上記分割部は、上記長さＮの離散時間信号を２分割して、２個の離散時間信号を得、
上記第１のゼロ詰め部は、（Ｎ＋Ｍ−１）以上の最小の２の乗数の長さをＬとするとき、長さがＬ／２のゼロ詰めデータと、長さがＬ／２以下のゼロ詰めデータを得る
請求項１に記載のフィルタリング装置。
【請求項３】
上記Ｎ以上の最小の２の乗数をＰとするとき、上記Ｎおよび上記Ｍは、Ｍ−１≦（Ｐ−Ｎ）／２を満足し、
上記分割部は、上記長さＮの離散時間信号を、（Ｐ／２−（Ｍ−１））の長さの離散時間信号と、（Ｎ−Ｐ／２＋（Ｍ−１））の長さの離散時間信号に分割する
請求項２に記載のフィルタリング装置。
【請求項４】
上記Ｎ以上の最小の２の乗数をＰとするとき、上記Ｎおよび上記Ｍは、Ｐ−Ｎ＜Ｍ−１≦Ｐ―Ｎ／２を満足し、
上記分割部は、上記長さＮの離散時間信号を、（Ｐ−（Ｍ−１））の長さの離散時間信号と、（Ｎ−Ｐ＋（Ｍ−１））の長さの離散時間信号に分割する
請求項２に記載のフィルタリング装置。
【請求項５】
長さＮ（Ｎは整数）の離散時間信号を、長さＭ（Ｍは整数、Ｎ≧Ｍ−１）のフィルタ係数を持つＦＩＲフィルタに入力した場合の出力を得るフィルタリング方法であって、
上記長さＮの離散時間信号を複数分割して、複数個の離散時間信号を得る分割ステップと、
上記分割ステップで得られた各離散時間信号の後に（Ｍ−１）個以上のゼロを詰めて、長さが２の乗数となる複数個のゼロ詰めデータを得る第１のゼロ詰めステップと、
上記第１のゼロ詰めステップで得られた各ゼロ詰めデータに対して高速フーリエ変換を行って、複数個の周波数領域データを得る第１の高速フーリエ変換ステップと、
上記長さＭのフィルタ係数の後にゼロを詰めて、上記第１のゼロ詰めステップで得られた各ゼロ詰めデータに対応した長さを持つ複数個のゼロ詰めデータを得る第２のゼロ詰めステップと、
上記第２のゼロ詰めステップで得られた各ゼロ詰めデータに対して高速フーリエ変換を行って、複数個の周波数領域データを得る第２の高速フーリエ変換ステップと、
上記第１の高速フーリエ変換ステップで得られた各周波数領域データに、上記第２の高速フーリエ変換ステップで得られた各周波数領域データを乗算して、複数個の乗算結果を得る乗算ステップと、
上記乗算ステップで得られた各乗算結果に対して逆高速フーリエ変換を行って、複数個の離散時間信号を得る逆高速フーリエ変換ステップと、
上記逆高速フーリエ変換ステップで得られた各離散時間信号を加算して、出力離散時間信号を得る加算ステップ
を備えるフィルタリング方法。
【請求項６】
長さＮ（Ｎは整数）の離散時間信号を、長さＭ（Ｍは整数、Ｎ≧Ｍ−１）のフィルタ係数を持つＦＩＲフィルタに入力した場合の出力を得るために、
コンピュータを、
上記長さＮの離散時間信号を複数分割して、複数個の離散時間信号を得る分割手段と、
上記分割手段で得られた各離散時間信号の後に（Ｍ−１）個以上のゼロを詰めて、長さが２の乗数となる複数個のゼロ詰めデータを得る第１のゼロ詰め手段と、
上記第１のゼロ詰め手段で得られた各ゼロ詰めデータに対して高速フーリエ変換を行って、複数個の周波数領域データを得る第１の高速フーリエ変換手段と、
上記長さＭのフィルタ係数の後にゼロを詰めて、上記第１のゼロ詰め手段で得られた各ゼロ詰めデータに対応した長さを持つ複数個のゼロ詰めデータを得る第２のゼロ詰め手段と、
上記第２のゼロ詰め手段で得られた各ゼロ詰めデータに対して高速フーリエ変換を行って、複数個の周波数領域データを得る第２の高速フーリエ変換手段と、
上記第１の高速フーリエ変換手段で得られた各周波数領域データに、上記第２の高速フーリエ変換手段で得られた各周波数領域データを乗算して、複数個の乗算結果を得る乗算手段と、
上記乗算手段で得られた各乗算結果に対して逆高速フーリエ変換を行って、複数個の離散時間信号を得る逆高速フーリエ変換手段と、
上記逆高速フーリエ変換手段で得られた各離散時間信号を加算して、出力離散時間信号を得る加算手段
として機能させるプログラム。
【請求項７】
長さＮ（Ｎは整数）の離散時間信号を、長さＭ（Ｍは整数、Ｎ≧Ｍ−１）のフィルタ係数を持つＦＩＲフィルタに入力した場合の出力を得るフィルタリング部を複数備え、３チャネル以上の離散音声時間信号から２チャネルの離散音声時間信号を生成するサラウンドプロセッサであって、
上記フィルタリング部は、
上記長さＮの離散時間音声信号を複数分割して、複数個の離散時間音声信号を得る分割部と、
上記分割部で得られた各離散時間音声信号の後に（Ｍ−１）個以上のゼロを詰めて、長さが２の乗数となる複数個のゼロ詰めデータを得る第１のゼロ詰め部と、
上記第１のゼロ詰め部で得られた各ゼロ詰めデータに対して高速フーリエ変換を行って、複数個の周波数領域データを得る第１の高速フーリエ変換部と、
上記長さＭのフィルタ係数の後にゼロを詰めて、上記第１のゼロ詰め部で得られた各ゼロ詰めデータに対応した長さを持つ複数個のゼロ詰めデータを得る第２のゼロ詰め部と、
上記第２のゼロ詰め部で得られた各ゼロ詰めデータに対して高速フーリエ変換を行って、複数個の周波数領域データを得る第２の高速フーリエ変換部と、
上記第１の高速フーリエ変換部で得られた各周波数領域データに、上記第２の高速フーリエ変換部で得られた各周波数領域データを乗算して、複数個の乗算結果を得る乗算部と、
上記乗算部で得られた各乗算結果に対して逆高速フーリエ変換を行って、複数個の離散時間音声信号を得る逆高速フーリエ変換部と、
上記逆高速フーリエ変換部で得られた各離散時間音声信号を加算して、出力離散時間音声信号を得る加算部を有する
サラウンドプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、フィルタリング装置、フィルタリング方法、プログラムおよびサラウンドプロセッサに関し、詳しくは、離散時間信号とフィルタ係数の畳み込み演算を、高速フーリエ変換を用いて周波数領域での乗算により行うフィルタリング装置等に関する。
【背景技術】
【０００２】
長さＮ（Ｎは整数）の離散時間信号を、長さＭ（Ｍは整数）のフィルタ係数を持つＦＩＲ（Finiteimpulse Response:有限インパルス応答）フィルタに入力した場合の出力を求める方法を考える。ＦＩＲフィルタは、インパルス応答の継続時間が有限のフィルタである。長さＮの離散時間信号をｘ［ｎ］（ｎ＝０，１，２，・・・，Ｎ−１）、長さＭのフィルタ係数をｈ［ｍ］（ｍ＝０，１，２，・・・，Ｍ−１）、出力をｙ［ｎ］（ｎ＝０，１，２，・・・，Ｎ−１）とする。ここで、ｘ［ｎ］およびｈ［ｍ］は実数であり、Ｎ≧Ｍ−１を満たしているものとする。
【０００３】
フィルタ係数がｈ［ｍ］のＦＩＲフィルタに離散時間信号ｘ［ｎ］を入力した場合の出力ｙ［ｎ］は、（１）式に示すように、時間領域での畳み込み演算により求まることが知られている。以降、時間領域での畳み込み演算を「方式Ａ」と呼ぶことにする。
【数１】
2010219582.tif 000003
【０００４】
「方式Ａ」の他に、ｘ［ｎ］、ｈ［ｍ］のＤＦＴ（Discrete Fourier Transform：離散フーリエ変換）を求め、これらを乗算し、ＩＤＦＴ（Inverse Discrete Fourier Transform：逆離散フーリエ変換）することにより、「方式Ａ」と同値の演算結果を得る方法もある。
【０００５】
ｘ［ｎ］、ｈ［ｍ］のＮ点ＤＦＴをそれぞれＸ［ｋ］、Ｈ［ｋ］とし、ｋ＝０，１，２，・・・，Ｎ−１とする。ｘ［ｎ］、ｈ［ｍ］のＮ点ＤＦＴを求め、乗算を行った結果をＹ′［ｋ］とする。この場合、Ｙ′［ｋ］は、（２）式で表される、
【数２】
2010219582.tif 000004
【０００６】
ここで、Ｙ′［ｋ］のＮ点ＩＤＦＴをｙ′［ｎ］とすると、循環畳み込み定理より、ｙ′［ｎ］は、（３）式のように表わされる。
【数３】
2010219582.tif 000005
【０００７】
ここで、ｘ［ｎ−ｍ］Nは、ｘ［ｎ］を右にｍだけ循環シフトしたものである。すなわち、ｘ［ｎ］とｈ［ｍ］を、ＤＦＴを用いて周波数領域で乗算したものの逆ＤＦＴは、時間領域でｘ［ｎ］を右にｍだけ循環シフトした信号とｈ［ｍ］との畳み込み演算となり、ｙ［ｎ］とｙ′［ｎ］は同値とはならない。
【０００８】
そこで、ｘ［ｎ］の後ろに（Ｍ−１）個のゼロを詰め行うことにより、周波数領域で乗算し、ＩＤＦＴを行って得た結果ｙ′［ｎ］と、時間領域での畳み込み演算結果ｙ［ｎ］を同値にする方法が知られている（例えば、非特許文献１参照）。すなわち、このようなゼロ詰めの処理を行うことで、時間領域での畳み込み演算を周波数領域での乗算に置き換えることができる。
【０００９】
ここで、計算コストの削減のためＤＦＴではなくＦＦＴ（Fast FourierTransform：高速フーリエ変換）を用いることにする。この場合、ＦＦＴ処理前に、データ長を２の乗数にする必要がある。すなわち、ＦＦＴを用いて周波数領域での乗算により時間領域での畳み込み演算と同値の演算を実現する場合、循環畳み込み定理による制約およびＦＦＴを行うための制約を考慮し、ｘ［ｎ］の後ろに（Ｍ−１）個以上の０を詰め、その長さ（変換長）を２の乗数にして演算を行わねばならない。
【００１０】
このような処理を行い、ＦＦＴを用いて周波数領域での乗算により畳み込みを実現する方法を「方式Ｂ」と呼ぶことにする。Ｎ，Ｍが大きくなるほど、演算量の面において、「方式Ｂ」は「方式Ａ」に優位であることが知られている。
【００１１】
図１３は、変換長をＬ（Ｌは２の乗数）とおき、ｘ［ｎ］とｈ［ｍ］の畳み込み演算を「方式Ｂ」で行うフィルタリング装置２００の構成例を示している。このフィルタリング装置２００は、ゼロ詰め部２０１と、高速フーリエ変換部２０２と、ゼロ詰め部２０３と、高速フーリエ変換部２０４と、乗算部２０５と、逆高速フーリエ変換部２０６を有している。
【００１２】
ゼロ詰め部２０１は、長さＮの離散時間信号ｘ［ｎ］（０≦ｎ≦Ｎ−１）の後に（Ｌ−Ｎ）個のゼロを詰めて、ゼロ詰めデータｘ′［ｎ］（０≦ｎ≦Ｌ−１）を得る。高速フーリエ変換部２０２は、ゼロ詰め部２０１で得られたゼロ詰めデータｘ′［ｎ］に対してＦＦＴ（高速フーリエ変換）を行って、周波数領域データＸ［ｋ］（０≦ｋ≦Ｌ−１）を得る。
【００１３】
ゼロ詰め部２０３は、長さＭのフィルタ係数ｈ［ｍ］（０≦ｍ≦Ｍ−１）の後に（Ｌ−Ｍ）個のゼロを詰めて、ゼロ詰めデータｈ′［ｎ］（０≦ｎ≦Ｌ−１）を得る。高速フーリエ変換部２０４は、ゼロ詰め部２０３で得られたゼロ詰めデータｈ′［ｎ］に対してＦＦＴ（高速フーリエ変換）を行って、周波数領域データＨ［ｋ］（０≦ｋ≦Ｌ−１）を得る。
【００１４】
乗算部２０５は、高速フーリエ変換部２０２で得られた周波数領域データＸ［ｋ］と高速フーリエ変換部２０４で得られた周波数領域データＨ［ｋ］とを乗算して、乗算結果Ｙ［ｋ］（０≦ｋ≦Ｌ−１）を得る。そして、逆高速フーリエ変換部２０６は、乗算部２０５で得られた乗算結果Ｙ［ｋ］に対してＩＦＦＴ（逆高速フーリエ変換）を行って、出力離散時間信号ｙ［ｎ］（０≦ｎ≦Ｌ−１）を得る。
【００１５】
図１３のフィルタリング装置２００の動作を説明する。フィルタリング対象の長さＮの離散時間信号ｘ［ｎ］は、ゼロ詰め部２０１に供給される。このゼロ詰め部２０１では、長さＮの離散時間信号ｘ［ｎ］の後に（Ｌ−Ｎ）個のゼロが詰められ、長さ（変換長）Ｌのゼロ詰めデータｘ′［ｎ］が得られる。このゼロ詰めデータｘ′［ｎ］は高速フーリエ変換部２０２に供給される。この高速フーリエ変換部２０２では、ゼロ詰めデータｘ′［ｎ］に対してＦＦＴ（高速フーリエ変換）が行われて、周波数領域データＸ［ｋ］（０≦ｋ≦Ｌ−１）が得られる。
【００１６】
また、長さＭのフィルタ係数ｈ［ｍ］は、ゼロ詰め部２０３に供給される。このゼロ詰め部２０３では、長さＭのフィルタ係数ｈ［ｍ］の後に（Ｌ−Ｍ）個のゼロが詰められ、長さ（変換長）Ｌのゼロ詰めデータｈ′［ｎ］が得られる。このゼロ詰めデータｈ′［ｎ］は高速フーリエ変換部２０４に供給される。この高速フーリエ変換部２０４では、ゼロ詰めデータｈ′［ｎ］に対してＦＦＴ（高速フーリエ変換）が行われて、周波数領域データＨ［ｋ］が得られる。
【００１７】
高速フーリエ変換部２０２で得られた周波数領域データＸ［ｋ］および高速フーリエ変換部２０４で得られた周波数領域データＨ［ｋ］は乗算部２０５に供給される。この乗算部２０５では、周波数領域データＸ［ｋ］と周波数領域データＨ［ｋ］が乗算されて、乗算結果Ｙ［ｋ］が得られる。この乗算結果Ｙ［ｋ］は逆高速フーリエ変換部２０６に供給される。この逆高速フーリエ変換部２０６では、乗算結果Ｙ［ｋ］に対してＩＦＦＴ（逆高速フーリエ変換）が行われて、出力離散時間信号ｙ［ｎ］が得られる。
【先行技術文献】
【非特許文献】
【００１８】
【非特許文献１】Alan V. Oppenheim, Ronald W.Schafer: “DISCRETE-TIME SIGNAL PROCESSING”, PRENTICLE HALL, pp.548-560
【発明の概要】
【発明が解決しようとする課題】
【００１９】
上述したように、「方式Ｂ」においては、時間領域での畳み込み演算と同値の演算を行うために長さＮの離散時間信号ｘ［ｎ］の後ろに（Ｍ−１）個以上のゼロを詰め、さらにＦＦＴを行うためにその長さ（変換長）を２の乗数にして演算を行わねばならない。
【００２０】
ここで、Ｎ以上の最小の２の乗数をＰとする。図１４（ａ）は、（Ｎ＋Ｍ−１）の値がＰより少し小さい場合を示している。また、図１４（ｂ）は、（Ｎ＋Ｍ−１）の値がＰより少し大きい場合を示している。このように、（Ｎ＋Ｍ−１）の値がＰより少し大きい場合は、少し小さい場合に比べ、変換長がＰだけ異なり、演算量、メモリ使用量とも約２倍となってしまう。
【００２１】
この発明の目的は、離散時間信号とフィルタ係数の畳み込み演算を、高速フーリエ変換を用いて周波数領域での乗算により行う場合にあって、演算量およびメモリ使用量の低減を図ることにある。
【課題を解決するための手段】
【００２２】
この発明の概念は、
長さＮ（Ｎは整数）の離散時間信号を、長さＭ（Ｍは整数、Ｎ≧Ｍ−１）のフィルタ係数を持つＦＩＲフィルタに入力した場合の出力を得るフィルタリング装置であって、
上記長さＮの離散時間信号を複数分割して、複数個の離散時間信号を得る分割部と、
上記分割部で得られた各離散時間信号の後に適当な数のゼロを詰めて、長さが２の乗数となる複数個のゼロ詰めデータを得る第１のゼロ詰め部と、
上記第１のゼロ詰め部で得られた各ゼロ詰めデータに対して高速フーリエ変換を行って、複数個の周波数領域データを得る第１の高速フーリエ変換部と、
上記長さＭのフィルタ係数の後にゼロを詰めて、上記第１のゼロ詰め部で得られた各ゼロ詰めデータに対応した長さを持つ複数個のゼロ詰めデータを得る第２のゼロ詰め部と、
上記第２のゼロ詰め部で得られた各ゼロ詰めデータに対して高速フーリエ変換を行って、複数個の周波数領域データを得る第２の高速フーリエ変換部と、
上記第１の高速フーリエ変換部で得られた各周波数領域データに、上記第２の高速フーリエ変換部で得られた各周波数領域データを乗算して、複数個の乗算結果を得る乗算部と、
上記乗算部で得られた各乗算結果に対して逆高速フーリエ変換を行って、複数個の離散時間信号を得る逆高速フーリエ変換部と、
上記逆高速フーリエ変換部で得られた各離散時間信号を加算して、出力離散時間信号を得る加算部
を備えるフィルタリング装置にある。
【００２３】
この発明においては、長さＮの離散時間信号が複数分割されて、複数個の離散時間信号が得られる。そして、各離散時間信号とフィルタ係数の畳み込み演算が高速フーリエ変換を用いて周波数領域での乗算により行われる。そして、各畳み込み演算結果が最終的に加算されて出力離散時間信号が得られる。
【００２４】
例えば、分割部では、長さＮの離散時間信号が２分割されて、２個の離散時間信号が得られる。そして、第１のゼロ詰め部では、（Ｎ＋Ｍ−１）以上の最小の２の乗数の長さをＬとするとき、長さがＬ／２のゼロ詰めデータと、長さがＬ／２以下のゼロ詰めデータが得られる。
【００２５】
また、例えば、Ｎ以上の最小の２の乗数をＰとするとき、Ｎ，Ｍは、Ｍ−１≦（Ｐ−Ｎ）／２を満足し、分割部では、長さＮの離散時間信号が、（Ｐ／２−（Ｍ−１））の長さの離散時間信号と、（Ｎ−Ｐ／２＋（Ｍ−１））の長さの離散時間信号に分割される。また、例えば、Ｎ以上の最小の２の乗数をＰとするとき、Ｎ，Ｍは、Ｐ−Ｎ＜Ｍ−１≦Ｐ―Ｎ／２を満足し、分割部では、長さＮの離散時間信号が、（Ｐ−（Ｍ−１））の長さの離散時間信号と、（Ｎ−Ｐ＋（Ｍ−１））の長さの離散時間信号に分割される。
【００２６】
長さＮ（Ｎは整数）の離散時間信号を長さＭ（Ｍは整数、Ｎ≧Ｍ−１）のフィルタ係数を持つＦＩＲフィルタに入力した場合の出力を得る際に、上述したように、長さＮの離散時間信号を複数個の離散時間信号に分割して処理することで、従来方式に比べて、演算量およびメモリ使用量の低減が可能となる。
【発明の効果】
【００２７】
この発明によれば、長さＮ（Ｎは整数）の離散時間信号を、長さＭ（Ｍは整数、Ｎ≧Ｍ−１）のフィルタ係数を持つＦＩＲフィルタに入力した場合の出力を得る際に、従来方式に比べて、演算量およびメモリ使用量を低減できる。
【図面の簡単な説明】
【００２８】
【図１】この発明の第１の実施の形態としてのサラウンドプロセッサの構成例を示すブロック図である。
【図２】サラウンドプロセッサを構成するフィルタリング部の構成例（Ｎ＋Ｍ−１≦Ｐで２分割する場合）を示すブロック図である。
【図３】長さＮの離散時間信号ｘ［ｎ］を、離散時間信号ｘ１［ｎ］，ｘ２［ｎ］に２分割してフィルタリング処理することを説明するための図である。
【図４】サラウンドプロセッサを構成するフィルタリング部の他の構成例（Ｎ＋Ｍ−１＞Ｐで２分割する場合）を示すブロック図である。
【図５】長さＮの離散時間信号ｘ［ｎ］を、離散時間信号ｘ１［ｎ］，ｘ２［ｎ］に２分割してフィルタリング処理することを説明するための図である。
【図６】Ｎ＝１４７２のとき、Ｍ−１を１からＮまで変化させたときの、「方式Ａ」（Ａ＿Ｍｅｔｈｏｄ）、「方式Ｂ」（Ｂ＿Ｍｅｔｈｏｄ）、「本方式」（Ｐｒｏｐｏｓａｌ＿Ｍｅｔｈｏｄ）の加算回数を比較して示す図である。
【図７】Ｎ＝１４７２のとき、Ｍ−１を１からＮまで変化させたときの、「方式Ａ」（Ａ＿Ｍｅｔｈｏｄ）、「方式Ｂ」（Ｂ＿Ｍｅｔｈｏｄ）、「本方式」（Ｐｒｏｐｏｓａｌ＿Ｍｅｔｈｏｄ）の乗算回数を比較して示す図である。
【図８】サラウンドプロセッサを構成するフィルタリング部の他の構成例（Ｎ＋Ｍ−１≦Ｐで３分割する場合）を示すブロック図である。
【図９】長さＮの離散時間信号ｘ［ｎ］を、離散時間信号ｘ１［ｎ］，ｘ２［ｎ］，ｘ３［ｎ］に３分割してフィルタリング処理することを説明するための図である。
【図１０】サラウンドプロセッサを構成するフィルタリング部の他の構成例（Ｎ＋Ｍ−１＞Ｐで３分割する場合）を示すブロック図である。
【図１１】長さＮの離散時間信号ｘ［ｎ］を、離散時間信号ｘ１［ｎ］，ｘ２［ｎ］，ｘ３［ｎ］に３分割してフィルタリング処理することを説明するための図である。
【図１２】フィルタリング処理（離散時間信号ｘ［ｎ］とフィルタ係数ｈ［ｍ］の畳み込み演算）をソフトウェアで行うコンピュータ装置の構成例を示すブロック図である。
【図１３】従来のフィルタリング装置の構成例を示すブロック図である。
【図１４】離散時間信号ｘ［ｎ］とフィルタ係数ｈ［ｍ］の畳み込み演算を高速フーリエ変換を用いて周波数領域での乗算により行う場合における変換長の説明を行うための図である。
【発明を実施するための形態】
【００２９】
以下、発明を実施するための形態（以下、「実施の形態」とする）について説明する。なお、説明は以下の順序で行う。
１．実施の形態
２．変形例
【００３０】
＜１．実施の形態＞
［サラウンドプロセッサの構成例］
図１は、実施の形態としてのサラウンドプロセッサ１０の構成例を示している。このサラウンドプロセッサ１０は、５．１チャネルのマルチチャネル音声を、２チャネルステレオ音声にダウンミックスする。
【００３１】
このサラウンドプロセッサ１０は、左音声信号成分を得るためのフィルタリング部１１-1〜１１-6と、右音声信号成分を得るためのフィルタリング部１２-1〜１２-6と、加算部１３と、加算部１４を有している。
【００３２】
５．１チャネルのマルチチャネル音声信号は、左前方信号Ｓｉｇ＿Ｌ、右前方信号Ｓｉｇ＿Ｒ、正面信号Ｓｉｇ＿Ｃ、低音出力信号Ｓｉｇ＿ＬＦＥ、左後方信号Ｓｉｇ＿ＲＬおよび右後方信号Ｓｉｇ＿ＲＲにより構成されている。また、２チャネルステレオ音声信号は、左音声信号Ｓｉｇ＿Ｌ′および右音声信号Ｓｉｇ＿Ｒ′により構成されている。
【００３３】
フィルタリング部１１-1（Filter_L_L）は、左前方信号Ｓｉｇ＿Ｌから左音声信号成分を抽出する。フィルタリング部１１-2（Filter_L_R）は、右前方信号Ｓｉｇ＿Ｒから左音声信号成分を抽出する。フィルタリング部１１-3（Filter_L_C）は、正面信号Ｓｉｇ＿Ｃから左音声信号成分を抽出する。
【００３４】
フィルタリング部１１-4（Filter_L_LFE）は、低音出力信号Ｓｉｇ＿ＬＦＥから左音声信号成分を抽出する。フィルタリング部１１-5（Filter_L_RL）は、左後方信号Ｓｉｇ＿ＲＬから左音声信号成分を抽出する。フィルタリング部１１-6（Filter_L_RR）は、右後方信号Ｓｉｇ＿ＲＲから左音声信号成分を抽出する。そして、加算部１３は、フィルタリング部１１-1〜１１-6で抽出された各左音声信号成分を加算して、左音声信号Ｓ＿Ｌ′を得る。
【００３５】
また、フィルタリング部１２-1（Filter_R_L）は、左前方信号Ｓｉｇ＿Ｌから右音声信号成分を抽出する。フィルタリング部１２-2（Filter_R_R）は、右前方信号Ｓｉｇ＿Ｒから右音声信号成分を抽出する。フィルタリング部１２-3（Filter_R_C）は、正面信号Ｓｉｇ＿Ｃから右音声信号成分を抽出する。
【００３６】
フィルタリング部１２-4（Filter_R_LFE）は、低音出力信号Ｓｉｇ＿ＬＦＥから右音声信号成分を抽出する。フィルタリング部１２-5（Filter_R_RL）は、左後方信号Ｓｉｇ＿ＲＬから右音声信号成分を抽出する。フィルタリング部１２-6（Filter_R_RR）は、右後方信号Ｓｉｇ＿ＲＲから右音声信号成分を抽出する。そして、加算部１４は、フィルタリング部１２-1〜１２-6で抽出された各右音声信号成分を加算して、右音声信号Ｓ＿Ｒ′を得る。
【００３７】
［フィルタリング部の構成例］
図２、図４は、上述のフィルタリング部１１-1〜１１-6，１２-1〜１２-6として使用されるフィルタリング部１００Ａ，１００Ｂの構成例を示している。フィルタリング部１００Ａ，１００Ｂは、長さＮ（Ｎは整数）の離散時間信号（離散時間音声信号）ｘ［ｎ］（０≦ｎ≦Ｎ−１）を長さＭ（Ｍは整数）のフィルタ係数ｈ［ｍ］（０≦ｍ≦Ｍ−１）を持つＦＩＲフィルタに入力した場合の出力を得る。このフィルタリング部１００Ａ，１００Ｂは、離散時間信号ｘ［ｎ］とフィルタ係数ｈ［ｍ］の畳み込み演算を、高速フーリエ変換を用いて、周波数領域での乗算により行う。ここで、ｘ［ｎ］およびｈ［ｍ］は実数であり、Ｎ≧Ｍ−１を満たしている。
【００３８】
図２のフィルタリング部１００Ａは、Ｎ以上の最小の２の乗数をＰとするとき、Ｎ，Ｍは、Ｍ−１≦（Ｐ−Ｎ）／２を満足するように構成される。フィルタリング部１００Ａでは、長さＮの離散時間信号ｘ［ｎ］が、（Ｐ／２−（Ｍ−１））の長さの離散時間信号ｘ１［ｎ］と、（Ｎ−Ｐ／２＋（Ｍ−１））の長さの離散時間信号ｘ２［ｎ］に分割されて処理される。図２のフィルタリング部１００Ａにおいては、上述したように、長さＮの離散時間信号ｘ［ｎ］が、２個の離散時間信号ｘ１［ｎ］，ｘ２［ｎ］に分割して処理されるため、従来の「Ｂ方式」に比べて、演算量およびメモリ使用量の低減が可能となる。この理由については、後述する。
【００３９】
また、図４のフィルタリング部１００Ｂは、Ｎ以上の最小の２の乗数をＰとするとき、Ｎ，Ｍは、Ｐ−Ｎ＜Ｍ−１≦Ｐ−Ｎ／２を満足するように構成される。フィルタリング部１００Ｂでは、長さＮの離散時間信号ｘ［ｎ］が、（Ｐ−（Ｍ−１））の長さの離散時間信号ｘ１［ｎ］と、（Ｎ−Ｐ＋（Ｍ−１））の長さの離散時間信号ｘ２［ｎ］に分割されて処理される。図４のフィルタリング部１００Ｂにおいては、上述したように、長さＮの離散時間信号ｘ［ｎ］が、２個の離散時間信号ｘ１［ｎ］，ｘ２［ｎ］に分割して処理されるため、従来の「Ｂ方式」に比べて、演算量およびメモリ使用量の低減が可能となる。この理由については、後述する。
【００４０】
最初に、図２のフィルタリング部１００Ａを説明する。この図２のフィルタリング部１００Ａは、Ｎ以上の最小の２の乗数をＰとするとき、図３（ａ）に示すように、Ｎ＋Ｍ−１≦Ｐを満たす場合に適用される。この場合、Ｎ＋Ｍ−１以上の最小の２の乗数はＰであることから、「Ｂ方式」で処理を行うときの変換長はＰとなる。
【００４１】
このフィルタリング部１００Ａは、２分割部１０１Ａと、ゼロ詰め部１０２Ａと、高速フーリエ変換部１０３Ａと、ゼロ詰め部１０４Ａと、高速フーリエ変換部１０５Ａを有している。また、このフィルタリング部１００Ａは、ゼロ詰め部１０６Ａと、高速フーリエ変換部１０７Ａと、ゼロ詰め部１０８Ａと、高速フーリエ変換部１０９Ａを有している。さらに、このフィルタリング部１００Ａは、乗算部１１０Ａと、逆高速フーリエ変換部１１１Ａと、乗算部１１２Ａと、逆高速フーリエ変換部１１３Ａと、加算部１１４Ａを有している。
【００４２】
２分割部１０１Ａは、長さＮの離散時間信号ｘ［ｎ］（０≦ｎ≦Ｎ−１）を２分割して、２個の離散時間信号ｘ１［ｎ］（０≦ｎ≦Ｎ１−１），ｘ２［ｎ］（０≦ｎ≦Ｎ２−１）を得る。ここで、離散時間信号ｘ１［ｎ］の長さＮ１は、図３（ｂ）に示すように、Ｐ／２−（Ｍ−１）とされる。また、ｘ２［ｎ］の長さＮ２は、図３（ｃ）に示すように、Ｎ−Ｐ／２＋（Ｍ−１）とされる。
【００４３】
ゼロ詰め部１０２Ａは、長さＮ１の離散時間信号ｘ１［ｎ］の後に、（Ｐ／２−Ｎ１）個、すなわち（Ｍ−１）個のゼロを詰めて、長さＰ／２のゼロ詰めデータｘ１′［ｎ］（０≦ｎ≦Ｐ／２−１）を得る。高速フーリエ変換部１０３Ａは、ゼロ詰め部１０２Ａで得られたゼロ詰めデータｘ１′［ｎ］に対してＦＦＴ（高速フーリエ変換）を行って、周波数領域データＸ１［ｋ］（０≦ｋ≦Ｐ／２−１）を得る。
【００４４】
ゼロ詰め部１０４Ａは、長さＮ２の離散時間信号ｘ２［ｎ］の後に、（Ｑ−Ｎ２）個、すなわち（Ｑ−（Ｎ−Ｐ／２＋（Ｍ−１））個のゼロを詰めて、長さＱのゼロ詰めデータｘ２′［ｎ］（０≦ｎ≦Ｑ−１）を得る。ここで、Ｑは、Ｎ２＋Ｍ−１以上の最小の２の乗数である。高速フーリエ変換部１０５Ａは、ゼロ詰め部１０４Ａで得られたゼロ詰めデータｘ２′［ｎ］に対してＦＦＴ（高速フーリエ変換）を行って、周波数領域データＸ２［ｋ］（０≦ｋ≦Ｑ−１）を得る。
【００４５】
ゼロ詰め部１０６Ａは、長さＭのフィルタ係数ｈ［ｍ］（０≦ｍ≦Ｍ−１）の後に（Ｐ／２−Ｍ）個のゼロを詰めて、上述のゼロ詰めデータｘ１′［ｎ］（０≦ｎ≦Ｐ／２−１）に対応した長さのゼロ詰めデータｈ１′［ｎ］（０≦ｎ≦Ｐ／２−１）を得る。高速フーリエ変換部１０７Ａは、ゼロ詰め部１０６Ａで得られたゼロ詰めデータｈ１′［ｎ］に対してＦＦＴ（高速フーリエ変換）を行って、周波数領域データＨ１［ｋ］（０≦ｋ≦Ｐ／２−１）を得る。
【００４６】
ゼロ詰め部１０８Ａは、長さＭのフィルタ係数ｈ［ｍ］（０≦ｍ≦Ｍ−１）の後に（Ｑ−Ｍ）個のゼロを詰めて、上述のゼロ詰めデータｘ２′［ｎ］（０≦ｎ≦Ｑ−１）に対応した長さのゼロ詰めデータｈ２′［ｎ］（０≦ｎ≦Ｑ−１）を得る。高速フーリエ変換部１０９Ａは、ゼロ詰め部１０８Ａで得られたゼロ詰めデータｈ２′［ｎ］に対してＦＦＴ（高速フーリエ変換）を行って、周波数領域データＨ２［ｋ］（０≦ｋ≦Ｑ−１）を得る。
【００４７】
乗算部１１０Ａは、高速フーリエ変換部１０３Ａで得られた周波数領域データＸ１［ｋ］と高速フーリエ変換部１０７Ａで得られた周波数領域データＨ１［ｋ］とを乗算して、乗算結果Ｙ１［ｋ］（０≦ｋ≦Ｐ／２−１）を得る。そして、逆高速フーリエ変換部１１１Ａは、乗算部１１０Ａで得られた乗算結果Ｙ１［ｋ］に対してＩＦＦＴ（逆高速フーリエ変換）を行って、離散時間信号ｙ１［ｎ］（０≦ｎ≦Ｐ／２−１）を得る。
【００４８】
乗算部１１２Ａは、高速フーリエ変換部１０５Ａで得られた周波数領域データＸ２［ｋ］と高速フーリエ変換部１０９Ａで得られた周波数領域データＨ２［ｋ］とを乗算して、乗算結果Ｙ２［ｋ］（０≦ｋ≦Ｑ−１）を得る。そして、逆高速フーリエ変換部１１３Ａは、乗算部１１２Ａで得られた乗算結果Ｙ２［ｋ］に対してＩＦＦＴ（逆高速フーリエ変換）を行って、離散時間信号ｙ２［ｎ］（０≦ｎ≦Ｑ−１）を得る。
【００４９】
加算部１１４Ａは、逆高速フーリエ変換部１１１Ａで得られた離散時間信号ｙ１［ｎ］と、逆高速フーリエ変換部１１３Ａで得られた離散時間信号ｙ２［ｎ］を加算して、出力離散時間信号ｙ［ｎ］を得る。この出力離散時間信号ｙ［ｎ］は、離散時間信号ｘ［ｎ］とフィルタ係数ｈ［ｍ］の畳み込み演算結果となる。なお、加算部１１４Ａは、分割せずに離散時間信号ｘ［ｎ］とフィルタ係数ｈ［ｍ］の畳み込み演算を行う場合との整合性を取るため、重複加算法（上述の非特許文献１参照）により、出力離散時間信号ｙ［ｎ］を求める。
【００５０】
図２のフィルタリング部１００Ａの動作を説明する。フィルタリング対象の長さＮの離散時間信号（離散時間音声信号）ｘ［ｎ］は、２分割部１０１Ａに供給される。この２分割部１０１Ａでは、長さＮの離散時間信号ｘ［ｎ］（０≦ｎ≦Ｎ−１）が２分割される。そして、この２分割部１０１Ａからは、長さＮ１＝Ｐ／２−（Ｍ−１）の離散時間信号ｘ１［ｎ］（０≦ｎ≦Ｎ１−１）が得られる。また、この２分割部１０１Ａからは、長さＮ２＝Ｎ−Ｐ／２＋（Ｍ−１）の離散時間信号ｘ２［ｎ］（０≦ｎ≦Ｎ２−１）が得られる。
【００５１】
２分割部１０１Ａで得られた離散時間信号ｘ１［ｎ］は、ゼロ詰め部１０２Ａに供給される。このゼロ詰め部１０２Ａでは、長さＮ１の離散時間信号ｘ１［ｎ］の後に（Ｍ−１）個のゼロが詰められ、長さ（変換長）Ｐ／２のゼロ詰めデータｘ１′［ｎ］が得られる。このゼロ詰めデータｘ１′［ｎ］は高速フーリエ変換部１０３Ａに供給される。この高速フーリエ変換部１０３Ａでは、ゼロ詰めデータｘ１′［ｎ］に対してＦＦＴ（高速フーリエ変換）が行われて、周波数領域データＸ１［ｋ］（０≦ｋ≦Ｐ／２−１）が得られる。
【００５２】
また、２分割部１０１Ａで得られた離散時間信号ｘ２［ｎ］は、ゼロ詰め部１０４Ａに供給される。このゼロ詰め部１０４Ａでは、長さＮ２の離散時間信号ｘ２［ｎ］の後にＱ−（Ｎ−Ｐ／２＋（Ｍ−１））個のゼロが詰められ、長さ（変換長）Ｑのゼロ詰めデータｘ２′［ｎ］が得られる。このゼロ詰めデータｘ２′［ｎ］は高速フーリエ変換部１０５Ａに供給される。この高速フーリエ変換部１０５Ａでは、ゼロ詰めデータｘ２′［ｎ］に対してＦＦＴ（高速フーリエ変換）が行われて、周波数領域データＸ２［ｋ］（０≦ｋ≦Ｑ−１）が得られる。
【００５３】
また、長さＭのフィルタ係数ｈ［ｍ］は、ゼロ詰め部１０６Ａに供給される。このゼロ詰め部１０６Ａでは、長さＭのフィルタ係数ｈ［ｍ］の後に（Ｐ／２−Ｍ）個のゼロが詰められ、長さ（変換長）Ｐ／２のゼロ詰めデータｈ１′［ｎ］が得られる。このゼロ詰めデータｈ１′［ｎ］は高速フーリエ変換部１０７Ａに供給される。この高速フーリエ変換部１０７Ａでは、ゼロ詰めデータｈ１′［ｎ］に対してＦＦＴ（高速フーリエ変換）が行われて、周波数領域データＨ１［ｋ］が得られる。
【００５４】
また、長さＭのフィルタ係数ｈ［ｍ］は、ゼロ詰め部１０８Ａに供給される。このゼロ詰め部１０８Ａでは、長さＭのフィルタ係数ｈ［ｍ］の後に（Ｑ−Ｍ）個のゼロが詰められ、長さ（変換長）Ｑのゼロ詰めデータｈ２′［ｎ］が得られる。このゼロ詰めデータｈ２′［ｎ］は高速フーリエ変換部１０９Ａに供給される。この高速フーリエ変換部１０９Ａでは、ゼロ詰めデータｈ２′［ｎ］に対してＦＦＴ（高速フーリエ変換）が行われて、周波数領域データＨ２［ｋ］が得られる。
【００５５】
高速フーリエ変換部１０３Ａで得られた周波数領域データＸ１［ｋ］および高速フーリエ変換部１０７Ａで得られた周波数領域データＨ１［ｋ］は乗算部１１０Ａに供給される。この乗算部１１０Ａでは、周波数領域データＸ１［ｋ］と周波数領域データＨ１［ｋ］が乗算されて、乗算結果Ｙ１［ｋ］が得られる。この乗算結果Ｙ１［ｋ］は逆高速フーリエ変換部１１１Ａに供給される。この逆高速フーリエ変換部１１１Ａでは、乗算結果Ｙ１［ｋ］に対してＩＦＦＴ（逆高速フーリエ変換）が行われて、離散時間信号ｙ１［ｎ］が得られる。
【００５６】
また、高速フーリエ変換部１０５Ａで得られた周波数領域データＸ２［ｋ］および高速フーリエ変換部１０９Ａで得られた周波数領域データＨ２［ｋ］は乗算部１１２Ａに供給される。この乗算部１１２Ａでは、周波数領域データＸ２［ｋ］と周波数領域データＨ２［ｋ］が乗算されて、乗算結果Ｙ２［ｋ］が得られる。この乗算結果Ｙ２［ｋ］は逆高速フーリエ変換部１１３Ａに供給される。この逆高速フーリエ変換部１１３Ａでは、乗算結果Ｙ２［ｋ］に対してＩＦＦＴ（逆高速フーリエ変換）が行われて、離散時間信号ｙ２［ｎ］が得られる。
【００５７】
逆高速フーリエ変換部１１１Ａで得られた離散時間信号ｙ１［ｎ］および逆高速フーリエ変換部１１３Ａで得られた離散時間信号ｙ２［ｎ］は、加算部１１４Ａに供給される。加算部１１４Ａでは、重複加算法により、離散時間信号ｙ１［ｎ］，ｙ２［ｎ］が加算されて、出力離散時間信号ｙ［ｎ］が得られる。
【００５８】
次に、図４のフィルタリング部１００Ｂを説明する。この図４のフィルタリング部１００Ｂは、Ｎ以上の最小の２の乗数をＰとするとき、図５（ａ）に示すように、Ｎ＋Ｍ−１＞Ｐを満たす場合に適用される。この場合、Ｎ＋Ｍ−１以上の最小の２の乗数は２Ｐであることから、「Ｂ方式」で処理を行うときの変換長は２Ｐとなる。
【００５９】
このフィルタリング部１００Ｂは、２分割部１０１Ｂと、ゼロ詰め部１０２Ｂと、高速フーリエ変換部１０３Ｂと、ゼロ詰め部１０４Ｂと、高速フーリエ変換部１０５Ｂを有している。また、このフィルタリング部１００Ｂは、ゼロ詰め部１０６Ｂと、高速フーリエ変換部１０７Ｂと、ゼロ詰め部１０８Ｂと、高速フーリエ変換部１０９Ｂを有している。さらに、このフィルタリング部１００Ｂは、乗算部１１０Ｂと、逆高速フーリエ変換部１１１Ｂと、乗算部１１２Ｂと、逆高速フーリエ変換部１１３Ｂと、加算部１１４Ｂを有している。
【００６０】
２分割部１０１Ｂは、長さＮの離散時間信号ｘ［ｎ］（０≦ｎ≦Ｎ−１）を２分割して、２個の離散時間信号ｘ１［ｎ］（０≦ｎ≦Ｎ１−１），ｘ２［ｎ］（０≦ｎ≦Ｎ２−１）を得る。ここで、離散時間信号ｘ１［ｎ］の長さＮ１は、図５（ｂ）に示すように、Ｐ−（Ｍ−１）とされる。また、ｘ２［ｎ］の長さＮ２は、図５（ｃ）に示すように、Ｎ−Ｐ＋（Ｍ−１）とされる。
【００６１】
ゼロ詰め部１０２Ｂは、長さＮ１の離散時間信号ｘ１［ｎ］の後に、（Ｐ−Ｎ１）個、すなわち（Ｍ−１）個のゼロを詰めて、長さＰのゼロ詰めデータｘ１′［ｎ］（０≦ｎ≦Ｐ−１）を得る。高速フーリエ変換部１０３Ｂは、ゼロ詰め部１０２Ｂで得られたゼロ詰めデータｘ１′［ｎ］に対してＦＦＴ（高速フーリエ変換）を行って、周波数領域データＸ１［ｋ］（０≦ｋ≦Ｐ−１）を得る。
【００６２】
ゼロ詰め部１０４Ｂは、長さＮ２の離散時間信号ｘ２［ｎ］の後に、（Ｒ−Ｎ２）個、すなわち（Ｒ−（Ｎ−Ｐ＋（Ｍ−１））個のゼロを詰めて、長さＲのゼロ詰めデータｘ２′［ｎ］（０≦ｎ≦Ｒ−１）を得る。ここで、Ｒは、Ｎ２＋Ｍ−１以上の最小の２の乗数である。高速フーリエ変換部１０５Ｂは、ゼロ詰め部１０４Ｂで得られたゼロ詰めデータｘ２′［ｎ］に対してＦＦＴ（高速フーリエ変換）を行って、周波数領域データＸ２［ｋ］（０≦ｋ≦Ｒ−１）を得る。
【００６３】
ゼロ詰め部１０６Ｂは、長さＭのフィルタ係数ｈ［ｍ］（０≦ｍ≦Ｍ−１）の後に（Ｐ−Ｍ）個のゼロを詰めて、上述のゼロ詰めデータｘ１′［ｎ］（０≦ｎ≦Ｐ−１）に対応した長さのゼロ詰めデータｈ１′［ｎ］（０≦ｎ≦Ｐ−１）を得る。高速フーリエ変換部１０７Ｂは、ゼロ詰め部１０６Ｂで得られたゼロ詰めデータｈ１′［ｎ］に対してＦＦＴ（高速フーリエ変換）を行って、周波数領域データＨ１［ｋ］（０≦ｋ≦Ｐ−１）を得る。
【００６４】
ゼロ詰め部１０８Ｂは、長さＭのフィルタ係数ｈ［ｍ］（０≦ｍ≦Ｍ−１）の後に（Ｒ−Ｍ）個のゼロを詰めて、上述のゼロ詰めデータｘ２′［ｎ］（０≦ｎ≦Ｒ−１）に対応した長さのゼロ詰めデータｈ２′［ｎ］（０≦ｎ≦Ｒ−１）を得る。高速フーリエ変換部１０９Ｂは、ゼロ詰め部１０８Ｂで得られたゼロ詰めデータｈ２′［ｎ］に対してＦＦＴ（高速フーリエ変換）を行って、周波数領域データＨ２［ｋ］（０≦ｋ≦Ｒ−１）を得る。
【００６５】
乗算部１１０Ｂは、高速フーリエ変換部１０３Ｂで得られた周波数領域データＸ１［ｋ］と高速フーリエ変換部１０７Ｂで得られた周波数領域データＨ１［ｋ］とを乗算して、乗算結果Ｙ１［ｋ］（０≦ｋ≦Ｐ−１）を得る。そして、逆高速フーリエ変換部１１１Ｂは、乗算部１１０Ｂで得られた乗算結果Ｙ１［ｋ］に対してＩＦＦＴ（逆高速フーリエ変換）を行って、離散時間信号ｙ１［ｎ］（０≦ｎ≦Ｐ−１）を得る。
【００６６】
乗算部１１２Ｂは、高速フーリエ変換部１０５Ｂで得られた周波数領域データＸ２［ｋ］と高速フーリエ変換部１０９Ｂで得られた周波数領域データＨ２［ｋ］とを乗算して、乗算結果Ｙ２［ｋ］（０≦ｋ≦Ｒ−１）を得る。そして、逆高速フーリエ変換部１１３Ｂは、乗算部１１２Ｂで得られた乗算結果Ｙ２［ｋ］に対してＩＦＦＴ（逆高速フーリエ変換）を行って、離散時間信号ｙ２［ｎ］（０≦ｎ≦Ｒ−１）を得る。
【００６７】
加算部１１４Ｂは、逆高速フーリエ変換部１１１Ｂで得られた離散時間信号ｙ１［ｎ］と、逆高速フーリエ変換部１１３Ｂで得られた離散時間信号ｙ２［ｎ］を加算して、出力離散時間信号ｙ［ｎ］を得る。この出力離散時間信号ｙ［ｎ］は、離散時間信号ｘ［ｎ］とフィルタ係数ｈ［ｍ］の畳み込み演算結果となる。なお、加算部１１４Ｂは、分割せずに離散時間信号ｘ［ｎ］とフィルタ係数ｈ［ｍ］の畳み込み演算を行う場合との整合性を取るため、重複加算法（上述の非特許文献１参照）により、出力離散時間信号ｙ［ｎ］を求める。
【００６８】
図４のフィルタリング部１００Ａの動作を説明する。フィルタリング対象の長さＮの離散時間信号（離散時間音声信号）ｘ［ｎ］は、２分割部１０１Ｂに供給される。この２分割部１０１Ｂでは、長さＮの離散時間信号ｘ［ｎ］（０≦ｎ≦Ｎ−１）が２分割される。そして、この２分割部１０１Ｂからは、長さＮ１＝Ｐ−（Ｍ−１）の離散時間信号ｘ１［ｎ］（０≦ｎ≦Ｎ１−１）が得られる。また、この２分割部１０１Ｂからは、長さＮ２＝Ｎ−Ｐ＋（Ｍ−１）の離散時間信号ｘ２［ｎ］（０≦ｎ≦Ｎ２−１）が得られる。
【００６９】
２分割部１０１Ｂで得られた離散時間信号ｘ１［ｎ］は、ゼロ詰め部１０２Ｂに供給される。このゼロ詰め部１０２Ｂでは、長さＮ１の離散時間信号ｘ１［ｎ］の後に（Ｍ−１）個のゼロが詰められ、長さ（変換長）Ｐのゼロ詰めデータｘ１′［ｎ］が得られる。このゼロ詰めデータｘ１′［ｎ］は高速フーリエ変換部１０３Ｂに供給される。この高速フーリエ変換部１０３Ｂでは、ゼロ詰めデータｘ１′［ｎ］に対してＦＦＴ（高速フーリエ変換）が行われて、周波数領域データＸ１［ｋ］（０≦ｋ≦Ｐ−１）が得られる。
【００７０】
また、２分割部１０１Ｂで得られた離散時間信号ｘ２［ｎ］は、ゼロ詰め部１０４Ｂに供給される。このゼロ詰め部１０４Ｂでは、長さＮ２の離散時間信号ｘ２［ｎ］の後にＲ−（Ｎ−Ｐ＋（Ｍ−１））個のゼロが詰められ、長さ（変換長）Ｒのゼロ詰めデータｘ２′［ｎ］が得られる。このゼロ詰めデータｘ２′［ｎ］は高速フーリエ変換部１０５Ｂに供給される。この高速フーリエ変換部１０５Ｂでは、ゼロ詰めデータｘ２′［ｎ］に対してＦＦＴ（高速フーリエ変換）が行われて、周波数領域データＸ２［ｋ］（０≦ｋ≦Ｒ−１）が得られる。
【００７１】
また、長さＭのフィルタ係数ｈ［ｍ］は、ゼロ詰め部１０６Ｂに供給される。このゼロ詰め部１０６Ｂでは、長さＭのフィルタ係数ｈ［ｍ］の後に（Ｐ−Ｍ）個のゼロが詰められ、長さ（変換長）Ｐのゼロ詰めデータｈ１′［ｎ］が得られる。このゼロ詰めデータｈ１′［ｎ］は高速フーリエ変換部１０７Ｂに供給される。この高速フーリエ変換部１０７Ｂでは、ゼロ詰めデータｈ１′［ｎ］に対してＦＦＴ（高速フーリエ変換）が行われて、周波数領域データＨ１［ｋ］が得られる。
【００７２】
また、長さＭのフィルタ係数ｈ［ｍ］は、ゼロ詰め部１０８Ｂに供給される。このゼロ詰め部１０８Ｂでは、長さＭのフィルタ係数ｈ［ｍ］の後に（Ｒ−Ｍ）個のゼロが詰められ、長さ（変換長）Ｒのゼロ詰めデータｈ２′［ｎ］が得られる。このゼロ詰めデータｈ２′［ｎ］は高速フーリエ変換部１０９Ｂに供給される。この高速フーリエ変換部１０９Ｂでは、ゼロ詰めデータｈ２′［ｎ］に対してＦＦＴ（高速フーリエ変換）が行われて、周波数領域データＨ２［ｋ］が得られる。
【００７３】
高速フーリエ変換部１０３Ｂで得られた周波数領域データＸ１［ｋ］および高速フーリエ変換部１０７Ｂで得られた周波数領域データＨ１［ｋ］は乗算部１１０Ｂに供給される。この乗算部１１０Ｂでは、周波数領域データＸ１［ｋ］と周波数領域データＨ１［ｋ］が乗算されて、乗算結果Ｙ１［ｋ］が得られる。この乗算結果Ｙ１［ｋ］は逆高速フーリエ変換部１１１Ｂに供給される。この逆高速フーリエ変換部１１１Ｂでは、乗算結果Ｙ１［ｋ］に対してＩＦＦＴ（逆高速フーリエ変換）が行われて、離散時間信号ｙ１［ｎ］が得られる。
【００７４】
また、高速フーリエ変換部１０５Ｂで得られた周波数領域データＸ２［ｋ］および高速フーリエ変換部１０９Ｂで得られた周波数領域データＨ２［ｋ］は乗算部１１２Ｂに供給される。この乗算部１１２Ｂでは、周波数領域データＸ２［ｋ］と周波数領域データＨ２［ｋ］が乗算されて、乗算結果Ｙ２［ｋ］が得られる。この乗算結果Ｙ２［ｋ］は逆高速フーリエ変換部１１３Ｂに供給される。この逆高速フーリエ変換部１１３Ｂでは、乗算結果Ｙ２［ｋ］に対してＩＦＦＴ（逆高速フーリエ変換）が行われて、離散時間信号ｙ２［ｎ］が得られる。
【００７５】
逆高速フーリエ変換部１１１Ｂで得られた離散時間信号ｙ１［ｎ］および逆高速フーリエ変換部１１３Ｂで得られた離散時間信号ｙ２［ｎ］は、加算部１１４Ｂに供給される。加算部１１４Ｂでは、重複加算法により、離散時間信号ｙ１［ｎ］，ｙ２［ｎ］が加算されて、出力離散時間信号ｙ［ｎ］が得られる。
【００７６】
［演算量およびメモリ使用量の低減理由］
図２、図４のフィルタリング部１００Ａ，１００Ｂにおいて、演算量およびメモリ使用量が低減される理由を説明する。
【００７７】
図２のフィルタリング部１００Ａにおいては、図３（ａ）に示すように、Ｎ＋Ｍ−１≦Ｐを満たす場合に適用される。そして、図３（ｂ），（ｃ）に示すように、長さＮの離散時間信号ｘ［ｎ］が、長さＮ１＝Ｐ／２−（Ｍ−１）の離散時間信号ｘ１［ｎ］と、長さＮ２＝Ｎ−Ｐ／２＋（Ｍ−１）の離散時間信号ｘ２［ｎ］に２分割されて処理される。ここで、Ｎ１≧Ｎ２である場合、すなわち、Ｍ−１≦（Ｐ−Ｎ）／２のとき、ｘ２［ｎ］の変換長Ｑ（２の乗数）は、ｘ１［ｎ］の変換長Ｐ／２以下となる。
【００７８】
図２のフィルタリング部１００Ａにおいては、上述したように、Ｎ，Ｍが、Ｍ−１≦Ｐ−Ｎを満足するように構成される。したがって、ｘ２［ｎ］の変換長Ｑ（２の乗数）は、ｘ１［ｎ］の変換長Ｐ／２以下となり、長さＮの離散時間信号ｘ［ｎ］を分割せずに、変換長がＰである「方式Ｂ」で処理する場合に比べて、演算量およびメモリ使用量を低減することが可能となる。
【００７９】
なお、Ｎ，Ｍが、Ｍ−１≦（Ｐ−Ｎ）／２を満足せず、（Ｐ−Ｎ）／２＜Ｍ−１≦Ｐ−Ｎを満たす場合には、ｘ２［ｎ］の変換長Ｑを、ｘ１［ｎ］の変換長Ｐ／２以下とすることができず、Ｑ＝Ｐとなる。この場合、「方式Ｂ」で処理する場合に比べて、演算量およびメモリ使用量の面で劣位となる。
【００８０】
また、図４のフィルタリング部１００Ｂにおいては、図５（ａ）に示すように、Ｎ＋Ｍ−１＞Ｐを満たす場合に適用される。そして、図５（ｂ），（ｃ）に示すように、長さＮの離散時間信号ｘ［ｎ］が、長さＮ１＝Ｐ−（Ｍ−１）の離散時間信号ｘ１［ｎ］と、長さＮ２＝Ｎ−Ｐ＋（Ｍ−１）の離散時間信号ｘ２［ｎ］に２分割されて処理される。ここで、Ｎ１≧Ｎ２である場合、すなわち、Ｐ−Ｎ＜Ｍ−１≦Ｐ−Ｎ／２のとき、ｘ２［ｎ］の変換長Ｒ（２の乗数）は、ｘ１［ｎ］の変換長Ｐ以下となる。
【００８１】
図４のフィルタリング部１００Ｂにおいては、上述したように、Ｎ，Ｍが、Ｐ−Ｎ＜Ｍ−１≦Ｐ−Ｎ／２を満足するように構成される。したがって、ｘ２［ｎ］の変換長Ｒ（２の乗数）は、ｘ１［ｎ］の変換長Ｐ以下となり、長さＮの離散時間信号ｘ［ｎ］を分割せずに「Ｂ方式」で処理する場合に比べて、演算量およびメモリ使用量を低減することが可能となる。
【００８２】
なお、Ｎ，Ｍが、Ｐ−Ｎ＜Ｍ−１≦Ｐ−Ｎ／２を満足せず、Ｐ−Ｎ／２＜Ｍ−１≦Ｎを満たす場合には、ｘ２［ｎ］の変換長Ｒを、ｘ１［ｎ］の変換長Ｐ以下とすることができず、Ｒ＝２Ｐとなる。この場合、「方式Ｂ」で処理する場合に比べて、演算量およびメモリ使用量の面で劣位となる。
【００８３】
［演算量およびメモリ使用量の比較］
ここで、「方式Ａ」、「方式Ｂ」および、図２、図４に示すようにｘ［ｎ］を分割する方式（以下、「本方式」という）における演算量およびメモリ使用量を比較してみる。
【００８４】
「演算量の比較」
＜比較のための条件＞
本比較では、単純に加算・乗算回数の比較を行う。
時間領域での畳み込み演算「方式Ａ」に関して、加算・乗算回数はループ内の積和演算部分のみに関して評価する。
ＦＦＴの演算量に関して、バタフライ演算部の複素指数関数（（４）式参照）のコサイン値、サイン値はデータとして保持しておくものとし、加算・乗算回数はバタフライ演算部の加算、および加算結果と複素指数関数の乗算のみに関して評価する。
【数４】
2010219582.tif 000006
【００８５】
なお、Ｐ、Ｑ、Ｒに関しては、以下の式により算出可能である。
Ｐ＝２ ** int（log２（Ｎ*２−１））
Ｑ＝２ ** int（log２（（Ｎ＋２* Ｍ−２−Ｐ／２） * ２−１）
Ｒ＝２ ** int（log２（（Ｎ＋２* Ｍ−２−Ｐ） * ２−１）
ただし、int(x)はxの小数点以下を切り捨てた整数、log２(x)は２を底とする対数を表すものとする。
【００８６】
＜演算量の算出結果＞
「方式Ａ」、「方式Ｂ」、「本方式」における演算量の算出結果を以下に示す。
「方式Ａ」
Ｍ−１≦Ｎの全範囲で、以下の（５）式、（６）式で表される。
加算：Ｎ＊Ｍ      ・・・（５）
乗算：Ｎ＊Ｍ      ・・・（６）
【００８７】
「方式Ｂ」
Ｍ−１≦Ｐ−Ｎの場合は、以下の（７）式、（８）式で表される。
加算：１２＊Ｐ＊log２（Ｐ）＋２＊Ｐ      ・・・（７）
乗算：６＊Ｐ＊log２（Ｐ）＋４＊Ｐ        ・・・（８）
【００８８】
Ｐ−Ｎ＜Ｍ−１≦Ｎの場合は、以下の（９）式、（１０）式で表される。
加算：２４＊Ｐ＊log２（Ｐ）＋２８＊Ｐ      ・・・（９）
乗算：１２＊Ｐ＊log２（Ｐ）＋２０＊Ｐ      ・・・（１０）
【００８９】
「本方式」
Ａ．Ｍ−１≦（Ｐ−Ｎ）／２を満たし、ｘ［ｎ］を２分割した場合（図２のフィルタリング部１００Ａの場合）は、以下の（１１）式、（１２）式で表される。
加算：６＊Ｐ＊log２（Ｐ）−５＊Ｐ＋１２＊Ｑ＊log２（Ｑ）＋２＊Ｑ＋Ｍ−１
・・・（１１）
乗算：３＊Ｐ＊log２（Ｐ）−Ｐ＋６＊Ｑ＊log２（Ｑ）＋４＊Ｑ
・・・（１２）
【００９０】
Ｂ．Ｐ−Ｎ＜Ｍ−１≦Ｐ−Ｎ／２を満たし、ｘ［ｎ］を２分割した場合（図４のフィルタリング部１００Ｂの場合）は、以下の（１３）式、（１４）式で表される。
加算：１２＊Ｐ＊log２（Ｐ）＋２＊Ｐ＋１２＊Ｒ＊log２（Ｒ）＋２＊Ｒ＋Ｍ−１
・・・（１３）
乗算：６＊Ｐ＊log２（Ｐ）＋４＊Ｐ＋６＊Ｒ＊log２（Ｒ）＋４＊Ｒ
・・・（１４）
【００９１】
＜方式Ｂと本方式の演算量の差＞
Ａ．Ｍ−１≦（Ｐ−Ｎ）／２の場合（図２のフィルタリング部１００Ａの場合）、方式Ｂから本方式の演算量を差し引いた値の最小値は、Ｑ＝Ｐ／２として、以下の（１５）式、（１６）式で表される。
加算：１２＊Ｐ−Ｍ＋１      ・・・（１５）
乗算：６＊Ｐ      ・・・（１６）
したがって、この場合は、加算、乗算とも差が正となるため、本方式は方式Ｂに演算量の面において優位であることが分かる。
【００９２】
Ｂ．Ｐ−Ｎ＜Ｍ−１≦Ｐ−Ｎ／２の場合（図４のフィルタリング部１００Ｂの場合）、方式Ｂから本方式の演算量を差し引いた値の最小値は、Ｒ＝Ｐとして、以下の（１７）式、（１８）式で表される。
加算：２４＊Ｐ−Ｍ＋１      ・・・（１７）
乗算：１２＊Ｐ      ・・・（１８）
したがって、この場合は、加算、乗算とも差が正となるため、本方式は方式Ｂに演算量の面において優位であることが分かる。
【００９３】
図６、図７のグラフは、Ｎ＝１４７２のとき、Ｍ−１を１からＮまで変化させたときの、「方式Ａ」（Ａ＿Ｍｅｔｈｏｄ）、「方式Ｂ」（Ｂ＿Ｍｅｔｈｏｄ）、「本方式」（Ｐｒｏｐｏｓａｌ＿Ｍｅｔｈｏｄ）の加算回数、乗算回数を比較して示している。ただし、図中のＰｒｏｐｏｓａｌ＿Ｍｅｔｈｏｄのラインは、Ｍ−１≦（Ｐ−Ｎ）／２、Ｐ−Ｎ＜Ｍ−１≦Ｐ−Ｎ／２以外の範囲は方式Ｂの演算量としている。
【００９４】
この図６、図７のグラフを見ても分かるように、Ｍ−１≦（Ｐ−Ｎ）／２、Ｐ−Ｎ＜Ｍ−１≦Ｐ−Ｎ／２の範囲で、本方式（Ｐｒｏｐｏｓａｌ＿Ｍｅｔｈｏｄ）は方式Ｂ（Ｂ＿Ｍｅｔｈｏｄ）より加算回数、乗算回数とも少ない。したがって、本方式は、方式Ｂより少ない演算量で演算可能であることがわかる。
【００９５】
＜使用メモリ量の比較＞
方式Ｂおよび本方式はＦＦＴ処理値を複素数で保持せねばならないこと、ゼロ詰め等の処理を必要とすることなどの制約から、方式Ａに比べて使用するメモリ量は多い。方式Ｂと本方式の比較では、方式Ｂで必要となるメモリ量を１とすると、本方式で必要となるメモリ量は以下のようになる。
【００９６】
Ａ．Ｍ−１≦（Ｐ−Ｎ）／２の場合（図２のフィルタリング部１００Ａの場合）、本方式で必要となるメモリ量は、以下の（１９）式で表される。
（Ｐ＋２＊Ｑ）／２＊Ｐ      ・・・（１９）
定義からＱ≦Ｐ／２であるので、本方式は方式Ｂに比べて使用するメモリ量は増えない。ここで、Ｐ、Ｑは上述で定義されているものと同じ変数である。
【００９７】
Ｂ．Ｐ−Ｎ＜Ｍ−１≦Ｐ−Ｎ／２の場合（図４のフィルタリング部１００Ｂの場合）、本方式で必要となるメモリ量は、以下の（２０）式で表される。
（Ｐ＋Ｒ）／２＊Ｐ      ・・・（２０）
定義からＲ≦Ｐであるので、本方式は方式Ｂに比べて使用するメモリ量は増えない。ここで、Ｐ、Ｒは上述で定義されているものと同じ変数である。
【００９８】
以上説明したように、図１に示すサラウンドプロセッサ１０において、各フィルタリング部は、図２に示すフィルタリング部１００Ａあるいは図４に示すフィルタリング部１００Ｂに示すように構成される。そのため、従来の方式Ｂで演算処理するフィルタリング部に比べて、演算量およびメモリ使用量を低減できる。
【００９９】
図１に示すサラウンドプロセッサ１０において、各フィルタリング部が、例えば、Ｎ＝１４７２、Ｍ＝７００のとき、「方式Ａ」、「方式Ｂ」、「本方式」の計算量は以下のようになる。したがって、本方式を用いることで、従来方式に比べて、少ない演算量で畳み込み演算を行うことが可能である。
【０１００】
「方式Ａ」
・加算：１２３６４８００
・乗算：１２３６４８００
【０１０１】
「方式Ｂ」
・加算：７１７６１９２
・乗算：３７３５５５２
【０１０２】
「本方式」
・加算：４８００７０８
・乗算：２５０６７５２
【０１０３】
なお、上述実施の形態において、図１に示すサラウンドプロセッサ１０の各フィルタリング部は、図２に示すフィルタリング部１００Ａあるいは図４に示すフィルタリング部１００Ｂに示すように構成される。
【０１０４】
＜２．変形例＞
図２に示すフィルタリング部１００Ａは、上述したように、Ｎ以上の最小の２の乗数をＰとするとき、Ｎ＋Ｍ−１≦Ｐを満足し、Ｍ−１≦（Ｐ−Ｎ）／２の場合の例である。しかし、（Ｐ−Ｎ）／２＜Ｍ−１≦Ｐ−Ｎの場合であっても、長さＮの離散時間信号ｘ［ｎ］（図３（ａ）参照）を３分割して処理することで、方式Ｂに比べて演算量を低減できる場合がある。この理由については、後述する。
【０１０５】
図８は、その場合におけるフィルタリング部１００Ｃの構成例を示している。このフィルタリング部１００Ｃは、３分割部１０１Ｃと、ゼロ詰め部１０２Ｃと、高速フーリエ変換部１０３Ｃと、ゼロ詰め部１０４Ｃと、高速フーリエ変換部１０５Ｃと、ゼロ詰め部１０６Ｃと、高速フーリエ変換部１０７Ｃを有している。また、このフィルタリング部１００Ｃは、ゼロ詰め部１０８Ｃと、高速フーリエ変換部１０９Ｃと、ゼロ詰め部１１０Ｃと、高速フーリエ変換部１１１Ｃを有している。さらに、このフィルタリング部１００Ｃは、乗算部１１２Ｃと、逆高速フーリエ変換部１１３Ｃと、乗算部１１４Ｃと、逆高速フーリエ変換部１１５Ｃと、乗算部１１６Ｃと、逆高速フーリエ変換部１１７Ｃと、加算部１１８Ｃを有している。
【０１０６】
３分割部１０１Ｃは、長さＮの離散時間信号ｘ［ｎ］（０≦ｎ≦Ｎ−１）を３分割して、３個の離散時間信号ｘ１［ｎ］，ｘ２［ｎ］，ｘ３［ｎ］を得る。ここで、ｘ１［ｎ］の長さＮ１は、図９（ａ）に示すように、Ｐ／２−（Ｍ−１）とされる。また、ｘ２［ｎ］の長さＮ２は、図９（ｂ）に示すように、ｘ１［ｎ］の長さＮ１と同じく、Ｐ／２−（Ｍ−１）とされる。また、ｘ３［ｎ］の長さＮ３は、図９（ｃ）に示すように、Ｎ−Ｐ＋２（Ｍ−１）とされる。
【０１０７】
ゼロ詰め部１０２Ｃは、長さＮ１の離散時間信号ｘ１［ｎ］の後に、（Ｐ／２−Ｎ１）個、すなわち（Ｍ−１）個のゼロを詰めて、長さＰ／２のゼロ詰めデータｘ１′［ｎ］（０≦ｎ≦Ｐ／２−１）を得る。高速フーリエ変換部１０３Ｃは、ゼロ詰め部１０２Ｃで得られたゼロ詰めデータｘ１′［ｎ］に対してＦＦＴ（高速フーリエ変換）を行って、周波数領域データＸ１［ｋ］（０≦ｋ≦Ｐ／２−１）を得る。
【０１０８】
ゼロ詰め部１０４Ｃは、長さＮ２の離散時間信号ｘ２［ｎ］の後に、（Ｐ／２−Ｎ２）個、すなわち（Ｍ−１）個のゼロを詰めて、長さＰ／２のゼロ詰めデータｘ２′［ｎ］（０≦ｎ≦Ｐ／２−１）を得る。高速フーリエ変換部１０５Ｃは、ゼロ詰め部１０４Ｃで得られたゼロ詰めデータｘ２′［ｎ］に対してＦＦＴ（高速フーリエ変換）を行って、周波数領域データＸ２［ｋ］（０≦ｋ≦Ｐ／２−１）を得る。
【０１０９】
ゼロ詰め部１０６Ｃは、長さＮ３の離散時間信号ｘ３［ｎ］の後に、（Ｓ−Ｎ３）個、すなわち（Ｓ−（Ｎ−Ｐ＋２（Ｍ−１））個のゼロを詰めて、長さＳのゼロ詰めデータｘ３′［ｎ］（０≦ｎ≦Ｓ−１）を得る。ここで、Ｓは、Ｎ３＋Ｍ−１以上の最小の２の乗数である。高速フーリエ変換部１０７Ｃは、ゼロ詰め部１０６Ｃで得られたゼロ詰めデータｘ３′［ｎ］に対してＦＦＴ（高速フーリエ変換）を行って、周波数領域データＸ３［ｋ］（０≦ｋ≦Ｓ−１）を得る。
【０１１０】
ゼロ詰め部１０８Ｃは、長さＭのフィルタ係数ｈ［ｍ］（０≦ｍ≦Ｍ−１）の後に（Ｐ／２−Ｍ）個のゼロを詰めて、上述のゼロ詰めデータｘ１′［ｎ］，ｘ２′［ｎ］に対応した長さのゼロ詰めデータｈ12′［ｎ］（０≦ｎ≦Ｐ／２−１）を得る。高速フーリエ変換部１０９Ｃは、ゼロ詰め部１０８Ｃで得られたゼロ詰めデータｈ12′［ｎ］に対してＦＦＴ（高速フーリエ変換）を行って、周波数領域データＨ12［ｋ］（０≦ｋ≦Ｐ／２−１）を得る。
【０１１１】
ゼロ詰め部１１０Ｃは、長さＭのフィルタ係数ｈ［ｍ］（０≦ｍ≦Ｍ−１）の後に（Ｓ−Ｍ）個のゼロを詰めて、上述のゼロ詰めデータｘ３′［ｎ］（０≦ｎ≦Ｓ−１）に対応した長さのゼロ詰めデータｈ３′［ｎ］（０≦ｎ≦Ｓ−１）を得る。高速フーリエ変換部１１１Ｃは、ゼロ詰め部１１０Ｃで得られたゼロ詰めデータｈ３′［ｎ］に対してＦＦＴ（高速フーリエ変換）を行って、周波数領域データＨ３［ｋ］（０≦ｋ≦Ｓ−１）を得る。
【０１１２】
乗算部１１２Ｃは、高速フーリエ変換部１０３Ｃで得られた周波数領域データＸ１［ｋ］と高速フーリエ変換部１０９Ｃで得られた周波数領域データＨ12［ｋ］とを乗算して、乗算結果Ｙ１［ｋ］（０≦ｋ≦Ｐ／２−１）を得る。そして、逆高速フーリエ変換部１１３Ｃは、乗算部１１２Ｃで得られた乗算結果Ｙ１［ｋ］に対してＩＦＦＴ（逆高速フーリエ変換）を行って、離散時間信号ｙ１［ｎ］（０≦ｎ≦Ｐ／２−１）を得る。
【０１１３】
乗算部１１４Ｃは、高速フーリエ変換部１０５Ｃで得られた周波数領域データＸ２［ｋ］と高速フーリエ変換部１０９Ｃで得られた周波数領域データＨ12［ｋ］とを乗算して、乗算結果Ｙ２［ｋ］（０≦ｋ≦Ｐ／２−１）を得る。そして、逆高速フーリエ変換部１１５Ｃは、乗算部１１４Ｃで得られた乗算結果Ｙ２［ｋ］に対してＩＦＦＴ（逆高速フーリエ変換）を行って、離散時間信号ｙ２［ｎ］（０≦ｎ≦Ｐ／２−１）を得る。
【０１１４】
乗算部１１６Ｃは、高速フーリエ変換部１０７Ｃで得られた周波数領域データＸ３［ｋ］と高速フーリエ変換部１１１Ｃで得られた周波数領域データＨ３［ｋ］とを乗算して、乗算結果Ｙ３［ｋ］（０≦ｋ≦Ｓ−１）を得る。そして、逆高速フーリエ変換部１１７Ｃは、乗算部１１６Ｃで得られた乗算結果Ｙ３［ｋ］に対してＩＦＦＴ（逆高速フーリエ変換）を行って、離散時間信号ｙ３［ｎ］（０≦ｎ≦Ｓ−１）を得る。
【０１１５】
加算部１１８Ｃは、逆高速フーリエ変換部１１３Ｃ，１１５Ｃ，１１７Ｃで得られた離散時間信号ｙ１［ｎ］，ｙ２［ｎ］，ｙ３［ｎ］を加算して、出力離散時間信号ｙ［ｎ］を得る。この出力離散時間信号ｙ［ｎ］は、離散時間信号ｘ［ｎ］とフィルタ係数ｈ［ｍ］の畳み込み演算結果となる。なお、加算部１１８Ｃは、分割せずに離散時間信号ｘ［ｎ］とフィルタ係数ｈ［ｍ］の畳み込み演算を行う場合との整合性を取るため、重複加算法（上述の非特許文献１参照）により、出力離散時間信号ｙ［ｎ］を求める。
【０１１６】
図８のフィルタリング部１００Ｃの動作を説明する。フィルタリング対象の長さＮの離散時間信号（離散時間音声信号）ｘ［ｎ］は、３分割部１０１Ｃに供給される。この３分割部１０１Ｃでは、長さＮの離散時間信号ｘ［ｎ］（０≦ｎ≦Ｎ−１）が３分割される。そして、この３分割部１０１Ｃからは、長さＮ１＝Ｐ／２−（Ｍ−１）の離散時間信号ｘ１［ｎ］（０≦ｎ≦Ｎ１−１）が得られる。また、この３分割部１０１Ｃからは、長さＮ２＝Ｐ／２−（Ｍ−１）の離散時間信号ｘ２［ｎ］（０≦ｎ≦Ｎ２−１）が得られる。また、この３分割部１０１Ｃからは、長さＮ３＝Ｎ−Ｐ＋２（Ｍ−１）の離散時間信号ｘ３［ｎ］（０≦ｎ≦Ｎ３−１）が得られる。
【０１１７】
３分割部１０１Ｃで得られた離散時間信号ｘ１［ｎ］は、ゼロ詰め部１０２Ｃに供給される。このゼロ詰め部１０２Ｃでは、長さＮ１の離散時間信号ｘ１［ｎ］の後に（Ｍ−１）個のゼロが詰められ、長さ（変換長）Ｐ／２のゼロ詰めデータｘ１′［ｎ］が得られる。このゼロ詰めデータｘ１′［ｎ］は高速フーリエ変換部１０３Ｃに供給される。この高速フーリエ変換部１０３Ｃでは、ゼロ詰めデータｘ１′［ｎ］に対してＦＦＴ（高速フーリエ変換）が行われて、周波数領域データＸ１［ｋ］（０≦ｋ≦Ｐ／２−１）が得られる。
【０１１８】
また、３分割部１０１Ｃで得られた離散時間信号ｘ２［ｎ］は、ゼロ詰め部１０４Ｃに供給される。このゼロ詰め部１０４Ｃでは、長さＮ２の離散時間信号ｘ２［ｎ］の後に（Ｍ−１）個のゼロが詰められ、長さ（変換長）Ｐ／２のゼロ詰めデータｘ２′［ｎ］が得られる。このゼロ詰めデータｘ２′［ｎ］は高速フーリエ変換部１０５Ｃに供給される。この高速フーリエ変換部１０５Ｃでは、ゼロ詰めデータｘ２′［ｎ］に対してＦＦＴ（高速フーリエ変換）が行われて、周波数領域データＸ２［ｋ］（０≦ｋ≦Ｐ／２−１）が得られる。
【０１１９】
また、２分割部１０１Ｃで得られた離散時間信号ｘ３［ｎ］は、ゼロ詰め部１０６Ｃに供給される。このゼロ詰め部１０６Ｃでは、長さＮ３の離散時間信号ｘ３［ｎ］の後にＳ−（Ｎ−Ｐ＋２（Ｍ−１））個のゼロが詰められ、長さ（変換長）Ｓのゼロ詰めデータｘ３′［ｎ］が得られる。このゼロ詰めデータｘ３′［ｎ］は高速フーリエ変換部１０７Ｃに供給される。この高速フーリエ変換部１０７Ｃでは、ゼロ詰めデータｘ３′［ｎ］に対してＦＦＴ（高速フーリエ変換）が行われて、周波数領域データＸ３［ｋ］（０≦ｋ≦Ｓ−１）が得られる。
【０１２０】
また、長さＭのフィルタ係数ｈ［ｍ］は、ゼロ詰め部１０８Ｃに供給される。このゼロ詰め部１０８Ｃでは、長さＭのフィルタ係数ｈ［ｍ］の後に（Ｐ／２−Ｍ）個のゼロが詰められ、長さ（変換長）Ｐ／２のゼロ詰めデータｈ12′［ｎ］が得られる。このゼロ詰めデータｈ12′［ｎ］は高速フーリエ変換部１０９Ｃに供給される。この高速フーリエ変換部１０９Ｃでは、ゼロ詰めデータｈ12′［ｎ］に対してＦＦＴ（高速フーリエ変換）が行われて、周波数領域データＨ12［ｋ］が得られる。
【０１２１】
また、長さＭのフィルタ係数ｈ［ｍ］は、ゼロ詰め部１１０Ｃに供給される。このゼロ詰め部１１０Ｃでは、長さＭのフィルタ係数ｈ［ｍ］の後に（Ｓ−Ｍ）個のゼロが詰められ、長さ（変換長）Ｓのゼロ詰めデータｈ３′［ｎ］が得られる。このゼロ詰めデータｈ３′［ｎ］は高速フーリエ変換部１１１Ｃに供給される。この高速フーリエ変換部１１１Ｃでは、ゼロ詰めデータｈ３′［ｎ］に対してＦＦＴ（高速フーリエ変換）が行われて、周波数領域データＨ３［ｋ］が得られる。
【０１２２】
高速フーリエ変換部１０３Ｃで得られた周波数領域データＸ１［ｋ］および高速フーリエ変換部１０９Ｃで得られた周波数領域データＨ12［ｋ］は乗算部１１２Ｃに供給される。この乗算部１１２Ｃでは、周波数領域データＸ１［ｋ］と周波数領域データＨ12［ｋ］が乗算されて、乗算結果Ｙ１［ｋ］が得られる。この乗算結果Ｙ１［ｋ］は逆高速フーリエ変換部１１３Ｃに供給される。この逆高速フーリエ変換部１１３Ｃでは、乗算結果Ｙ１［ｋ］に対してＩＦＦＴ（逆高速フーリエ変換）が行われて、離散時間信号ｙ１［ｎ］が得られる。
【０１２３】
また、高速フーリエ変換部１０５Ｃで得られた周波数領域データＸ２［ｋ］および高速フーリエ変換部１０９Ｃで得られた周波数領域データＨ12［ｋ］は乗算部１１４Ｃに供給される。この乗算部１１４Ｃでは、周波数領域データＸ２［ｋ］と周波数領域データＨ12［ｋ］が乗算されて、乗算結果Ｙ２［ｋ］が得られる。この乗算結果Ｙ２［ｋ］は逆高速フーリエ変換部１１５Ｃに供給される。この逆高速フーリエ変換部１１５Ｃでは、乗算結果Ｙ２［ｋ］に対してＩＦＦＴ（逆高速フーリエ変換）が行われて、離散時間信号ｙ２［ｎ］が得られる。
【０１２４】
また、高速フーリエ変換部１０７Ｃで得られた周波数領域データＸ３［ｋ］および高速フーリエ変換部１１１Ｃで得られた周波数領域データＨ３［ｋ］は乗算部１１６Ｃに供給される。この乗算部１１６Ｃでは、周波数領域データＸ３［ｋ］と周波数領域データＨ３［ｋ］が乗算されて、乗算結果Ｙ３［ｋ］が得られる。この乗算結果Ｙ３［ｋ］は逆高速フーリエ変換部１１７Ｃに供給される。この逆高速フーリエ変換部１１７Ｃでは、乗算結果Ｙ３［ｋ］に対してＩＦＦＴ（逆高速フーリエ変換）が行われて、離散時間信号ｙ３［ｎ］が得られる。
【０１２５】
逆高速フーリエ変換部１１３Ｃで得られた離散時間信号ｙ１［ｎ］、逆高速フーリエ変換部１１５Ｃで得られた離散時間信号ｙ２［ｎ］および逆高速フーリエ変換部１１７Ｃで得られた離散時間信号ｙ３［ｎ］は、加算部１１８Ｃに供給される。加算部１１８Ｃでは、重複加算法により、離散時間信号ｙ１［ｎ］，ｙ２［ｎ］，ｙ３［ｎ］が加算されて、出力離散時間信号ｙ［ｎ］が得られる。
【０１２６】
図４に示すフィルタリング部１００Ｂは、上述したように、Ｎ以上の最小の２の乗数をＰとするとき、Ｎ＋Ｍ−１＞Ｐを満足し、Ｐ−Ｎ＜Ｍ−１≦Ｐ−Ｎ／２の場合の例である。しかし、Ｐ−Ｎ／２＜Ｍ−１≦Ｎの場合であっても、長さＮの離散時間信号ｘ［ｎ］（図５（ａ）参照）を３分割して処理することで、方式Ｂに比べて演算量を低減できる場合がある。この理由については、後述する。
【０１２７】
図１０は、その場合におけるフィルタリング部１００Ｄの構成例を示している。このフィルタリング部１００Ｃは、３分割部１０１Ｄと、ゼロ詰め部１０２Ｄと、高速フーリエ変換部１０３Ｄと、ゼロ詰め部１０４Ｄと、高速フーリエ変換部１０５Ｄと、ゼロ詰め部１０６Ｄと、高速フーリエ変換部１０７Ｄを有している。また、このフィルタリング部１００Ｄは、ゼロ詰め部１０８Ｄと、高速フーリエ変換部１０９Ｄと、ゼロ詰め部１１０Ｄと、高速フーリエ変換部１１１Ｄを有している。さらに、このフィルタリング部１００Ｄは、乗算部１１２Ｄと、逆高速フーリエ変換部１１３Ｄと、乗算部１１４Ｄと、逆高速フーリエ変換部１１５Ｄと、乗算部１１６Ｄと、逆高速フーリエ変換部１１７Ｄと、加算部１１８Ｄを有している。
【０１２８】
３分割部１０１Ｄは、長さＮの離散時間信号ｘ［ｎ］（０≦ｎ≦Ｎ−１）を３分割して、３個の離散時間信号ｘ１［ｎ］，ｘ２［ｎ］，ｘ３［ｎ］を得る。ここで、ｘ１［ｎ］の長さＮ１は、図１１（ａ）に示すように、Ｐ−（Ｍ−１）とされる。また、ｘ２［ｎ］の長さＮ２は、図１１（ｂ）に示すように、ｘ１［ｎ］の長さＮ１と同じく、Ｐ−（Ｍ−１）とされる。また、ｘ３［ｎ］の長さＮ３は、図１１（ｃ）に示すように、Ｎ−２Ｐ＋２（Ｍ−１）とされる。
【０１２９】
ゼロ詰め部１０２Ｄは、長さＮ１の離散時間信号ｘ１［ｎ］の後に、（Ｐ−Ｎ１）個、すなわち（Ｍ−１）個のゼロを詰めて、長さＰのゼロ詰めデータｘ１′［ｎ］（０≦ｎ≦Ｐ−１）を得る。高速フーリエ変換部１０３Ｄは、ゼロ詰め部１０２Ｄで得られたゼロ詰めデータｘ１′［ｎ］に対してＦＦＴ（高速フーリエ変換）を行って、周波数領域データＸ１［ｋ］（０≦ｋ≦Ｐ−１）を得る。
【０１３０】
ゼロ詰め部１０４Ｄは、長さＮ２の離散時間信号ｘ２［ｎ］の後に、（Ｐ−Ｎ２）個、すなわち（Ｍ−１）個のゼロを詰めて、長さＰのゼロ詰めデータｘ２′［ｎ］（０≦ｎ≦Ｐ−１）を得る。高速フーリエ変換部１０５Ｄは、ゼロ詰め部１０４Ｄで得られたゼロ詰めデータｘ２′［ｎ］に対してＦＦＴ（高速フーリエ変換）を行って、周波数領域データＸ２［ｋ］（０≦ｋ≦Ｐ−１）を得る。
【０１３１】
ゼロ詰め部１０６Ｄは、長さＮ３の離散時間信号ｘ３［ｎ］の後に、（Ｔ−Ｎ３）個、すなわち（Ｔ−（Ｎ−２Ｐ＋２（Ｍ−１））個のゼロを詰めて、長さＴのゼロ詰めデータｘ３′［ｎ］（０≦ｎ≦Ｔ−１）を得る。ここで、Ｔは、Ｎ３＋Ｍ−１以上の最小の２の乗数である。高速フーリエ変換部１０７Ｄは、ゼロ詰め部１０６Ｄで得られたゼロ詰めデータｘ３′［ｎ］に対してＦＦＴ（高速フーリエ変換）を行って、周波数領域データＸ３［ｋ］（０≦ｋ≦Ｔ−１）を得る。
【０１３２】
ゼロ詰め部１０８Ｄは、長さＭのフィルタ係数ｈ［ｍ］（０≦ｍ≦Ｍ−１）の後に（Ｐ−Ｍ）個のゼロを詰めて、上述のゼロ詰めデータｘ１′［ｎ］，ｘ２′［ｎ］に対応した長さのゼロ詰めデータｈ12′［ｎ］（０≦ｎ≦Ｐ−１）を得る。高速フーリエ変換部１０９Ｄは、ゼロ詰め部１０８Ｄで得られたゼロ詰めデータｈ12′［ｎ］に対してＦＦＴ（高速フーリエ変換）を行って、周波数領域データＨ12［ｋ］（０≦ｋ≦Ｐ−１）を得る。
【０１３３】
ゼロ詰め部１１０Ｄは、長さＭのフィルタ係数ｈ［ｍ］（０≦ｍ≦Ｍ−１）の後に（Ｔ−Ｍ）個のゼロを詰めて、上述のゼロ詰めデータｘ３′［ｎ］（０≦ｎ≦Ｔ−１）に対応した長さのゼロ詰めデータｈ３′［ｎ］（０≦ｎ≦Ｔ−１）を得る。高速フーリエ変換部１１１Ｄは、ゼロ詰め部１１０Ｄで得られたゼロ詰めデータｈ３′［ｎ］に対してＦＦＴ（高速フーリエ変換）を行って、周波数領域データＨ３［ｋ］（０≦ｋ≦Ｔ−１）を得る。
【０１３４】
乗算部１１２Ｄは、高速フーリエ変換部１０３Ｄで得られた周波数領域データＸ１［ｋ］と高速フーリエ変換部１０９Ｄで得られた周波数領域データＨ12［ｋ］とを乗算して、乗算結果Ｙ１［ｋ］（０≦ｋ≦Ｐ−１）を得る。そして、逆高速フーリエ変換部１１３Ｄは、乗算部１１２Ｄで得られた乗算結果Ｙ１［ｋ］に対してＩＦＦＴ（逆高速フーリエ変換）を行って、離散時間信号ｙ１［ｎ］（０≦ｎ≦Ｐ−１）を得る。
【０１３５】
乗算部１１４Ｄは、高速フーリエ変換部１０５Ｄで得られた周波数領域データＸ２［ｋ］と高速フーリエ変換部１０９Ｄで得られた周波数領域データＨ12［ｋ］とを乗算して、乗算結果Ｙ２［ｋ］（０≦ｋ≦Ｐ−１）を得る。そして、逆高速フーリエ変換部１１５Ｄは、乗算部１１４Ｄで得られた乗算結果Ｙ２［ｋ］に対してＩＦＦＴ（逆高速フーリエ変換）を行って、離散時間信号ｙ２［ｎ］（０≦ｎ≦Ｐ−１）を得る。
【０１３６】
乗算部１１６Ｄは、高速フーリエ変換部１０７Ｄで得られた周波数領域データＸ３［ｋ］と高速フーリエ変換部１１１Ｄで得られた周波数領域データＨ３［ｋ］とを乗算して、乗算結果Ｙ３［ｋ］（０≦ｋ≦Ｔ−１）を得る。そして、逆高速フーリエ変換部１１７Ｄは、乗算部１１６Ｄで得られた乗算結果Ｙ３［ｋ］に対してＩＦＦＴ（逆高速フーリエ変換）を行って、離散時間信号ｙ３［ｎ］（０≦ｎ≦Ｔ−１）を得る。
【０１３７】
加算部１１８Ｄは、逆高速フーリエ変換部１１３Ｄ，１１５Ｄ，１１７Ｄで得られた離散時間信号ｙ１［ｎ］，ｙ２［ｎ］，ｙ３［ｎ］を加算して、出力離散時間信号ｙ［ｎ］を得る。この出力離散時間信号ｙ［ｎ］は、離散時間信号ｘ［ｎ］とフィルタ係数ｈ［ｍ］の畳み込み演算結果となる。なお、加算部１１８Ｄは、分割せずに離散時間信号ｘ［ｎ］とフィルタ係数ｈ［ｍ］の畳み込み演算を行う場合との整合性を取るため、重複加算法（上述の非特許文献１参照）により、出力離散時間信号ｙ［ｎ］を求める。
【０１３８】
図１０のフィルタリング部１００Ｄの動作を説明する。フィルタリング対象の長さＮの離散時間信号（離散時間音声信号）ｘ［ｎ］は、３分割部１０１Ｄに供給される。この３分割部１０１Ｄでは、長さＮの離散時間信号ｘ［ｎ］（０≦ｎ≦Ｎ−１）が３分割される。そして、この３分割部１０１Ｄからは、長さＮ１＝Ｐ−（Ｍ−１）の離散時間信号ｘ１［ｎ］（０≦ｎ≦Ｎ１−１）が得られる。また、この３分割部１０１Ｄからは、長さＮ２＝Ｐ−（Ｍ−１）の離散時間信号ｘ２［ｎ］（０≦ｎ≦Ｎ２−１）が得られる。また、この３分割部１０１Ｄからは、長さＮ３＝Ｎ−２Ｐ＋２（Ｍ−１）の離散時間信号ｘ３［ｎ］（０≦ｎ≦Ｎ３−１）が得られる。
【０１３９】
３分割部１０１Ｄで得られた離散時間信号ｘ１［ｎ］は、ゼロ詰め部１０２Ｄに供給される。このゼロ詰め部１０２Ｄでは、長さＮ１の離散時間信号ｘ１［ｎ］の後に（Ｍ−１）個のゼロが詰められ、長さ（変換長）Ｐのゼロ詰めデータｘ１′［ｎ］が得られる。このゼロ詰めデータｘ１′［ｎ］は高速フーリエ変換部１０３Ｄに供給される。この高速フーリエ変換部１０３Ｄでは、ゼロ詰めデータｘ１′［ｎ］に対してＦＦＴ（高速フーリエ変換）が行われて、周波数領域データＸ１［ｋ］（０≦ｋ≦Ｐ−１）が得られる。
【０１４０】
また、３分割部１０１Ｄで得られた離散時間信号ｘ２［ｎ］は、ゼロ詰め部１０４Ｄに供給される。このゼロ詰め部１０４Ｄでは、長さＮ２の離散時間信号ｘ２［ｎ］の後に（Ｍ−１）個のゼロが詰められ、長さ（変換長）Ｐのゼロ詰めデータｘ２′［ｎ］が得られる。このゼロ詰めデータｘ２′［ｎ］は高速フーリエ変換部１０５Ｄに供給される。この高速フーリエ変換部１０５Ｄでは、ゼロ詰めデータｘ２′［ｎ］に対してＦＦＴ（高速フーリエ変換）が行われて、周波数領域データＸ２［ｋ］（０≦ｋ≦Ｐ−１）が得られる。
【０１４１】
また、３分割部１０１Ｄで得られた離散時間信号ｘ３［ｎ］は、ゼロ詰め部１０６Ｄに供給される。このゼロ詰め部１０６Ｄでは、長さＮ３の離散時間信号ｘ３［ｎ］の後にＴ−（Ｎ−２Ｐ＋２（Ｍ−１））個のゼロが詰められ、長さ（変換長）Ｔのゼロ詰めデータｘ３′［ｎ］が得られる。このゼロ詰めデータｘ３′［ｎ］は高速フーリエ変換部１０７Ｄに供給される。この高速フーリエ変換部１０７Ｄでは、ゼロ詰めデータｘ３′［ｎ］に対してＦＦＴ（高速フーリエ変換）が行われて、周波数領域データＸ３［ｋ］（０≦ｋ≦Ｔ−１）が得られる。
【０１４２】
また、長さＭのフィルタ係数ｈ［ｍ］は、ゼロ詰め部１０８Ｄに供給される。このゼロ詰め部１０８Ｄでは、長さＭのフィルタ係数ｈ［ｍ］の後に（Ｐ−Ｍ）個のゼロが詰められ、長さ（変換長）Ｐのゼロ詰めデータｈ12′［ｎ］が得られる。このゼロ詰めデータｈ12′［ｎ］は高速フーリエ変換部１０９Ｄに供給される。この高速フーリエ変換部１０９Ｄでは、ゼロ詰めデータｈ12′［ｎ］に対してＦＦＴ（高速フーリエ変換）が行われて、周波数領域データＨ12［ｋ］が得られる。
【０１４３】
また、長さＭのフィルタ係数ｈ［ｍ］は、ゼロ詰め部１１０Ｄに供給される。このゼロ詰め部１１０Ｄでは、長さＭのフィルタ係数ｈ［ｍ］の後に（Ｔ−Ｍ）個のゼロが詰められ、長さ（変換長）Ｔのゼロ詰めデータｈ３′［ｎ］が得られる。このゼロ詰めデータｈ３′［ｎ］は高速フーリエ変換部１１１Ｄに供給される。この高速フーリエ変換部１１１Ｄでは、ゼロ詰めデータｈ３′［ｎ］に対してＦＦＴ（高速フーリエ変換）が行われて、周波数領域データＨ３［ｋ］が得られる。
【０１４４】
高速フーリエ変換部１０３Ｄで得られた周波数領域データＸ１［ｋ］および高速フーリエ変換部１０９Ｄで得られた周波数領域データＨ12［ｋ］は乗算部１１２Ｄに供給される。この乗算部１１２Ｄでは、周波数領域データＸ１［ｋ］と周波数領域データＨ12［ｋ］が乗算されて、乗算結果Ｙ１［ｋ］が得られる。この乗算結果Ｙ１［ｋ］は逆高速フーリエ変換部１１３Ｄに供給される。この逆高速フーリエ変換部１１３Ｄでは、乗算結果Ｙ１［ｋ］に対してＩＦＦＴ（逆高速フーリエ変換）が行われて、離散時間信号ｙ１［ｎ］が得られる。
【０１４５】
また、高速フーリエ変換部１０５Ｄで得られた周波数領域データＸ２［ｋ］および高速フーリエ変換部１０９Ｄで得られた周波数領域データＨ12［ｋ］は乗算部１１４Ｄに供給される。この乗算部１１４Ｄでは、周波数領域データＸ２［ｋ］と周波数領域データＨ12［ｋ］が乗算されて、乗算結果Ｙ２［ｋ］が得られる。この乗算結果Ｙ２［ｋ］は逆高速フーリエ変換部１１５Ｄに供給される。この逆高速フーリエ変換部１１５Ｄでは、乗算結果Ｙ２［ｋ］に対してＩＦＦＴ（逆高速フーリエ変換）が行われて、離散時間信号ｙ２［ｎ］が得られる。
【０１４６】
また、高速フーリエ変換部１０７Ｄで得られた周波数領域データＸ３［ｋ］および高速フーリエ変換部１１１Ｄで得られた周波数領域データＨ３［ｋ］は乗算部１１６Ｄに供給される。この乗算部１１６Ｄでは、周波数領域データＸ３［ｋ］と周波数領域データＨ３［ｋ］が乗算されて、乗算結果Ｙ３［ｋ］が得られる。この乗算結果Ｙ３［ｋ］は逆高速フーリエ変換部１１７Ｄに供給される。この逆高速フーリエ変換部１１７Ｄでは、乗算結果Ｙ３［ｋ］に対してＩＦＦＴ（逆高速フーリエ変換）が行われて、離散時間信号ｙ３［ｎ］が得られる。
【０１４７】
逆高速フーリエ変換部１１３Ｄで得られた離散時間信号ｙ１［ｎ］、逆高速フーリエ変換部１１５Ｄで得られた離散時間信号ｙ２［ｎ］および逆高速フーリエ変換部１１７Ｄで得られた離散時間信号ｙ３［ｎ］は、加算部１１８Ｄに供給される。加算部１１８Ｄでは、重複加算法により、離散時間信号ｙ１［ｎ］，ｙ２［ｎ］，ｙ３［ｎ］が加算されて、出力離散時間信号ｙ［ｎ］が得られる。
【０１４８】
［演算量を低減できる場合］
図８、図１０のフィルタリング部１００Ｃ，１００Ｄにおいて、方式Ｂに比べて演算量を低減できる場合を説明する。
ここで、「方式Ｂ」および、図８、図１０に示すようにｘ［ｎ］を分割する方式（以下、「本方式」という）における演算量を比較してみる。
【０１４９】
「演算量の比較」
＜比較のための条件＞
本比較では、単純に加算・乗算回数の比較を行う。
【０１５０】
ＦＦＴの演算量に関して、バタフライ演算部の複素指数関数（（２１）式参照）のコサイン値、サイン値はデータとして保持しておくものとし、加算・乗算回数はバタフライ演算部の加算、および加算結果と複素指数関数の乗算のみに関して評価する。
【数５】
2010219582.tif 000007
【０１５１】
なお、Ｐ、Ｓ、Ｔに関しては、以下の式により算出可能である。
Ｐ＝２ ** int（log２（Ｎ*２−１））
Ｓ＝２ ** int（log２（（Ｎ＋３* Ｍ−３−Ｐ） * ２−１）
Ｔ＝２ ** int（log２（（Ｎ＋３* Ｍ−３−２ * Ｐ） *２−１）
ただし、int(x)はxの小数点以下を切り捨てた整数、log２(x)は２を底とする対数を表すものとする。
【０１５２】
＜演算量の算出結果＞
「方式Ｂ」、「本方式」における演算量の算出結果を以下に示す。なお、「方式Ｂ」の演算量の算出結果を示す（２２）式〜（２５）式は、上述した（７）式〜（１０）式と同じものであるが、比較の容易ために挙げている。
【０１５３】
「方式Ｂ」
Ｍ−１≦Ｐ−Ｎの場合は、以下の（２２）式、（２３）式で表される。
加算：１２＊Ｐ＊log２（Ｐ）＋２＊Ｐ      ・・・（２２）
乗算：６＊Ｐ＊log２（Ｐ）＋４＊Ｐ        ・・・（２３）
【０１５４】
Ｐ−Ｎ＜Ｍ−１≦Ｎの場合は、以下の（２４）式、（２５）式で表される。
加算：２４＊Ｐ＊log２（Ｐ）＋２８＊Ｐ      ・・・（２４）
乗算：１２＊Ｐ＊log２（Ｐ）＋２０＊Ｐ      ・・・（２５）
【０１５５】
「本方式」Ａ．（Ｐ−Ｎ）／２＜Ｍ−１≦Ｐ−Ｎで、ｘ［ｎ］を３分割した場合（図８のフィルタリング部１００Ｃの場合）は、以下の（２６）式、（２７）式で表される。
加算：１０＊Ｐ＊log２（Ｐ）−８＊Ｐ＋１２＊Ｓ＊log２（Ｓ）
＋２＊Ｓ＋２＊（Ｍ−１）      ・・・（２６）
乗算：５＊Ｐ＊log２（Ｐ）−Ｐ＋６＊Ｓ＊log２（Ｓ）＋４＊Ｓ      ・・・（２７）
【０１５６】
Ｂ．Ｐ−Ｎ／２＜Ｍ−１≦Ｎで、ｘ［ｎ］を３分割した場合（図１０のフィルタリング部１００Ｄの場合）は、以下の（２８）式、（２９）式で表される。
加算：２０＊Ｐ＊log２（Ｐ）＋４＊Ｐ＋１２＊Ｔ＊log２（Ｔ）
＋２＊Ｔ＋２＊（Ｍ−１）      ・・・（２８）
乗算：１０＊Ｐ＊log２（Ｐ）＋８＊Ｐ＋６＊Ｔ＊log２（Ｔ）
＋４＊Ｔ      ・・・（２９）
【０１５７】
＜方式Ｂと本方式の演算量の差＞
Ａ．（Ｐ−Ｎ）／２＜Ｍ−１≦Ｐ−Ｎの場合（図８のフィルタリング部１００Ｃの場合）、方式Ｂから本方式の演算量を差し引いた値の最小値は、以下の（３０）式、（３１）式で表される。
加算：２＊Ｐ＊log２（Ｐ）＋１０＊Ｐ−１２＊Ｓ＊log２（Ｓ）
−２＊Ｓ−２＊（Ｍ−１）      ・・・（３０）
乗算：Ｐ＊log２（Ｐ）＋５＊Ｐ−６＊Ｓ＊log２（Ｓ）−４＊Ｓ      ・・・（３１）
したがって、この場合は、Ｎ、Ｍの値により、（３０）式、（３１）式の値が正となるとき、本方式は方式Ｂに対して演算量の面において優位となる。
【０１５８】
Ｂ．Ｐ−Ｎ／２＜Ｍ−１≦Ｎの場合（図１０のフィルタリング部１００Ｄの場合）、方式Ｂから本方式の演算量を差し引いた値の最小値は、以下の（３２）式、（３３）式で表される。
加算：４＊Ｐ＊log２（Ｐ）＋２４＊Ｐ−１２＊Ｔ＊log２（Ｔ）
−２＊Ｔ−２＊（Ｍ−１）      ・・・（３２）
乗算：２＊Ｐ＊log２（Ｐ）＋１２＊Ｐ−６＊Ｔ＊log２（Ｔ）
−４＊Ｔ      ・・・（３３）
したがって、Ｎ、Ｍの値により、（３２）式、（３３）式の値が正となる場合、本方式は方式Ｂに対して演算量の面において優位となる。
【０１５９】
なお、上述の図２、図４、図８、図１０のフィルタリング部では、長さＮ（Ｎは整数）の離散時間信号ｘ［ｎ］を２分割、あるいは３分割して処理を行うものを示した。しかし、この発明において、分割する数および分割の仕方は、これらの分割例に限定されるものではない。要は、この発明は、長さＮ（Ｎは整数）の離散時間信号を長さＭ（Ｍは整数、Ｎ≧Ｍ−１）のフィルタ係数を持つＦＩＲフィルタに入力した場合の出力を得る際に、この長さＮの離散時間信号ｘ［ｎ］を複数個の離散時間信号に分割して処理することにある。これにより、従来方式に比べて、演算量等の低減が可能となる。
【０１６０】
また、上述したフィルタリング部１００Ａ〜１００Ｄは、ハードウェアで処理を行うものを示したが、同様の処理をソフトウェアで行うこともできる。図１２は、ソフトウェアで処理を行うコンピュータ装置１００Ｅの構成例を示している。このコンピュータ装置１００Ｅは、ＣＰＵ(Central Processing Unit)１８１、ＲＯＭ(Read OnlyMemory)１８２、ＲＡＭ(Random Access Memory)１８３およびデータ入出力部（データＩ／Ｏ）１８４により構成されている。
【０１６１】
ＲＯＭ１８２には、ＣＰＵ１８１の処理プログラムが格納されている。ＲＡＭ１８３は、ＣＰＵ１８１のワークエリアとして機能する。ＣＰＵ１８１は、ＲＯＭ１８２に格納されている処理プログラムを必要に応じて読み出し、読み出した処理プログラムをＲＡＭ１８３に転送して展開し、当該展開された処理プログラムを読み出して、フィルタリング処理を実行する。
【０１６２】
このコンピュータ装置１００Ｅにおいては、長さＮの離散時間信号ｘ［ｎ］および長さＭのフィルタ係数ｈ［ｍ］は、データＩ／Ｏ１８４を介して入力され、ＲＡＭ１８３に蓄積される。このＲＡＭ１８３に蓄積された離散時間信号ｘ［ｎ］およびフィルタ係数ｈ［ｍ］に対して、ＣＰＵ１８１により、上述の図２、図４、図８、図１０のフィルタリング部と同様の手順による畳み込み演算の処理、つまりフィルタリング処理が行われる。処理後の出力離散時間信号ｙ［ｎ］は、ＲＡＭ１８３からデータＩ／Ｏ１８４を介して外部に出力される。
【０１６３】
また、上述実施の形態においては、この発明をサラウンドプロセッサ１０の各フィルタリング部に適用したものを示した。しかし、この発明は、離散時間信号とフィルタ係数の畳み込み演算を高速フーリエ変換を用いて周波数領域での乗算により行う、その他のフィルタリング装置に同様に適用できることは勿論である。
【産業上の利用可能性】
【０１６４】
この発明は、離散時間信号とフィルタ係数の畳み込み演算を高速フーリエ変換を用いて周波数領域での乗算により行う場合にあって、演算量およびメモリ使用量の低減が可能となるものであり、サラウンドプロセッサ等の電子機器に適用できる。
【符号の説明】
【０１６５】
１０・・・サラウンドプロセッサ
１１-1〜１１-6，１２-1〜１２-6・・・フィルタリング部
１３，１４・・・加算部
１００Ａ〜１００Ｄ・・・フィルタリング部
１００Ｅ・・・コンピュータ装置
１０１Ａ，１０１Ｂ・・・２分割部
１０１Ｃ，１０１Ｄ・・・３分割部
１０２Ａ，１０２Ｂ，１０２Ｃ，１０２Ｄ，１０４Ａ，１０４Ｂ，１０４Ｃ，１０４Ｄ，１０６Ａ，１０６Ｂ，１０６Ｃ，１０６Ｄ，１０８Ａ，１０８Ｂ，１０８Ｃ，１０８Ｄ，１１０Ｃ，１１０Ｄ・・・ゼロ詰め部
１０３Ａ，１０３Ｂ，１０３Ｃ，１０３Ｄ，１０５Ａ，１０５Ｂ，１０５Ｃ，１０５Ｄ，１０７Ａ，１０７Ｂ，１０７Ｃ，１０７Ｄ，１０９Ａ，１０９Ｂ，１０９Ｃ，１０９Ｄ，１１１Ｃ，１１１Ｄ・・・高速フーリエ変換部
１１０Ａ，１１０Ｂ，１１２Ａ，１１２Ｂ，１１２Ｃ，１１２Ｄ，１１４Ｃ，１１４Ｄ，１１６Ｃ，１１６Ｄ・・・乗算部
１１１Ａ，１１１Ｂ，１１３Ａ，１１３Ｂ，１１３Ｃ，１１３Ｄ，１１５Ｃ，１１５Ｄ，１１７Ｃ，１１７Ｄ・・・逆高速フーリエ変換部
１１４Ａ，１１４Ｂ，１１８Ｃ，１１８Ｄ・・・加算部
【図１】
2010219582.tif 000008
【図２】
2010219582.tif 000009
【図３】
2010219582.tif 000010
【図４】
2010219582.tif 000011
【図５】
2010219582.tif 000012
【図６】
2010219582.tif 000013
【図７】
2010219582.tif 000014
【図８】
2010219582.tif 000015
【図９】
2010219582.tif 000016
【図１０】
2010219582.tif 000017
【図１１】
2010219582.tif 000018
【図１２】
2010219582.tif 000019
【図１３】
2010219582.tif 000020
【図１４】
2010219582.tif 000021