(57)【特許請求の範囲】
【請求項１】
入力信号系列の時間窓内の成分を変換し複素数のデータベクトルを出力する第１の離散フーリエ変換部と、
実数入力部と虚数入力部とを有する第２の離散フーリエ変換部であって、前記実数入力部に第１の係数が入力され、かつ、前記虚数入力部に第２の係数が入力され、前記実数入力部と前記虚数入力部への入力を変換して複素数の係数ベクトルを出力する第２の離散フーリエ変換部と、
前記データベクトルと前記係数ベクトルとを要素毎に複素乗算した演算結果を出力するベクトル乗算部と、
実数出力部と虚数出力部とを有する逆離散フーリエ変換部であって、前記演算結果を逆変換し、前記実数出力部より第１の出力信号系列を出力し、前記虚数出力部より第２の出力信号系列を出力する逆離散フーリエ変換部とを備える、信号処理装置。
【請求項２】
実数入力部と虚数入力部とを有する第１の離散フーリエ変換部であって、前記実数入力部に第１の入力信号系列における第１の時間窓内の成分が入力され、かつ、前記虚数入力部に第２の入力信号系列における第２の時間窓内の成分が入力され、前記実数入力部と前記虚数入力部への入力を変換して複素数のデータベクトルを出力する第１の離散フーリエ変換部と、
前記データベクトルと係数ベクトルとを要素毎に複素乗算した演算結果を出力するベクトル乗算部と、
実数出力部と虚数出力部を有する逆離散フーリエ変換部であって、前記演算結果を逆変換し、前記実数出力部より第１の出力信号系列を、前記虚数出力部より第２の出力信号系列を出力する逆離散フーリエ変換部とを備え、
前記第１の時間窓と前記第２の時間窓とは時間軸上同じ位置にある、信号処理装置。
【請求項３】
前記ベクトル乗算部は、さらに、
前記データベクトルを、前記第１の入力信号系列に係る第１の成分と前記第２の入力信号系列に係る第２の成分とに分離するスプリッタと、
第１係数ベクトルを供給する第１係数ベクトル供給部と、
第２係数ベクトルを供給する第２係数ベクトル供給部と、
前記第１の成分と前記第１係数ベクトルとを複素乗算する第１の複素乗算部と、
前記第２の成分と前記第２係数ベクトルとを複素乗算する第２の複素乗算部と、
前記第１の複素乗算部の乗算結果と前記第２の複素乗算部の乗算結果とを加算して前記演算結果とする加算器とを備える、請求項２記載の信号処理装置。
【請求項４】
前記ベクトル乗算部は、さらに、
第１係数ベクトルと第２係数ベクトルとに基づいて第３係数ベクトルを生成する第３係数ベクトル供給部と、
第１係数ベクトルと第２係数ベクトルとに基づいて第４係数ベクトルを生成する第４係数ベクトル供給部と、
前記データベクトルと前記第３係数ベクトルとを複素乗算する第１の複素乗算部と、
前記データベクトルを反転させたデータの複素共役成分と前記第４係数ベクトルとを複素乗算する第２の複素乗算部と、
前記第１の複素乗算部の乗算結果と前記第２の複素乗算部の乗算結果とを加算して前記演算結果とする加算器とを備える、請求項２記載の信号処理装置。
【請求項５】
前記第１の離散フーリエ変換部の出力側と前記逆離散フーリエ変換部の入力側との少なくとも一方に、周波数領域たすきがけ演算部を設け、
前記周波数領域たすきがけ演算部は、
入力されるデータベクトルを、第１の成分と第２の成分とに分離するスプリッタを備え、
前記周波数領域たすきがけ演算部は、前記スプリッタにより分離された第１の成分と第２の成分に関し、たすきがけ演算し、たすきがけ演算結果を出力する、請求項１から４のいずれかに記載の信号処理装置。
【請求項６】
前記第１の離散フーリエ変換部の出力側と前記逆離散フーリエ変換部の入力側との少なくとも一方に、周波数領域たすきがけ演算部を設け、
前記周波数領域たすきがけ演算部は、入力される第１のデータベクトルと、前記第１のデータベクトルを反転させ複素共役をとった第２のデータベクトルとを、要素毎に所定の係数を乗じて加算し、加算結果を出力する、請求項１から４のいずれかに記載の信号処理装置。
【請求項７】
前記第１の離散フーリエ変換部の出力側と前記逆離散フーリエ変換部の入力側との少なくとも一方に、周波数領域たすきがけ演算部を設け、
前記周波数領域たすきがけ演算部は、前記周波数領域たすきがけ演算部の過去の演算結果である第１のデータベクトルと、前記第１のデータベクトルを反転させ複素共役をとった第２のデータベクトルと、入力される第３のデータベクトルとを、要素毎に所定の係数を乗じて加算し、加算結果を出力する、請求項１から４のいずれかに記載の信号処理装置。
【請求項８】
前記逆離散フーリエ変換部は、離散フーリエ変換部と反転部とにより構成される、請求項１から７のいずれかに記載の信号処理装置。
【請求項９】
入力信号系列の時間窓内の成分を変換し複素数のデータベクトルを出力するステップと、
実数部と虚数部とを有する複素数であって、前記実数部に第１の係数がセットされ、前記虚数部に第２の係数がセットされたものを入力し、複素数の係数ベクトルを出力するステップと、
前記データベクトルと前記係数ベクトルとを要素毎に複素乗算した演算結果を出力するステップと、
前記演算結果を逆変換して複素数の逆変換結果を求め、前記逆変換結果の実数部を第１の出力信号系列とし、前記逆変換結果の虚数部を第２の出力信号系列とするステップとを備える、信号処理方法。
【請求項１０】
離散フーリエ変換部の実数入力部に第１の入力信号系列における第１の時間窓内の成分を入力し、かつ、前記離散フーリエ変換部の虚数入力部に第２の入力信号系列における第２の時間窓内の成分を入力し、前記実数入力部と前記虚数入力部への入力を変換して複素数のデータベクトルを出力するステップと、
前記データベクトルと係数ベクトルとを要素毎に複素乗算した演算結果を出力するステップと、
前記演算結果を逆変換して複素数の逆変換結果を求め、前記逆変換結果の実数部を第１の出力信号系列とし、前記逆変換結果の虚数部を第２の出力信号系列とするステップとを備え、
前記第１の時間窓と前記第２の時間窓とは時間軸上同じ位置にある、信号処理方法。
【請求項１１】
前記畳み込みを行うステップは、さらに、
前記データベクトルを、前記第１の入力信号系列に係る第１の成分と前記第２の入力信号系列に係る第２の成分とに分離するステップと、
第１係数ベクトルを供給するステップと、
第２係数ベクトルを供給するステップと、
前記第１の成分と前記第１係数ベクトルとを複素乗算して第１の乗算結果を求めるステップと、
前記第２の成分と前記第２係数ベクトルとを複素乗算して第２の乗算結果を求めるステップと、
前記第１の乗算結果と前記第２の乗算結果とを加算して前記演算結果とするステップとを備える、請求項１０記載の信号処理方法。
【請求項１２】
前記畳み込みを行うステップは、さらに、
第１係数ベクトルと第２係数ベクトルとに基づいて第３係数ベクトルを生成するステップと、
第１係数ベクトルと第２係数ベクトルとに基づいて第４係数ベクトルを生成するステップと、
前記データベクトルと前記第３係数ベクトルとを複素乗算して第３の乗算結果を求めるステップと、
前記データベクトルを反転させたデータの複素共役成分と前記第４係数ベクトルとを複素乗算して第４の乗算結果を求めるステップと、
前記第３の乗算結果と前記第４の乗算結果とを加算して前記演算結果とするステップとを備える、請求項１０記載の信号処理方法。
【請求項１３】
前記係数ベクトルを記憶する係数ベクトル記憶部から前記係数ベクトルを読み出して複素乗算を行う、請求項９から１２のいずれかに記載の信号処理方法。
【請求項１４】
前記データベクトルに周波数領域たすきがけ演算を施すステップをさらに備え、
前記周波数領域たすきがけ演算を施すステップは、
前記データベクトルを第１の成分と第２の成分とに分離するステップと、
第１の成分と第２の成分をたすきがけ演算し、たすきがけ演算結果を出力するステップとを含む、請求項９から１３のいずれかに記載の信号処理方法。
【請求項１５】
前記データベクトルに周波数領域たすきがけ演算を施すステップをさらに備え、
前記周波数領域たすきがけ演算を施すステップは、
入力される第１のデータベクトルと、前記第１のデータベクトルを反転させ複素共役をとった第２のデータベクトルとを、要素毎に所定の係数を乗じて加算し加算結果を出力するステップを含む、請求項９から１３のいずれかに記載の信号処理方法。
【請求項１６】
前記データベクトルに周波数領域たすきがけ演算を施すステップをさらに備え、
前記周波数領域たすきがけ演算を施すステップは、
過去の演算結果である第１のデータベクトルと、前記第１のデータベクトルを反転させ複素共役をとった第２のデータベクトルと、入力される第３のデータベクトルとを、要素毎に所定の係数を乗じて加算し加算結果を出力する、請求項９から１３のいずれかに記載の信号処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、１入力多出力、または多入力多出力のデジタルフィルタとして利用できる信号処理装置及びその方法に関するものである。
【背景技術】
【０００２】
１入力多出力または多入力多出力のデジタルフィルタは、様々な場面で広く用いられている。この種のデジタルフィルタは、例えば、音を任意の位置に定位させるシステムや、音に反射音を付加して拡がり感を持たせるシステム等において使用される。
【０００３】
デジタルフィルタは、フィードバック部を有するＩＩＲフィルタと、フィードバック部を持たないＦＩＲフィルタとに分類される。ここでは、後者のＦＩＲフィルタについて説明を行う。
【０００４】
図１９（ａ）は、従来の１入力２出力の時間領域ＦＩＲフィルタの詳細ブロック図である。
【０００５】
図１９（ａ）において、入力端子１から入力される入力信号ｘは、ＦＩＲフィルタ５に入力され、遅延器８により遅延をかけられ遅延信号となる。各遅延信号は、乗算器７により所定の係数が乗ぜられ、加算器９に入力される。加算器９は、これらの入力を加算して、加算結果を出力信号ｙ１として出力端子２へ出力する。
【０００６】
同様に、入力端子１から入力される入力信号ｘは、ＦＩＲフィルタ６に入力され、出力端子３から出力信号ｙ２が出力される。
【０００７】
図１９（ｂ）は、ＦＩＲフィルタ５、６を簡略化して示している。図１９（ｂ）と同様に表示すると、２入力２出力の系統では、図１９（ｃ）（加算器９が追加されている）のようになり、６入力４出力の系統では、図２０に示すような構成となる。
【０００８】
図１９、図２０に示すＦＩＲフィルタは、時間領域において処理を行う。図２０から明らかなように、時間領域での処理によると、ＦＩＲフィルタの次数（タップ数）が増加するにつれ、回路構成が非常に複雑になってしまう。
【０００９】
時間領域での処理ではなく、周波数領域での処理を行うと、単位時間当たりの演算回数（乗算、および加減算）が少なくなることが、知られている。時間領域の畳み込みは、周波数領域では、ベクトル同士の対応する要素の単純な積に相当するためである。
【００１０】
周波数領域で処理を行うには、次のようにする。まず、時間領域の信号を、ある定められた時間窓毎に離散フーリエ変換を用いて周波数領域に変換する。離散フーリエ変換を少ない演算回数で行うために、離散フーリエ変換の高速算法である高速フーリエ変換（ＦＦＴ）がよく用いられる。次に、変換された信号ベクトルと、係数ベクトル（周波数領域）とについて、対応する要素の積を計算する。
【００１１】
さらに、その積を逆高速フーリエ変換（ＩＦＦＴ）し、時間領域に戻す。この処理は、高次数のＦＩＲフィルタの演算に、適している。
【００１２】
この周波数領域でのＦＩＲフィルタの詳細については、非特許文献１（「高速フーリエ変換とその応用」第５章（佐川雅彦・貴家仁志著、昭晃堂））、非特許文献２（“Ｆａｓｔ Ｆｏｕｒｉｅｒ Ｔｒａｎｓｆｏｒｍ ａｎｄ Ｃｏｎｖｏｌｕｔｉｏｎ Ａｌｇｏｒｉｔｈｍｓ”第３−４章（Ｈｅｎｒｉ Ｊ． Ｎｕｓｓｂａｕｍｅｒ著、１９８２年）−和訳名「高速フーリエ変換のアルゴリズム」（佐川雅彦・本間仁志訳、１９９３年、科学技術出版社））に記述がある。
【００１３】
非特許文献１、２が指摘するように、周波数領域での畳み込みは、通常循環畳み込み（ｃｉｒｃｕｌａｒ ｃｏｎｖｏｌｕｔｉｏｎ）となるため、時間領域と同じ直線畳み込み（ｌｉｎｅａｒ ｃｏｎｖｏｌｕｔｉｏｎ）となるような工夫が必要である。
【００１４】
そして、非特許文献１、２は、その具体的手法として、重複保持法（ｏｖｅｒｌａｐ―ｓａｖｅ  ｍｅｔｈｏｄ）と、重複加算法（ｏｖｅｒｌａｐ−ａｄｄ ｍｅｔｈｏｄ）とを紹介する。
【００１５】
図２１を参照しながら、これらの手法のうち、重複保持法を用いる例を説明する。ここは、入力信号系列ｘに係数ｈを畳み込み、出力信号系列ｙを求めるものとする。図中、「Ｒｅ」は実数であることを示し、同様に、「Ｉｍ」は虚数、「Ｃｏ」は複素数であることを示す。以降、他の図でも同様である。
【００１６】
まず、現在の時間窓Ｗｎの窓長をＮ（サンプル）、係数長をＬ（サンプル）とする。この時データの更新長をＭ（サンプル）とすると
Ｍ＝Ｎ−Ｌ
となる。
【００１７】
ここで、時間窓Ｗｎ−１は直前の時間窓であり、時間窓Ｗｎ＋１は、次の時間窓である。時間窓Ｗｎ−１、Ｗｎ、Ｗｎ＋１は、同じ窓長を持ち、互いに係数長Ｌ（サンプル）だけ重なり合うように設定される。
【００１８】
また、入力信号系列ｘのうち、現在の時間窓Ｗｎ内の成分は、ＦＦＴ部１１の実数入力部１１ａに入力される。ＦＦＴ部１１の虚数入力部１１ｂは、使用されず、「０」のみのデータ（Ｎサンプル）が虚数入力部１１ｂに入力される。つまり、入力は、１系統である。
【００１９】
一方、係数ｈについて、長さＬの係数を前詰めし、後ろに長さＭのゼロを付加し、長さＮの時間領域の実数係数を作る。係数ｈの実数系列は、ＦＦＴ部１０の実数入力部１０ａに入力され、ＦＦＴ部１０の虚数入力部１０ｂは、使用されず、「０」のみのデータ（Ｎサンプル）が虚数入力部１０ｂに入力される。つまり、係数は、１系統である。
【００２０】
この実数係数に対し、ＦＦＴ部１０により、窓長ＮのＦＦＴを行うと、ＦＦＴ部１１の複素出力部１１ｃから、長さＮの係数ベクトルＨ（複素数、周波数領域）が出力される。
【００２１】
次に、入力信号系列ｘについて、直前の時間窓Ｗｎ−１で使用したデータの後ろからＬサンプル取り、現在の時間窓Ｗｎのデータの後からＭサンプルのデータを取り、長さＮの実数信号系列としたものを、ＦＦＴ部１１の実数部１１ａに入力する。そして、ＦＦＴ部１１により、ＦＦＴを行うと、複素出力部１１ｃから長さＮのデータベクトルＸ（複素数、周波数領域）が出力される。
【００２２】
次に、複素乗算部１２は、係数ベクトルＨとデータベクトルＸとについて、要素毎に複素乗算を行う。
【００２３】
すなわち、係数ベクトルＨを
Ｈ＝［Ｈ（１），Ｈ（２），…，Ｈ（Ｎ）］
とし、データベクトルＸを
Ｘ＝［Ｘ（１），Ｘ（２），…，Ｘ（Ｎ）］
としたとき、複素乗算部１２は、複素乗算結果が
Ｙ＝Ｈ・Ｘ＝［Ｈ（１）Ｘ（１），Ｈ（２）Ｘ（２），…，Ｈ（Ｎ）Ｘ（Ｎ）］
となるように演算を行い、この演算結果Ｙを、ＩＦＦＴ部１３の複素入力部１３ｃへ出力する。
【００２４】
ＩＦＦＴ部１３は、演算結果Ｙを、窓長Ｎの逆高速フーリエ変換（ＩＦＦＴ）して時間領域に戻し、ＩＦＦＴ部１３の実数出力部１３ａから出力信号系列ｙが出力される。なお、ＩＦＦＴ部１３の虚数出力部１３ｂは使用されない。
【００２５】
求められた出力信号系列ｙのうち、先頭のＬサンプル（×印）は、循環畳み込みの影響を受けているため廃棄される。廃棄されず残ったＭサンプルの信号データが、求める出力信号系列ｙとされる。
【００２６】
次に、図２２を参照して、重複加算法について説明する。重複加算法によっても、基本的には、重複保持法と同じである。例えば、実数系列ｘに係数ｈを畳み込み、実数系列ｙを求める場合、ＦＦＴの窓長Ｎ（サンプル）、係数長Ｌ（サンプル）、データの更新長Ｍ（サンプル）、長さＮの係数ベクトルＨの求め方は、上述したとおりである。
【００２７】
但し、重複加算法では、現在の時間窓Ｗｎの入力データの後ろからＬサンプルのデータは「０」とする。また、ＩＦＦＴ部１３が求めた信号データのうち、先頭のＬサンプルと、直前の時間窓Ｗｎ−１において得られた信号データの後ろからのＬサンプルとを加算する。
【００２８】
こうして得られた先頭からＭサンプルの信号データが、求める出力信号系列ｙとなる。この時、ＩＦＦＴ部１３は、時間窓Ｗｎに関する後ろからＬサンプルを、次回の畳み込みにおける加算のために、メモリ１４に格納する。
【００２９】
次に、重複保持法、重複加算法による演算回数を評価する。ここでは、上述のように、Ｍ（＝Ｎ−Ｌ）サンプル当たりの演算回数について考える。
【００３０】
重複保持法では、
ＦＦＴ 複素乗算（Ｎ／２）ｌｏｇ2（Ｎ−１）
複素加算Ｎｌｏｇ2Ｎ
ベクトル乗算複素乗算Ｎ
ＩＦＦＴ 複素乗算（Ｎ／２）ｌｏｇ2（Ｎ−１）
複素加算Ｎｌｏｇ2Ｎ
となり、合計で
複素乗算Ｎｌｏｇ2（Ｎ−１）＋Ｎ
複素加算２Ｎｌｏｇ2Ｎ
となる。
【００３１】
また、重複加算法についても、上記とほぼ同等の演算回数となる。
【００３２】
ここで、係数のＦＦＴについては、起動時に１回のみ求め、入力信号系列に関するリアルタイム系の処理から切り離すことができるため、上記の演算回数には、入れないことにする。
【００３３】
これらの方法を基本にし、複素ＦＦＴの性質を利用してメモリ量や単位時間当たりの演算回数の削減を図った方法が、幾つか提案されている。
【００３４】
特許文献１（米国特許第３６７９８８２号公報）は、１回のＦＦＴと１回のＩＦＦＴの代わりに、１回の複素ＦＦＴとフィードバックを用いて実現する方法を開示する。
【００３５】
また、非特許文献１、２は、別の方法（以下「従来改良法」という）を開示する。次に、図２３を参照しながら、従来改良法について説明する。
【００３６】
図２３に示すように、従来改良法では、入力信号系列ｘについて、現在の時間窓Ｗｎと次の時間窓Ｗｎ＋１とを、一度に使用する。なお、各時間窓Ｗｎ−１、Ｗｎ、Ｗｎ＋１の関係は、上述と同様である。
【００３７】
時間窓Ｗｎ内のデータをＦＦＴ部１１の実数入力部１１ａに入力し、時間窓Ｗｎ＋１内のデータをＦＦＴ部１１の虚数入力部１１ｂに入力する。
【００３８】
そして、ＦＦＴ部１１により複素ＦＦＴを行い、複素数のデータベクトルＸが、ＦＦＴ部１１の複素出力部１１ｃから複素乗算部１２へ出力される。
【００３９】
係数ベクトルＨについては、上述と同様である。
【００４０】
ところが、ＩＦＦＴ部１３が、ＩＦＦＴを行うと、ＩＦＦＴ部１２の実数出力部１３ａから時間窓Ｗｎに対応する出力信号系列ｙが出力され、ＩＦＦＴ部１２の虚数出力部１３ｂから時間窓Ｗｎ＋１に対応する出力信号系列ｙが出力される。
【００４１】
従来改良法によると、図２１に示す重複保持法と同じ演算回数で、２倍の２Ｍサンプル分の処理が可能となり、有利である。
【００４２】
以上に示した方法は、いずれも１入力１出力のＦＩＲフィルタについての効率化を目指している。
【００４３】
したがって、これを１入力多出力、多入力多出力のＦＩＲフィルタに拡張する場合には、時間領域のＦＩＲフィルタと同じように、１入力１出力のＦＩＲフィルタを並列に配置することになる。
【００４４】
図２４（ａ）は、従来の１入力２出力の信号処理装置を示し、図２４（ｂ）は、従来の２入力２出力の信号処理装置を示す。
【００４５】
図２４（ａ）は、図１９（ｂ）における時間領域のＦＩＲフィルタを、周波数領域のフィルタに変更したものに相当し、図２４（ｂ）は、図１９（ｃ）における時間領域のＦＩＲフィルタを、周波数領域のフィルタに変更したものに相当する。
【００４６】
なお、図２４（ａ）では、ＦＦＴ部１５、ＩＦＦＴ部１６、１７、複素乗算部１８、１９が具備される。また、図２４（ｂ）では、図２４（ａ）の要素に、ＦＦＴ部２０、複素乗算部２１、２２、加算器２３、２４が追加されている。
【００４７】
次に、従来改良法による演算回数を評価する。
【００４８】
周波数領域のフィルタ構成では、通常の重複保持法で、１入力２出力の場合、演算回数は、Ｍ（＝Ｎ−Ｌ）サンプル当たり
ＦＦＴ 複素乗算（Ｎ／２）ｌｏｇ2（Ｎ−１）
複素加算Ｎｌｏｇ2Ｎ
ベクトル乗算複素乗算２Ｎ
ＩＦＦＴ 複素乗算Ｎｌｏｇ2（Ｎ−１）
複素加算２Ｎｌｏｇ2Ｎ
となり、合計で
複素乗算（３Ｎ／２）ｌｏｇ2（Ｎ−１）＋２Ｎ
複素加算３Ｎｌｏｇ2Ｎ
となる。
【００４９】
また、２入力２出力の場合、演算回数は、Ｍ（＝Ｎ−Ｌ）サンプル当たり
ＦＦＴ 複素乗算Ｎｌｏｇ2（Ｎ−１）
複素加算２Ｎｌｏｇ2Ｎ
ベクトル乗算複素乗算４Ｎ
ベクトル加算複素加算２Ｎ
ＩＦＦＴ 複素乗算Ｎｌｏｇ2（Ｎ−１）
複素加算２Ｎｌｏｇ2Ｎ
となり、合計で
複素乗算２Ｎｌｏｇ2（Ｎ−１）＋４Ｎ
複素加算４Ｎｌｏｇ2Ｎ＋２Ｎ
となる。
【００５０】
図２３に示した従来改良法を用いれば、上記と同じ演算回数で２Ｍサンプル分の演算が実行可能である。
【００５１】
しかしながら、図２３から明らかなように、従来改良法では、時間窓Ｗｎのデータと時間窓Ｗｎ＋１のデータとの両方が、そろうまで処理を実行できない。したがって、従来改良法では、図２１の重複保持法や図２２の重複加算法に比べて、データがそろうまでの遅延時間が、約２倍になってしまうという問題点がある。
【特許文献１】米国特許第３６７９８８２号公報
【特許文献２】特開平８−５０１６６７号公報
【特許文献３】国際公開ＷＯ  ９４／１９３３号公報
【特許文献４】米国特許第４９９２９６７号公報
【特許文献５】米国特許第５７６８１６５号公報
【特許文献６】特開２０００−２６７６８２号公報
【非特許文献１】「高速フーリエ変換とその応用」第５章（佐川雅彦・貴家仁志著、昭晃堂）
【非特許文献２】“Ｆａｓｔ  Ｆｏｕｒｉｅｒ  Ｔｒａｎｓｆｏｒｍ  ａｎｄ  Ｃｏｎｖｏｌｕｔｉｏｎ  Ａｌｇｏｒｉｔｈｍｓ”第３−４章（Ｈｅｎｒｉ  Ｊ．  Ｎｕｓｓｂａｕｍｅｒ著、１９８２年）−和訳名「高速フーリエ変換のアルゴリズム」（佐川雅彦・本間仁志訳、１９９３年、科学技術出版社）
【発明の開示】
【発明が解決しようとする課題】
【００５２】
１入力多出力および多入力多出力のＦＩＲフィルタにおいて、更に単位時間当たりの演算回数を小さくしたい、処理遅延量も短くしたいという要求がある。しかしながら、１入力多出力および多入力多出力の観点による最適化は今まで考慮されておらず、更なる高効率化が必要である。
【００５３】
そこで本発明は、単位時間当たりの演算回数、処理遅延量の観点から、１入力多出力または多入力多出力において、処理効率を向上できる信号処理装置を提供することを目的とする。
【課題を解決するための手段】
【００５４】
第１の発明に係る信号処理装置は、入力信号系列の時間窓内の成分を変換し複素数のデータベクトルを出力する第１の離散フーリエ変換部と、データベクトルと係数ベクトルとを要素毎に複素乗算した演算結果を出力するベクトル乗算部と、実数出力部と虚数出力部とを有する逆離散フーリエ変換部であって、演算結果を逆変換し、実数出力部より第１の出力信号系列を出力し、虚数出力部より第２の出力信号系列を出力する逆離散フーリエ変換部とを備える。
【００５５】
この構成により、１入力多出力における処理効率を向上できる。具体的には、従来改良法よりも、演算回数を削減でき、かつ、データがそろうまでの遅延時間を短縮できる。
【００５６】
第２の発明に係る信号処理装置は、入力信号系列の時間窓内の成分を変換し複素数のデータベクトルを出力する第１の離散フーリエ変換部と、実数入力部と虚数入力部とを有する第２の離散フーリエ変換部であって、実数入力部に第１の係数が入力され、かつ、虚数入力部に第２の係数が入力され、実数入力部と虚数入力部への入力を変換して複素数の係数ベクトルを出力する第２の離散フーリエ変換部と、データベクトルと係数ベクトルとを要素毎に複素乗算した演算結果を出力するベクトル乗算部と、実数出力部と虚数出力部とを有する逆離散フーリエ変換部であって、演算結果を逆変換し、実数出力部より第１の出力信号系列を出力し、虚数出力部より第２の出力信号系列を出力する逆離散フーリエ変換部とを備える。
【００５７】
この構成により、出力信号系列に第１の係数を作用させ、出力される第２の出力信号系列に第２の係数を作用させることができる。
【００５８】
第３の発明に係る信号処理装置は、実数入力部と虚数入力部とを有する第１の離散フーリエ変換部であって、実数入力部に第１の入力信号系列における第１の時間窓内の成分が入力され、かつ、虚数入力部に第２の入力信号系列における第２の時間窓内の成分が入力され、実数入力部と虚数入力部への入力を変換して複素数のデータベクトルを出力する第１の離散フーリエ変換部と、データベクトルと係数ベクトルとを要素毎に複素乗算した演算結果を出力するベクトル乗算部と、実数出力部と虚数出力部を有する逆離散フーリエ変換部であって、演算結果を逆変換し、実数出力部より第１の出力信号系列を、虚数出力部より第２の出力信号系列を出力する逆離散フーリエ変換部とを備え、第１の時間窓と第２の時間窓とは時間軸上同じ位置にある。
【００５９】
この構成により、多入力多出力における処理効率を向上できる。具体的には、従来改良法よりも、演算回数を削減でき、かつ、データがそろうまでの遅延時間を短縮できる。特に、２チャンネル以上の音響信号処理に好適である。
【００６０】
第４の発明に係る信号処理装置では、ベクトル乗算部は、さらに、データベクトルを、第１の入力信号系列に係る第１の成分と第２の入力信号系列に係る第２の成分とに分離するスプリッタと、第１係数ベクトルを供給する第１係数ベクトル供給部と、第２係数ベクトルを供給する第２係数ベクトル供給部と、第１の成分と第１係数ベクトルとを複素乗算する第１の複素乗算部と、第２の成分と第２係数ベクトルとを複素乗算する第２の複素乗算部と、第１の複素乗算部の乗算結果と第２の複素乗算部の乗算結果とを加算して演算結果とする加算器とを備える。
【００６１】
この構成において、スプリッタにより、複素数のデータベクトルを、第１の入力信号系列に係る第１の成分と、第２の入力信号系列に係る第２の成分とに分離できる。
【００６２】
また、この分離の後、第１の複素乗算部により、第１の成分に、第１係数を独立して作用させることができ、第２の複素乗算部により、第２の成分に、第２係数を独立して作用させることができる。
【００６３】
第５の発明に係る信号処理装置では、ベクトル乗算部は、さらに、第１係数ベクトルと第２係数ベクトルとに基づいて第３係数ベクトルを生成する第３係数ベクトル供給部と、第１係数ベクトルと第２係数ベクトルとに基づいて第４係数ベクトルを生成する第４係数ベクトル供給部と、データベクトルと第３係数ベクトルとを複素乗算する第１の複素乗算部と、データベクトルを反転させたデータの複素共役成分と第４係数ベクトルとを複素乗算する第２の複素乗算部と、第１の複素乗算部の乗算結果と第２の複素乗算部の乗算結果とを加算して演算結果とする加算器とを備える。
【００６４】
この構成により、スプリッタを省略することができ、演算回数及び／又は回路規模を削減できる。
【００６５】
また、スプリッタを省略しながらも、結果として、第１の入力信号系列に係る第１の成分に、第１係数を独立して作用させることができ、第２の入力信号系列に係る第２の成分に、第２係数を独立して作用させることができる。
【００６６】
第６の発明に係る信号処理装置では、さらに、周波数領域たすきがけ演算部を備える。
【００６７】
この構成により、周波数領域でたすきがけ演算を実現できる。
【００６８】
第７の発明に係る信号処理装置では、逆離散フーリエ変換部は、離散フーリエ変換部と反転部とにより構成される。
【００６９】
この構成により、逆離散フーリエ変換部を設けずに、離散フーリエ変換部だけで変換部を構成でき、要素共通性を向上できる。なお、反転部自体は、例えば、アドレッシングの工夫など簡単な構成で実現できる。
【発明の効果】
【００７０】
本発明によれば、１入力多出力、および多入力多出力の信号処理において、離散フーリエ変換のバッファによる遅延を考慮した場合、その単位時間当たりの演算量が、従来法に比べ、１入力多出力で２０％前後、多入力多出力の系で４０％程度削減され、高速な信号処理を実現できる。
【発明を実施するための最良の形態】
【００７１】
以下図面を参照しながら、本発明の実施の形態を説明する。
【００７２】
（実施の形態１）
図１は、本発明の実施の形態１における信号処理装置のブロック図であり、重複保持法を用いる例を示す。図２は、本発明の実施の形態１における信号処理装置のブロック図であり、重複加算法を用いる例を示す。実施の形態１は、１入力２出力系の信号処理装置に関する。
【００７３】
まず、図１を参照しながら、重複保持法を用いる例を説明する。ここでは、入力信号系列ｘに係数ｈを畳み込み、出力信号系列ｙを求めるものとする。時間窓等の設定は、図２１と同様である。
【００７４】
即ち、現在の時間窓Ｗｎの窓長をＮ（サンプル）、係数長をＬ（サンプル）とする。この時データの更新長をＭ（サンプル）とすると
Ｍ＝Ｎ−Ｌ
となる。
【００７５】
ここで、時間窓Ｗｎ−１は直前の時間窓であり、時間窓Ｗｎ＋１は、次の時間窓である。時間窓Ｗｎ−１、Ｗｎ、Ｗｎ＋１は、同じ窓長を持ち、互いに係数長Ｌ（サンプル）だけ重なり合うように設定される。
【００７６】
第１のＦＦＴ部であるＦＦＴ部１１は、実数系列の時間窓Ｗｎ内の成分を変換し、その複素出力部１１ｃから複素数のデータベクトルＸを出力する。ＦＦＴ部１１は、実数入力部１１ａと虚数入力部１１ｂとを備え、入力信号系列ｘの時間窓Ｗｎ内の成分は、実数入力部１１ａにのみ入力される。
【００７７】
また、ＦＦＴ部１１の虚数入力部１１ｂは、使用されず、「０」のみのデータ（Ｎサンプル）が虚数入力部１１ｂに入力される。つまり、入力信号系列は、１系統である。
【００７８】
本形態のベクトル乗算部３０は、複素数データＸと係数ベクトルＨとを要素毎に複素乗算を行い、演算結果Ｙを出力する。
【００７９】
ベクトル乗算部３０は、第２のＦＦＴ部であるＦＦＴ部１０と、係数ベクトルＨを記憶する係数ベクトル記憶部３１を備える。
【００８０】
ＦＦＴ部１０は、実数入力部１０ａと虚数入力部１０ｂと複素出力部１０ｃを有する。ここで、第１の係数ｈ１について、長さＬの係数ｈ１を前詰めし、後ろに長さＭのゼロを付加し、長さＮの時間領域の係数を作る。同様に、第２の係数ｈ２について、長さＬの係数ｈ２を前詰めし、後ろに長さＭのゼロを付加し、長さＮの時間領域の係数を作る。
【００８１】
ＦＦＴ部１０の実数入力部１０ａには、第１の係数ｈ１に関する成分が入力され、ＦＦＴ部１０の虚数入力部１０ｂには、第２の係数ｈ２に関する成分が入力される。つまり、係数の入力は、図２１と異なり２系統である。
【００８２】
そして、ＦＦＴ部１０は、第１の係数ｈ１に関する成分と、第２の係数ｈ２に関する成分とを、複素ＦＦＴし、その複素出力部１０ｃから長さＮの係数ベクトルＨ（複素数、周波数領域）を出力する。
【００８３】
出力された係数ベクトルＨは、係数ベクトル記憶部３１に格納される。
【００８４】
この係数ベクトルＨの計算及び係数ベクトル記憶部３１への係数ベクトルＨの格納は、入力信号系列ｘの入力に先立って行うのが好ましい。こうすると、係数ベクトルＨについては、単に係数ベクトル記憶部３１から読み出すだけで済み、処理を高速化できるからである。
【００８５】
ベクトル乗算部３０の複素乗算部１２は、係数ベクトルＨとデータベクトルＸとについて、要素毎に複素乗算を行う。
【００８６】
すなわち、係数ベクトルＨを
Ｈ＝［Ｈ（１），Ｈ（２），…，Ｈ（Ｎ）］
とし、データベクトルＸを
Ｘ＝［Ｘ（１），Ｘ（２），…，Ｘ（Ｎ）］
としたとき、複素乗算部１２は、複素乗算結果が
Ｙ＝Ｈ・Ｘ＝［Ｈ（１）Ｘ（１），Ｈ（２）Ｘ（２），…，Ｈ（Ｎ）Ｘ（Ｎ）］
となるように演算を行い、演算結果Ｙを、ＩＦＦＴ部１３の複素入力部１３ｃへ出力する。
【００８７】
ＩＦＦＴ部１３は、ベクトル乗算部３０の演算結果Ｙを、窓長Ｎの逆高速フーリエ変換（ＩＦＦＴ）して時間領域に戻す。
【００８８】
その結果、ＩＦＦＴ部１３の実数出力部１３ａから出力信号系列ｙ１が出力される。この出力信号系列ｙ１は、入力信号系列ｘに第１の係数ｈ１を作用させたものである。
【００８９】
また、ＩＦＦＴ部１３の虚数出力部１３ｂから出力信号系列ｙ２が出力される。この出力信号系列ｙ２は、入力信号系列ｘに第２の係数ｈ２を作用させたものである。
【００９０】
図１では、ＩＦＦＴ部１３からの出力を重複保持法により利用する。従って、実数出力部１３ａから出力される出力信号系列ｙ１のうち、先頭のＬサンプル（×印）は、循環畳み込みの影響を受けているため廃棄される。廃棄されず残ったＭサンプルの信号データが、求める出力信号系列ｙ１とされる。
【００９１】
同様に、虚数出力部１３ｂから出力される出力信号系列ｙ２のうち、先頭のＬサンプル（×印）は、循環畳み込みの影響を受けているため廃棄される。廃棄されず残ったＭサンプルの信号データが、求める出力信号系列ｙ２とされる。
【００９２】
次に、図２を参照しながら、逆ＦＦＴ部１３の出力を、重複加算法により利用する例を説明する。図２と図１を比較すればわかるように、ＩＦＦＴ部１３までの構成は、図１とほぼ同様である。
【００９３】
ただし、図２に示すように、重複加算法によるときは、従来の技術の項で述べたように、現在の時間窓Ｗｎの入力データの後ろからＬサンプルのデータは「０」とする。また、時間窓Ｗｎに関する出力信号系列の後ろからＬサンプルを、次回の畳み込みにおける加算のために、記憶しておく必要がある。
【００９４】
また、図１の説明で述べたように、ＩＦＦＴ部１３は、出力信号系列ｙ１と出力信号系列ｙ２の２つの出力を行う。このため、出力信号系列ｙ１の時間窓Ｗｎに関する後ろからＬサンプルを記憶する第１記憶部２６と、出力信号系列ｙ２の時間窓Ｗｎに関する後ろからＬサンプルを記憶する第２記憶部２７とが設けられている。
【００９５】
以下、図１、図２による場合について、演算回数等を評価する。ただし、本形態では、入力信号系列ｘの処理に先立って、係数ベクトルＨの演算結果を係数ベクトル記憶部３１に格納するから、以下の評価において、係数ベクトルＨの演算回数は、単位時間当たりの演算回数に含めない。
【００９６】
本形態では、１回のＦＦＴ、１回のベクトル乗算、１回のＦＦＴで２つの畳み込みが実行されている。単位時間当たりの演算回数を考えると、Ｍ（＝Ｎ−Ｌ）サンプル当たり
ＦＦＴ 複素乗算（Ｎ／２）ｌｏｇ2（Ｎ−１）
複素加算Ｎｌｏｇ2Ｎ
ベクトル乗算複素乗算Ｎ
ベクトル加算複素加算なし
ＩＦＦＴ 複素乗算（Ｎ／２）ｌｏｇ2（Ｎ−１）
複素加算Ｎｌｏｇ2Ｎ
となり、合計で
複素乗算Ｎｌｏｇ2（Ｎ−１）＋Ｎ
複素加算２Ｎｌｏｇ2Ｎ
となる。これは、従来では
複素乗算（３Ｎ／２）ｌｏｇ2（Ｎ−１）＋２Ｎ
複素加算３Ｎｌｏｇ2Ｎ
となり、１．５倍の高速化が図れている。
【００９７】
この結果によると、従来改良法の方が演算回数が少ないように見える。しかしながら、従来改良法は、２Ｍサンプル毎の更新となるため、ＦＦＴの入力データが揃うまでのバッファ保存による遅延時間が、図１の回路の２倍になってしまう。すなわち、同じ更新時間（バッファ保存のための遅延時間）とフィルタタップ数にして評価しないと、正しい比較とはいえない。
【００９８】
すなわち、従来改良法については、
Ｎ＝（Ｍ／２＋Ｌ）
なる新しいＮをＦＦＴの窓長とする必要がある。すなわち、Ｍサンプル当たりの演算回数は
複素乗算０．７５（Ｍ＋２Ｌ）ｌｏｇ2｛Ｍ／２＋Ｌ−１｝＋（Ｍ＋２Ｌ）
複素加算３（Ｍ／２＋Ｌ）ｌｏｇ2｛Ｍ／２＋Ｌ｝
となる。
【００９９】
本形態による信号処理装置では、
Ｎ＝Ｍ＋Ｌ
のままでよいので、Ｍサンプル当たりの演算回数は
複素乗算（Ｍ＋Ｌ）ｌｏｇ2（Ｍ＋Ｌ−１）＋（Ｍ＋Ｌ）
複素加算２（Ｍ＋Ｌ）ｌｏｇ2（Ｍ＋Ｌ）
となる。
【０１００】
ここで、これらを比較するために、典型的な値として、
Ｍ＝２０４８ Ｌ＝４０９６
の値を代入すると、従来改良法では
複素乗算１０４８７０
複素加算１８９２６０
となり、本形態では
複素乗算８３４６５
複素加算１５４６４１
となり、共に本形態の方が、演算回数は、単位時間当たり、約２０％削減されている。
【０１０１】
他の実用的な数値を代入した場合においても、削減率の大小はあるものの、本形態の方が、演算回数が少ない。
【０１０２】
以上のように、時間領域の係数の一方を実数部、他方を虚数部に入れてＦＦＴした周波数領域の係数列を用いることで、単位時間当たりの演算量を削減する効果が得られる。
【０１０３】
（実施の形態２）
本発明の実施の形態２における信号処理装置について、図３〜図６を参照しながら説明する。本形態は、実施の形態１とは異なり、２入力２出力系の信号処理装置に関する。
【０１０４】
図３は、図１に対応し、本発明の実施の形態２における信号処理装置のブロック図であり、重複保持法による例を示す。図４は、図２に対応し、本発明の実施の形態２における信号処理装置のブロック図であり、重複加算法による例を示す。
【０１０５】
図３は、図１に対応し、本発明の実施の形態２における信号処理装置のブロック図であり、重複保持法による例を示す。図４は、図２に対応し、本発明の実施の形態２における信号処理装置のブロック図であり、重複加算法による例を示す。
【０１０６】
第１のＦＦＴ部であるＦＦＴ部１１と逆ＦＦＴ部１１の構成は、実施の形態１と同様である。ただし、上述したように、本形態は、多入力多出力系に関し、ＦＦＴ部１１の実数入力部１１ａに入力信号系列（第１の入力信号系列）ｘ１（時間窓Ｗｎ）が入力され、ＦＦＴ部１１の虚数入力部１１ｂに入力信号系列（第２の入力信号系列）ｘ２（時間窓Ｗｍ）が入力される。時間窓Ｗｎ，Ｗｍの窓長は等しく、実施の形態１と同様である。
【０１０７】
ここで、入力信号系列ｘ１、ｘ２は、異なる実数系列とすることができ、さらに、時間窓Ｗｎと時間窓Ｗｍとは、時間軸上同じ位置にあるものとする。
【０１０８】
典型的には、２チャンネルの音響信号について、左チャンネル（Ｌｃｈ）の成分を入力信号系列ｘ１とし、右チャンネル（Ｒｃｈ）の成分を入力信号系列ｘ２とすることができる。
【０１０９】
また、逆ＦＦＴ部１３の実数出力部１３ａから出力信号系列ｙ１（時間領域）が出力され、逆ＦＦＴ部１３の虚数出力部１３ｂから出力信号系列ｙ２（時間領域）が出力される。
【０１１０】
ベクトル乗算部４０は、複素数のデータベクトルＸと係数ベクトルとを畳み込み、演算結果Ｙを出力する点、及び、係数ベクトルを記憶する係数ベクトル記憶部を備える点においては、実施の形態１と同様である。
【０１１１】
しかしながら、ベクトル乗算部４０には、入力信号系列ｘ１に係る成分と、入力信号系列ｘ２に係る成分とが、データベクトルＸにまとめられた状態で入力される。このため、ベクトル乗算部４０の構成は、以下に述べるように、実施の形態１と異なる。
【０１１２】
図５は、本発明の実施の形態２におけるベクトル乗算部のブロック図である。図５の構成の説明に先立ち、以下、ベクトル乗算部４０による処理の原理を説明する。など、図３、図４に示すように、このベクトル乗算部４０は、重複保持法、重複加算法に共通して使用できる。
【０１１３】
さて、入力信号系列ｘ１、ｘ２と、出力信号系列ｙ１、ｙ２と、係数ｈ１１、ｈ１２、ｈ２１、ｈ２２とは、
ｙ１＝ｈ１１・ｘ１＋ｈ２１・ｘ２
ｙ２＝ｈ１２・ｘ１＋ｈ２２・ｘ２
なる関係を満たすものとする。
【０１１４】
また、時間窓Ｗｎ、Ｗｍに共通して、窓長がＮ（サンプル）であり、係数長がＬ（サンプル）であり、データの更新長がＭ（サンプル）であるとすると
Ｍ＝Ｎ−Ｌ
となる。これは、これまでと同様である。
【０１１５】
しかしながら、上述したように、データベクトルＸは、入力信号系列ｘ１、ｘ２の成分がまとめられた状態でベクトル乗算部４０に入力される。そこで、実施の形態２では、スプリッタを設け、データベクトルＸを、入力信号系列ｘ１に係る成分と、入力信号系列ｘ２に係る成分とに、一旦分離し、分離されたそれぞれの成分に該当する係数ベクトルを畳み込む。その後、それぞれの演算結果を合成して、ベクトル乗算部の演算結果Ｙとして出力する。
【０１１６】
即ち、図５に示すように、ベクトル乗算部４０は、次の要素を備える。
【０１１７】
スプリッタ４３は、複素数のデータベクトルＸ（ｋ）を、第１の入力信号系列ｘ１に係る第１の成分Ｘ１（ｋ）と第２の入力信号系列ｘ２に係る第２の成分Ｘ２（ｋ）とに分離する。
【０１１８】
第１係数ベクトル供給部５０は、第１係数ベクトルＨ１（ｋ）を供給し、第２係数ベクトル供給部６０は、第２係数ベクトルＨ２（ｋ）を供給する。
【０１１９】
第１の複素乗算部１８は、第１の成分Ｘ１（ｋ）と第１係数ベクトルＨ１（ｋ）とを複素乗算し、第２の複素乗算部１９は、第２の成分Ｘ２（ｋ）と第２係数ベクトルＨ２（ｋ）とを複素乗算する。
【０１２０】
加算器２３は、第１の複素乗算部１８の乗算結果と第２の複素乗算部１９の乗算結果とを加算してベクトル乗算部の演算結果Ｙ（ｋ）とする。
【０１２１】
第１係数ベクトル供給部５０及び第２係数ベクトル供給部６０は、図１及び図２に示したベクトル乗算部３０から複素乗算部１２を除いたものと同様の構成である。
【０１２２】
即ち、第１係数ベクトル供給部５０は、ＦＦＴ部１０と第１係数ベクトル記憶部４１とを有する。実数入力部１０ａには、係数ｈ１１に関する長さＮの時間領域の系列が入力される。虚数入力部１０ｂは、係数ｈ１２に関する長さＮの時間領域の系列が入力される。複素出力部１０ｃから係数ｈ１１と係数ｈ１２とを複素ＦＦＴした係数ベクトルＨ１が出力され、この係数ベクトルは、第１係数ベクトル記憶部４１に格納される。
【０１２３】
同様に、第２係数ベクトル供給部６０は、ＦＦＴ部１１と第２係数ベクトル記憶部４２とを有する。実数入力部１１ａには、係数ｈ２１に関する長さＮの時間領域の系列が入力される。虚数入力部１１ｂは、係数ｈ２２に関する長さＮの時間領域の系列が入力される。複素出力部１１ｃから係数ｈ２１と係数ｈ２２とを複素ＦＦＴした係数ベクトルＨ２が出力され、この係数ベクトルは、第２係数ベクトル記憶部４２に格納される。
【０１２４】
なお例えば、係数ｈ１１としてＬｃｈからＬｃｈへ作用させる係数を選び、係数ｈ１２としてＬｃｈからＲｃｈへ作用させる係数を選び、係数ｈ２１としてＲｃｈからＬｃｈへ作用させる係数を選び、係数ｈ２２としてＲｃｈからＲｃｈへ作用させる係数を選ぶとよい。
【０１２５】
次に、図６を用いて、スプリッタ４３の構成例を説明する。まず、スプリッタ４３の原理を説明する。
【０１２６】
２つの実数系列ｘ１（ｎ）、ｘ２（ｎ）を、それぞれ独立してＦＦＴし周波数領域に変換した複素数のデータを、Ｘ１（ｋ）、Ｘ２（ｋ）とする。さらに、
ｘ（ｎ）＝ｘ１（ｎ）＋ｊｘ２（ｎ） （以下、「ｊ」は虚数単位）
なる複素信号系列ｘ（ｎ）を定義する。この複素信号系列ｘ（ｎ）をＦＦＴした複素数データＸ（ｋ）は、
Ｘ（ｋ）＝Ｘ１（ｋ）＋ｊＸ２（ｋ）
となる。このとき、Ｘ（ｋ）を用いると、Ｘ１（ｋ）、Ｘ２（ｋ）は、
Ｘ１（ｋ）＝｛Ｘ（ｋ）＋Ｘ*（Ｎ−ｋ）｝／２
Ｘ２（ｋ）＝｛Ｘ（ｋ）−Ｘ*（Ｎ−ｋ）｝／２ｊ
（*は複素共役を表す。以下同じ。）
と表せる。
【０１２７】
すなわち、図５に示すスプリッタ４３を、以上の関係式を満たすように構成すれば、複素数のデータベクトルＸ（ｋ）を、入力信号系列ｘ１に係る成分Ｘ１（ｋ）と入力信号系列ｘ２に係る成分Ｘ２（ｋ）とに分離できる。
【０１２８】
具体的には、図６（ｂ）に示すコア部４４を用い、図６（ａ）に示すように、入力系（Ｘ（０），Ｘ（１），…，Ｘ（Ｎ−１））と、出力系（Ｘ１（０），…，Ｘ１（Ｎ／２），Ｘ２（０），…，Ｘ２（Ｎ／２））とを、接続すればよい。
【０１２９】
なお、図６（ａ）では、スプリッタ４３の出力が「０」から「Ｎ／２」までしかないが、元の信号系列ｘ１、ｘ２が実数系列なので
Ｘ１（ｋ）＝Ｘ１（Ｎ−ｋ）
Ｘ２（ｋ）＝Ｘ２（Ｎ−ｋ）
なる性質があるため、Ｎ／２を超えるものは省略して差し支えないのである。
【０１３０】
以下、実施の形態２における演算回数を評価する。なお、重複保持法、重複加算法とでは、演算回数は同様である。
【０１３１】
さて、本形態では、１回のＦＦＴ、１回のスプリッタ処理、２回のベクトル乗算、１回のベクトル加算、１回のＩＦＦＴで４つの畳み込みが実行されている。単位時間当たりの演算回数を考えると、Ｍ（＝Ｎ−Ｌ）サンプル当たり
ＦＦＴ 複素乗算（Ｎ／２）ｌｏｇ2（Ｎ−１）
複素加算Ｎｌｏｇ2Ｎ
スプリッタ複素加算Ｎ
ベクトル乗算複素乗算２Ｎ
ベクトル加算複素加算Ｎ
ＩＦＦＴ 複素乗算（Ｎ／２）ｌｏｇ2（Ｎ−１）
複素加算Ｎｌｏｇ2Ｎ
となり、合計で
複素乗算Ｎｌｏｇ2（Ｎ−１）＋２Ｎ
複素加算２Ｎｌｏｇ2Ｎ＋２Ｎ
となる。これは、従来と比べ２倍の高速化が図れている。
【０１３２】
ここでも、従来改良法との比較を行う。２入力２出力の場合は２Ｍサンプル当たりの演算回数は
複素乗算２Ｎｌｏｇ2（Ｎ−１）＋４Ｎ
複素加算４Ｎｌｏｇ2Ｎ＋２Ｎ
となるが、実施の形態１の場合と同じく、
Ｎ＝（Ｍ／２＋Ｌ）
なる新しいＮをＦＦＴの窓長とする必要がある。すなわち、Ｍサンプル当たりの演算回数は
複素乗算（Ｍ＋２Ｌ）ｌｏｇ2｛Ｍ／２＋Ｌ−１｝＋２（Ｍ＋２Ｌ）
複素加算２（Ｍ＋２Ｌ）ｌｏｇ2｛Ｍ／２＋Ｌ｝＋（Ｍ＋２Ｌ）
となる。
【０１３３】
本形態による信号処理装置では、
Ｎ＝Ｍ＋Ｌ
のままでよいので、Ｍサンプル当たりの演算回数は
複素乗算（Ｍ＋Ｌ）ｌｏｇ2（Ｍ＋Ｌ−１）＋２（Ｍ＋Ｌ）
複素加算２（Ｍ＋Ｌ）ｌｏｇ2（Ｍ＋Ｌ）＋２（Ｍ＋Ｌ）
となる。
【０１３４】
ここで、これらを比較するために、典型的な値として、
Ｍ＝２０４８ Ｌ＝４０９６
の値を代入すると、従来改良法では
複素乗算１４６６５４
複素加算２６２５８７
となり、本形態では
複素乗算８９６０９
複素加算１６６９２９
となり、共に本形態の方が、単位時間当たりの演算回数が、約３８％削減されており、１入力２出力の場合に比べ、より削減率が高い。
【０１３５】
以上のように、本形態では、入力信号系列ｘ１、ｘ２を、一方を実数入力部に、他方を虚数入力部に入れてＦＦＴし、そのＦＦＴ出力をスプリッタ４３を用いて分離した後に、実施の形態１と同様の係数を乗じている。これにより、多入力多出力系において、単位時間当たりの演算量を削減できる。
【０１３６】
（実施の形態３）
本発明の実施の形態３における信号処理装置について、図７を参照しながら説明する。
【０１３７】
本形態の信号処理装置は、実施の形態２と同様に、２入力２出力系の信号処理装置である。重複保持法によるときは、図３に示すようになり、重複加算法によるときは、図４に示すようになる。
【０１３８】
ただし、本形態では、図５に示されるベクトル乗算部において、Ａ部の内容が異なる。本形態では、スプリッタなしでベクトル乗算部を構成する。
【０１３９】
図７（ａ）は、本形態の実施の形態３におけるベクトル乗算部のブロック図である。まず、ベクトル乗算部９０の原理を説明する。
【０１４０】
さて、演算結果Ｙ（ｋ）のうち、入力信号系列ｘ１に係る成分をＹ１（ｋ）とし、入力信号系列ｘ２に係る成分をＹ２（ｋ）とする。
【０１４１】
このとき、Ｙ１（ｋ）、Ｙ２（ｋ）は
Ｙ１（ｋ）＝Ｈ１１（ｋ）Ｘ１（ｋ）＋Ｈ２１（ｋ）Ｘ２（ｋ）
Ｙ２（ｋ）＝Ｈ１２（ｋ）Ｘ１（ｋ）＋Ｈ２２（ｋ）Ｘ２（ｋ）
と表される。ここで、
Ｙ（ｋ）＝Ｙ１（ｋ）＋ｊＹ２（ｋ）
Ｈ１（ｋ）＝Ｈ１１（ｋ）＋ｊＨ１２（ｋ）
Ｈ２（ｋ）＝Ｈ２１（ｋ）＋ｊＨ２２（ｋ）
と定義すると
Ｙ（ｋ）＝Ｈ１（ｋ）Ｘ１（ｋ）＋Ｈ２（ｋ）Ｘ２（ｋ）
と表される。前述のように、
Ｘ１（ｋ）＝｛Ｘ（ｋ）＋Ｘ*（Ｎ−ｋ）｝／２
Ｘ２（ｋ）＝｛Ｘ（ｋ）−Ｘ*（Ｎ−ｋ）｝／２ｊ
であるから、
Ｙ（ｋ）＝Ｈ１（ｋ）｛Ｘ（ｋ）＋Ｘ*（Ｎ−ｋ）｝／２
―ｊＨ２（ｋ）｛Ｘ（ｋ）−Ｘ*（Ｎ−ｋ）｝／２
＝｛Ｈ１（ｋ）―ｊＨ２（ｋ）｝Ｘ（ｋ）／２
＋｛Ｈ１（ｋ）＋ｊＨ２（ｋ）｝Ｘ*（Ｎ−ｋ）／２
と変形できる。すなわち、
Ｍ（ｋ）＝｛Ｈ１（ｋ）―ｊＨ２（ｋ）｝／２
＝｛Ｈ１１（ｋ）＋Ｈ２２（ｋ）｝／２
＋ｊ｛Ｈ１２（ｋ）―Ｈ２１（ｋ）｝／２
Ｐ（ｋ）＝｛Ｈ１（ｋ）＋ｊＨ２（ｋ）｝／２
＝｛Ｈ１１（ｋ）−Ｈ２２（ｋ）｝／２
＋ｊ｛Ｈ１２（ｋ）＋Ｈ２１（ｋ）｝／２
とおくと
Ｙ（ｋ）＝Ｍ（ｋ）Ｘ（ｋ）＋Ｐ（ｋ）Ｘ*（Ｎ−ｋ）
となる。
【０１４２】
この関係式に基づいて、図７（ａ）のように構成すれば、図５のＡ部と等価な処理部であって、かつ、スプリッタがないものを実現できる。
【０１４３】
図７（ａ）において、係数ベクトルＭ（ｋ）を供給する第４係数ベクトル記憶部７０と、係数ベクトルＰ（ｋ）を供給する第５係数ベクトル記憶部８０とは、図７（ｂ）に示すように、加算器２３、２４を用いたたすきがけ演算を行えば実現できる。
【０１４４】
さらに、図７（ｃ）には、入力系（Ｘ（０），Ｘ（１），…，Ｘ（Ｎ−１））と、出力系（Ｙ（０），Ｙ（１），…，Ｙ（Ｎ−１））との、接続例を示している。
【０１４５】
本形態では、実施の形態２よりも、スプリッタ処理の分だけ演算回数が削減されている。以下、本形態の演算回数を評価する。なお、重複保持法と重複加算法とでは、演算回数は同様である。
【０１４６】
すなわち、単位時間当たりの演算回数を考えると、Ｍ（＝Ｎ−Ｌ）サンプル当たり
ＦＦＴ 複素乗算（Ｎ／２）ｌｏｇ2（Ｎ−１）
複素加算Ｎｌｏｇ2Ｎ
ベクトル乗算複素乗算２Ｎ
ベクトル加算複素加算Ｎ
ＩＦＦＴ 複素乗算（Ｎ／２）ｌｏｇ2（Ｎ−１）
複素加算Ｎｌｏｇ2Ｎ
となり、合計で
複素乗算Ｎｌｏｇ2（Ｎ−１）＋２Ｎ
複素加算２Ｎｌｏｇ2Ｎ＋Ｎ
となり、実施の形態２に比べ、複素加算回数がＮだけ削減されている。
【０１４７】
（実施の形態４）
本発明の実施の形態４における信号処理装置について、図８を参照しながら説明する。
【０１４８】
図８（ａ）は、多入力多出力の信号処理装置の例として、６入力４出力の信号処理装置を示している。なお、図８（ａ）では明示してないが、重複保持法における入力信号系列のオーバーラップと出力信号系列先頭の廃棄、重複加算法における入力信号系列のゼロ付加と出力信号系列のオーバーラップ加算は実施されるものとする。
【０１４９】
図８（ａ）のように、入力信号系列について、２つずつセットにして考える。一方は実数部、他方は虚数部とした複素系列を３セットつくり、ＦＦＴ部１３により、その各々についてＦＦＴし、周波数領域の信号系列Ｘへ変換する。
【０１５０】
また、ベクトル乗算部４０を全ての経路の分用意する。このベクトル乗算部４０は、実施の形態２のものでも、実施の形態３のものでも良く、あるいは、これらを混在させて使用しても良い。
【０１５１】
それぞれの演算結果Ｙは、加算器２３、２４により、加算され、それぞれの加算結果をＩＦＦＴ部１３により、時間領域の出力信号系列ｙ１、ｙ２、ｙ３、ｙ４に逆変換する。
【０１５２】
このように、入力信号系列のチャンネル数の１／２個のＦＦＴ部、出力信号系列のチャンネル数の加算器とＩＦＦＴ部、ＦＦＴ部の個数とＩＦＦＴ部の個数との積の個数のベクトル乗算部を用いることで、多入力多出力の信号処理装置を実現できる。
【０１５３】
なお、多入力多出力の畳み込みであっても、畳み込みが不要な経路が存在する場合もある。このような場合、図８（ｂ）に示すように、不要な経路に合わせてベクトル乗算部を一部省略してもよい。
【０１５４】
（実施の形態５）
本発明の実施の形態５における信号処理装置の適用例について、図９を参照しながら説明する。
【０１５５】
図９は、マルチチャンネルのオーディオ信号が作り出す音場と同等な音場を、前方２つのスピーカやヘッドホンで作り出すバーチャル・サラウンド装置を示している。
【０１５６】
入力は、左チャンネル（Ｌｃｈ）、右チャンネル（Ｒｃｈ）、左サラウンド・チャンネル（ＳＬｃｈ）、右サラウンド・チャンネル（ＳＲｃｈ）、センター・チャンネル（Ｃｃｈ）、サラウンドバック・チャンネル（ＳＢｃｈ）、の６チャンネルに重低音専用チャンネル（ＬＦＥｃｈ）を加え、６．１チャンネルと呼ばれているものである。
【０１５７】
図９の信号処理装置は、これを、出力左チャンネル（Ｌｃｈ）、右チャンネル（Ｒｃｈ）の２チャンネルにダウンミックスするものである。ここで、通常のダウンミックスではなく、音源位置から耳元までの音の伝搬過程での変化を表した頭部伝達関数に基づいて算出されたフィルタを用いフィルタリング、すなわち畳み込み演算を施してダウンミックスを行う。
【０１５８】
まず、入力について、ＬｃｈとＲｃｈを１セット、ＳＬｃｈとＳＲｃｈを１セット、ＣｃｈとＳＢｃｈを１セットにし、一方を実数部、他方を虚数部に入れ、ＦＦＴし、周波数領域のデータベクトルＸへ変換する。それぞれ、ベクトル乗算部４０によりでフィルタリングに相当する演算を行い、加算器２３で加算した後、ＩＦＦＴする。
【０１５９】
こうして得られた時間領域の信号系列の実数部がＬｃｈ、虚数部がＲｃｈに相当する。このＬｃｈとＲｃｈの信号系列に、ＬＦＥｃｈの信号に関し遅延器８による遅延信号を、適切な係数を乗じて加算し、２チャンネルの出力信号系列を得る。
【０１６０】
このようにすれば、より演算回数が少なく、低コストのバーチャル・サラウンド装置を実現できる。
【０１６１】
なお、ここではＬｃｈとＲｃｈ、ＳＬｃｈとＳＲｃｈ、ＣｃｈとＳＢｃｈとをペアにしたが、そのペアの仕方は任意である。例えば、ＬｃｈとＳＬｃｈ、ＲｃｈとＳＲｃｈのようなペアでも良い。
【０１６２】
また、ＬＦＥｃｈについては、時間領域で遅延させて出力近くで加算したが、これもＦＦＴ部を用いた畳み込みに代えてもよい。
【０１６３】
（実施の形態６）
本発明の実施の形態６における信号処理装置について、図１０から図１６を参照しながら説明する。
【０１６４】
図１０は、本発明の実施の形態６における信号処理装置のブロック図である。図１０に示すように、実施の形態６では、ベクトル乗算器４０の前後に、周波数領域たすきがけ演算部１００、１０１が設けられる。
【０１６５】
以下、周波数領域たすきがけ演算部１００、１０１のいくつかの具体例を説明する。最初に、図１１から図１４を参照しながら、スプリッタ４３を用いた例を説明する。なお以下において、スプリッタ４３は、図６に示したものと同様である。
【０１６６】
図１１は、フィードフォワード型の周波数領域たすきがけ演算部１００、１０１のブロック図である。図１１（ａ）において、スプリッタ４３は、データベクトルＵを２つの成分（Ｕ1、Ｕ2）に分離し、スプリッタ４３の後段は、時間領域と同じスカラー係数（Ｃ11〜Ｃ22）を用い、スカラー係数（Ｃ11〜Ｃ22）と２つの成分（Ｕ1、Ｕ2）とを乗算し、たすきがけ演算を行う。
【０１６７】
ここで、図１１（ｂ）のように、スカラー係数（Ｃ11〜Ｃ22）を複素数ｊを用いてまとめてもよい。
【０１６８】
フィードバック型の周波数領域たすきがけ演算部１００、１０１は、さらに図１２（ａ）、図１２（ｂ）、図１３に示すように構成することができる。
【０１６９】
なお、周波数領域たすきがけ演算部１００、１０１とベクトル乗算部４０とが接続される場合、次のように、周波数領域たすきがけ演算部１００、１０１とベクトル乗算部４０とにおいて、スプリッタ４３を共用化できる。スプリッタ４３を共用化すると、フィードフォワード型では図１４（ａ）のようになり、フィードバック型では図１４（ｂ）のようになる。
【０１７０】
このように、周波数領域たすきがけ演算部１００、１０１とベクトル乗算部４０とにおいてスプリッタ４３を共用化すると、スプリッタ４３の１つ分、回路規模／演算回数を削減できる。
【０１７１】
次に、図１５〜図１６を参照しながら、スプリッタ４３を用いずに、周波数領域たすきがけ演算部１００、１０１を構成する例を説明する。
【０１７２】
まず、フィードフォワード型について説明する。時間領域の入力信号ｕ１をＦＦＴした結果をＵ１（ｋ）とし、入力信号ｕ２をＦＦＴした結果をＵ２（ｋ）とする。また、実数部にｕ１、虚数部にｕ２を入力してＦＦＴした結果をＵ（ｋ）とする。
【０１７３】
同様に、たすきがけ演算後の周波数領域信号Ｘ１（ｋ）をＩＦＦＴした結果をｘ１とし、Ｘ２（ｋ）をIＦＦＴした結果をｘ２とする。また、たすきがけ演算後の周波数領域信号ＸをＩＦＦＴした結果、その実数部にｘ１、虚数部にｘ２が出力されるものとする。
【０１７４】
このとき、Ｕ１（ｋ）、Ｕ２（ｋ）とＵ（ｋ）の関係は次式のようになる。
【０１７５】
Ｕ１（ｋ）＝｛Ｕ（ｋ）＋Ｕ＊（Ｎ−ｋ）｝／２
Ｕ２（ｋ）＝｛Ｕ（ｋ）―Ｕ＊（Ｎ−ｋ）｝／２ｊ
次に、４つのスカラー係数によるたすきがけ演算の関係は
Ｘ１（ｋ）＝Ｃ１１・Ｕ１（ｋ）＋Ｃ２１・Ｕ２（ｋ）
Ｘ２（ｋ）＝Ｃ１２・Ｕ１（ｋ）＋Ｃ２２・Ｕ２（ｋ）
となる。
【０１７６】
したがって、
Ｘ（ｋ）＝Ｘ１（ｋ）＋ｊＸ２（ｋ）
なる関係式より、Ｘ（ｋ）をＵ（ｋ）、Ｕ＊（Ｎ−ｋ）を用いて表すと
Ｘ（ｋ）＝ＥＡ・Ｕ（ｋ）＋ＥＢ・Ｕ＊（Ｎ−ｋ）
となる。ただし、
ＥＡ＝（Ｃ１１＋Ｃ２２）＋ｊ（Ｃ１２−Ｃ２１）
ＥＢ＝（Ｃ１１−Ｃ２２）＋ｊ（Ｃ１２＋Ｃ２１）
である。
【０１７７】
この関係を採用すると、フィードフォワード型の周波数領域たすきがけ演算部１００、１０１は、図１５のように構成できる。図１５（ａ）は、たすきがけ演算コア部１５０を示し、図１５（ｂ）は、周波数領域たすきがけ演算部の全体を示す。
【０１７８】
同様に、フィードバック型の周波数領域たすきがけ演算部１００、１０１は、図１６のように構成できる。図１６（ａ）は、たすきがけ演算コア部１５１を示し、図１６（ｂ）は、周波数領域たすきがけ演算部の全体を示す。
【０１７９】
以上のように、本発明により、周波数領域でのたすきがけ演算が実現できるようになった。
【０１８０】
なお、実際のたすきがけ演算では
Ｃ１１＝Ｃ２２
Ｃ１２＝Ｃ２１
のように、対称な係数が使われる場合が多く、この場合には、周波数領域の係数が
ＥＡ＝２・Ｃ１１
ＥＢ＝ｊ２・Ｃ１２
となり、この関係を利用すると、さらに演算回数を削減できる。
【０１８１】
（実施の形態７）
実施の形態１から実施の形態６では、ＩＦＦＴ部１３を用いて、演算結果Ｙを時間領域へ逆変換している。しかしながら、図１７に示すように、ＩＦＦＴ部１３に代えて、ＦＦＴ部１５と反転部４５との組み合わせで構成することもできる。
【０１８２】
ここで、ＩＦＦＴ部１３を単にＦＦＴ部１５に置換しただけでは、
（問題１）出力レベルがＦＦＴ部の窓長倍になる。
【０１８３】
（問題２）時間領域の出力信号系列ｙが反転する。
という問題がある。
【０１８４】
（問題１）については、係数又は信号のいずれかを、１／Ｎ（Ｎは窓長）倍すればよい。例えば、係数ベクトルを予め１／Ｎ（Ｎは窓長）倍しておくとよい。
【０１８５】
（問題２）については、図１７（ａ）のように、反転部４５により、時間領域の出力信号系列ｙを反転させると良い。あるいは、図１７（ｂ）のように、反転部４５が、周波数領域においてベクトル乗算部の演算結果Ｙを反転するようにしてもよいし、図１７（ｃ）に示すように、反転部４５が、周波数領域においてデータベクトルＸを反転するようにしてもよい。
【０１８６】
なお、反転部４５の処理は、単なるアドレッシング（例えば、メモリアドレスの操作等）ですむため、反転部４５による演算負担はわずかである。ＩＦＦＴ部を使用しないようにすると、ＦＦＴ部を共用できるため、システム資源の負担を軽減できる。
【産業上の利用可能性】
【０１８７】
本発明に係る信号処理装置は、例えば、１入力多出力、多入力多出力の音響信号処理装置等或いはそれを含む応用技術又は関連技術の分野で好適に使用できる。
【図面の簡単な説明】
【０１８８】
【図１】本発明の実施の形態１における信号処理装置のブロック図
【図２】本発明の実施の形態１における信号処理装置のブロック図
【図３】本発明の実施の形態２における信号処理装置のブロック図
【図４】本発明の実施の形態２における信号処理装置のブロック図
【図５】本発明の実施の形態２におけるベクトル乗算部のブロック図
【図６】（ａ）本発明の実施の形態２におけるスプリッタのブロック図  （ｂ）本発明の実施の形態２におけるコア部のブロック図
【図７】（ａ）本発明の実施の形態３におけるベクトル乗算部のブロック図  （ｂ）本発明の実施の形態３における第３係数ベクトル供給部のブロック図  （ｃ）本発明の実施の形態３におけるベクトル乗算部のブロック図
【図８】（ａ）本発明の実施の形態４における６入力４出力の信号処理装置のブロック図  （ｂ）本発明の実施の形態４における６入力４出力の信号処理装置のブロック図
【図９】本発明の実施の形態５におけるバーチャル・サラウンド装置のブロック図
【図１０】本発明の実施の形態６における信号処理装置のブロック図
【図１１】（ａ）本発明の実施の形態６における周波数領域たすきがけ演算部のブロック図  （ｂ）本発明の実施の形態６における周波数領域たすきがけ演算部のブロック図
【図１２】（ａ）本発明の実施の形態６における周波数領域たすきがけ演算部のブロック図  （ｂ）本発明の実施の形態６における周波数領域たすきがけ演算部のブロック図
【図１３】本発明の実施の形態６における周波数領域たすきがけ演算部のブロック図
【図１４】（ａ）本発明の実施の形態６において、周波数領域たすきがけ演算部とベクトル乗算部でスプリッタを共用化した回路のブロック図  （ｂ）本発明の実施の形態６において、周波数領域たすきがけ演算部とベクトル乗算部でスプリッタを共用化した回路のブロック図
【図１５】（ａ）本発明の実施の形態６におけるたすきがけ演算コア部のブロック図  （ｂ）本発明の実施の形態６における周波数領域たすきがけ演算部のブロック図
【図１６】（ａ）本発明の実施の形態６におけるたすきがけ演算コア部のブロック図  （ｂ）本発明の実施の形態６における周波数領域たすきがけ演算部のブロック図
【図１７】（ａ）本発明の実施の形態７における信号処理装置のブロック図  （ｂ）本発明の実施の形態７における信号処理装置のブロック図  （ｃ）本発明の実施の形態７における信号処理装置のブロック図
【図１８】（ａ）本発明の実施の形態７におけるベクトル乗算部のブロック図  （ｂ）本発明の実施の形態７におけるベクトル乗算部のブロック図
【図１９】（ａ）従来の信号処理装置のブロック図  （ｂ）従来の信号処理装置のブロック図  （ｃ）従来の信号処理装置のブロック図
【図２０】従来の信号処理装置のブロック図
【図２１】従来の信号処理装置のブロック図
【図２２】従来の信号処理装置のブロック図
【図２３】従来の信号処理装置のブロック図
【図２４】（ａ）従来の信号処理装置のブロック図  （ｂ）従来の信号処理装置のブロック図
【符号の説明】
【０１８９】
１０、１１、１５、２０  ＦＦＴ部
１２、１８、１９、２１、２２  複素乗算部
２３、２４  加算器
３０、４０、９０  ベクトル乗算部
４１  第１係数ベクトル記憶部
４２  第２係数ベクトル記憶部
４３  スプリッタ
４４  コア部
４５  反転部
５０  第１係数ベクトル供給部
６０  第２係数ベクトル供給部
７０  第３係数ベクトル供給部
８０  第４係数ベクトル供給部
１００、１０１  周波数領域たすきがけ演算部
１５０、１５１  たすきがけ演算コア部
Ｗ  時間窓
ｘ  入力信号系列
ｙ  出力信号系列
Ｘ  データベクトル
Ｈ  係数ベクトル
Ｙ  ベクトル乗算部の演算結果
【図１】
0004638695.tif 000002
【図２】
0004638695.tif 000003
【図３】
0004638695.tif 000004
【図４】
0004638695.tif 000005
【図５】
0004638695.tif 000006
【図６】
0004638695.tif 000007
【図７】
0004638695.tif 000008
【図８】
0004638695.tif 000009
【図９】
0004638695.tif 000010
【図１０】
0004638695.tif 000011
【図１１】
0004638695.tif 000012
【図１２】
0004638695.tif 000013
【図１３】
0004638695.tif 000014
【図１４】
0004638695.tif 000015
【図１５】
0004638695.tif 000016
【図１６】
0004638695.tif 000017
【図１７】
0004638695.tif 000018
【図１８】
0004638695.tif 000019
【図１９】
0004638695.tif 000020
【図２０】
0004638695.tif 000021
【図２１】
0004638695.tif 000022
【図２２】
0004638695.tif 000023
【図２３】
0004638695.tif 000024
【図２４】
0004638695.tif 000025