(57)【特許請求の範囲】
【請求項１】
ウェーブレット変換を行うウェーブレット変換装置において、
演算結果を書き込む計算データバッファと、
この計算データバッファの所定点をポイントするポインタ（１）および当該ポインタ（１）の半分の位置をポイントするポインタ（２）と、
上記ポインタ（１）が指す位置から読み込んだデータとスケーリング数列αとの積を求め、求めた積を上記ポインタ（２）の指す位置から書き込むプロセッサＰＡと、
上記ポインタ（１）が指す位置から読み込んだデータとウェーブレット数列βとの積を求め、求めた積を当該ポインタ（１）の指す位置から書き込むプロセッサＰＢと、
上記プロセッサＰＡにポインタ（１）とポインタ（２）、およびプロセッサＰＢにポインタ（１）を通知して上記計算データレジスタから読み込ませて求めた積を書き込ませた後、ポインタ（１）を次の位置に更新できるまでポインタ（１）およびポインタ（２）をその半分の位置にそれぞれ更新して繰り返えさせるコントローラとを備えたことを特徴とするウェーブレット変換装置。
【請求項２】
ウェーブレット変換を行うウェーブレット変換装置において、
入力データを格納する入力データバッファと、
演算結果を書き込む出力データバッファと、
上記入力データバッファから読み出したデータｘと行列データＷnとの演算を行なうプロセッサＰ２と、
上記入力データバッファから読み出したデータｘと行列データＷn-1、Ｗn-2、・・・Ｗ1、Ｖ1との演算を順次行なうプロセッサＰ１と、
上記プロセッサＰ１が演算を行なう行列データＷn-1、Ｗn-2、・・・Ｗ1、Ｖ1を順次指示するコントローラとを備えたことを特徴とするウェーブレット変換装置。
【請求項３】
上記行列データＷn、Ｗn-1、Ｗn-2、・・・Ｗ1、Ｖ1の値を予め求めておき、上記演算時にその値を用いて演算することを特徴とする請求項２記載のウェーブレット変換装置。
【請求項４】
コントローラが第１のプロセッサおよび第２のプロセッサを制御して並列にウェーブレット変換を行うためのプログラムを記録したコンピュータ読取可能な記録媒体であって、
前記コントローラで、演算結果を書き込む計算データバッファの所定点をポインタ（１）によってポイントさせる手段および当該ポインタ（１）の半分の位置をポインタ（２）によってポイントさせる手段と、
前記第１のプロセッサで、前記ポインタ（１）が指す位置から読み込んだデータとスケーリング数列αとの積を求め、求めた積を前記ポインタ（２）の示す位置から書き込む手段ＰＡと、
前記第２のプロセッサで、前記ポインタ（１）が指す位置から読み込んだデータとウェーブレット数列βとの積を求め、求めた積を当該ポインタ（１）の示す位置から書き込む手段ＰＢと、
前記コントローラで、前記手段ＰＡにポインタ（１）とポインタ（２）、および上記手段ＰＢにポインタ（１）を通知して前記計算データレジスタから読み込ませて求めた積を書き込ませた後、ポインタ（１）を次の位置に更新できるまでポインタ（１）およびポインタ（２）をその半分の位置にそれぞれ更新して繰り返えさせる手段と
して機能させるプログラムを記録したコンピュータ読取可能な記録媒体。
【請求項５】
コントローラが第１のプロセッサおよび第２のプロセッサを制御して並列にウェーブレット変換を行うためのプログラムを記録したコンピュータ読取可能な記録媒体であって、
前記第１のプロセッサおよび前記第２のプロセッサで、演算結果を出力データバッファに書き込む手段と、
前記第２のプロセッサで、入力データを格納する入力データバッファから読み出したデータｘと行列データＷｎとの演算を行なう手段Ｐ２と、
前記第１のプロセッサで、前記入力データバッファから読み出したデータｘと行列データＷｎ−１、Ｗｎ−２、・・・Ｗ１、Ｖ１との演算を順次行う手段Ｐ１と、
前記コントローラで、前記手段Ｐ１が演算を行なう行列データＷｎ−１、Ｗｎ−２、・・・Ｗ１、Ｖ１を順次指示する手段と
して機能させるプログラムを記録したコンピュータ読取可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ウェーブレット変換を行うウェーブレット変換装置および記録媒体に関するものである。
【０００２】
【従来の技術】
従来、入力データ列ｘが例えば不連続に変化している時刻を検出しようとする場合、ウェーブレット変換により検出することが行われている。
【０００３】
ウェーブレット変換は、図１１に示すように、２n 個（ｎは自然数）の入力データ（離散）ベクトルｘに対し、行列Ａn、Ｂnとの積を計算する。Ａnはスケーリング数列によって決まる行列であり、Ｂnはウェーブレット数列によって決まる行列である（いずれも２n-1行２n列の定数行列である）。計算結果のＡnｘ、Ｂnｘの２個のベクトルのうち、Ａnｘに対して再度Ａn-1Ａnｘ、Ｂn-1Ａnｘを計算する（Ａn-1、Ｂn-1は２n-2行２n-1列の行列である）。
【０００４】
以下同様にしてｎ＝１まで計算すると、Ｂnｘ、Ｂn-1Ａn、Ｂn-2Ａn-1Ａnｘ、・・・、Ｂ1Ａ2・・Ａnｘ、Ａ1Ａ2・・Ａnｘがｘのウェーブレット変換結果になる。
【０００５】
【発明が解決しようとする課題】
上述した図１１のウェーブレット変換を逐次行っていたのでは、多くの時間が必要となってしまう問題があった。
【０００６】
本発明は、これらの問題を解決するため、同一のベクトルに対して行列Ａi、Ｂi（ｉ＝ｎ、ｎ−１、・・・１）との積を２個のプロセッサで同時に計算したり、入力データｘと行列データＷn、および入力データＸと行列データＷn-1、Ｗn-2、・・・Ｗ1、Ｖ1を２個のプロセッサで同時に計算し、全体の計算時間を半分にすることを目的としている。
【０００７】
【課題を解決するための手段】
図３および図８を参照して課題を解決するための手段を説明する。
図３において、計算データバッファ１は、計算結果を書き込むものである。
【０００８】
コントローラ２は、全体を統括制御するものである。
プロセッサＰＡ、ＰＢは、各種演算を行うものである。
図８において、入力データバッファ１１は、入力データを格納するものである。
【０００９】
出力データバッファ１２は、演算結果を書き込むものである。
プロセッサ１、２は、各種演算を行なうものである。
次に、動作を説明する。
【００１０】
図３に示すように、コントローラ２からの指示に対応して、プロセッサＰＡがポインタ（１）が指す位置から読み込んだデータとスケーリング数列αとの積を求め、求めた積をポインタ（２）の指す位置から書き込み、プロセッサＰＢがポインタ（１）が指すリード開始点から読み込んだデータとウェーブレット数列βとの積を求め、求めた積を当該ポインタ（１）の指す位置から書き込み、コントローラ２がポインタ（１）を次の位置に更新できるまでポインタ（１）およびポインタ（２）を半分の位置にそれぞれ更新し、プロセッサＰＡ、ＰＢにこれらポインタ（１）、（２）を通知して積を求めることを繰り返し、ウェーブレット変換の計算を行うようにしている。
【００１１】
図８に示すように、コントローラ１３からの指示に対応して、プロセッサ２が入力データバッファ１１から読み出したデータｘと行列データＷnとの演算を行い、その結果を出力データバッファ１２に書き込むと共に、並列にプロセッサ１が入力データバッファ１１から読み出したデータｘと行列データＷn-1、Ｗn-2、・・・Ｗ1、Ｖ1との演算を順次行ない、その結果を出力データバッファ１２に順次書き込み、ウェーブレット変換を並列に行なうようにしている。
【００１２】
この際、行列データＷn、Ｗn-1、Ｗn-2、・・・Ｗ1、Ｖ1の値を予め求めておき、演算時にその値を用いて演算するようにしている。
従って、ウェーブレット変換時に、同一のベクトルに対して行列Ａi、Ｂi（ｉ＝ｎ、ｎ−１、・・・１）との積を２個のプロセッサで同時に計算したり、入力データｘと行列データＷn、および入力データＸと行列データＷn-1、Ｗn-2、・・・Ｗ1、Ｖ1を２個のプロセッサで同時に計算したりすることにより、全体の計算時間を半分にすることを可能にしている。
【００１３】
【発明の実施の形態】
次に、図１から図６を用いて本発明の実施の形態および動作を順次詳細に説明する。ここで、図示外の記録媒体あるいは外部記憶装置であるハードディスク装置などから読み出したプログラム、またはセンタから回線を介して転送を受けたプログラムを主記憶にローディングして起動し、以下に説明する各種処理を行うようにしている。
【００１４】
図１は、本発明の概念説明図を示す。
図１において、左端に記載したｎ、ｎ−１、・・・１は、次数であって、ｎ、ｎ−１、・・・１の順番に計算して求める順番である。
【００１５】
・ｎ次の場合には、入力データベクトルｘを入力とし、プロセッサＰＡが当該ｘとスケーリング数列αとの積を求めてＡnｘの値を計算し、図示のように計算データバッファ１の右半分に格納する。並列にプロセッサＰＢが当該ｘとウェーブレット数列βとの積を求めてＢnｘの値を計算し、図示のように計算データバッファ１の左半分に格納する。
【００１６】
・ｎ−１次の場合には、ｎ次で求めたＡnｘを入力とし、プロセッサＰＡが当該Ａnｘとスケーリング数列αとの積を求めてＡn-1Ａnｘの値を計算し、図示のように計算データバッファ１の左から４／４の部分に格納する。並列にプロセッサＰＢが当該Ａnｘとウェーブレット数列βとの積を求めてＢn-1Ａnｘの値を計算し、図示のように計算データバッファ１の左から３／４の部分に格納する。
【００１７】
・以下同様に１次となるまで繰り返す。
以上の計算をプロセセッサＰＡとプロセッサＰＢとが並列に繰り返すことにより、従来の半分の時間でウェーブレット変換した結果を求めることが可能となる。
【００１８】
図２は、本発明のスケーリング数列α、ウェーブレット数列βと行列Ａi、Ｂiの関係説明図を示す。
図２の（ａ）は、α、βは偶数項の数列（通常は２〜２０項）でα、βの項数は同一である旨を表す。
【００１９】
α＝｛α1、α2、・・・αk-1、αK｝        （ｋは事前に選ぶ）
β＝｛β1、β2、・・・βk-1、βK｝        （ｋは事前に選ぶ）
図２の（ｂ）は、行列Ａiを表す。ここでは、図示のように偶数項のみで表現し、２i列×２i-1行の行列Ａiとなる。
【００２０】
図２の（ｃ）は、行列Ｂiも図２の（ｂ）の行列Ａiと同様である旨を示す。
図２の（ｄ）は、列の数＜ｋの場合（ｋ＝８）の行列Ａiを示す。このｋ＝８の場合には、Ａ2、Ａ1は図示のような行列となる。
【００２１】
図２の（ｅ）は、Ｂ2、Ｂ1も図２の（ｄ）のＡ2、Ａ1と同様である旨を表す。
図３は、本発明のシステム構成図を示す。
図３において、計算データバッファ１は、計算結果を書き込むものであって、ポインタ（１）と当該ポインタ（１）の半分の位置をポイントするポインタ（２）とを設けたものである。図示の例は、２m個としてｍ＝３の場合（即ち８個の場合）を模式的に示したものである。この場合には、当初、ポインタ（１）は１を指し、ポインタ（２）は半分の４を指す。２回目の計算時には、半分となり、ポインタ（１）は４を指し、ポインタ（２）は６を指す。３回目の計算時には、半分となり、ポインタ（１）は６を指し、ポインタ（２）は８を指し、終了する。
【００２２】
プロセッサＰＡは、数列データα（図２参照）とポインタ（１）の点から読み込んだデータとの積を求め、ポインタ（２）の点から書き込むものである（詳細は図４を用いて後述する）。
【００２３】
プロセッサＰＢは、数列データβ（図２参照）とポインタ（１）の点から読み込んだデータとの積を求め、ポインタ（１）の点から書き込むものである（詳細は図４を用いて後述する）。
【００２４】
コントローラ２は、ポインタの位置をプロセッサＰＡ、ＰＢに通知して計算を行わせるものである（詳細は図４を用いて後述する）。
次に、図４を用いて図３の構成の動作を詳細に説明する。
【００２５】
図４は、本発明の動作説明図を示す。ここで、コントローラ、プロセッサＰＡ、プロセッサＰＢは、図３のそれぞれに対応する。
図４において、Ｓ１は、ポインタ（１）＝１、ポインタ（２）＝４と初期設定する。これは、データ長＝８（図３で説明した２m＝２3＝８）の場合に、ポインタ（１）＝１（図３の計算データバッファ１の左端の位置）およびポインタ（２）＝４（図３の計算データバッファ１の半分の位置）に初期設定する。
【００２６】
Ｓ２は、プロセッサＰＡにポインタ（１）、（２）を送る。プロセッサＰＢにポインタ（１）のみを送る。
Ｓ１１は、Ｓ２でポインタ（１）およびポインタ（２）を受け取ったプロセッサＰＡがポインタ（１）をｒｅａｄ開始点、ポインタ（２）をｗｒｉｔｅ開始点とする。
【００２７】
Ｓ１２は、開始点（ポインタ（１））から終端まで計算データを読み込む。例えば
・第１回目は図１の入力データベクトルｘを読み込む。
【００２８】
・第２回目は図１のＡnｘを読み込む。
・第３回目は図１のＡn-1Ａnｘを読み込む。
・以下同様である。
【００２９】
Ｓ１３は、数列データ（スケーリング数列α）を読み込み、計算データとで行列計算を行う。例えば
・第１回目は図１のスケーリング数列αを読み込み、計算データｘとで行列演算を行い、結果Ａnｘを求める。
【００３０】
・第２回目は図１のスケーリング数列αを読み込み、計算データＡnｘとで行列演算を行い、結果Ａn-1Ａnｘを求める。
・第３回目は図１のスケーリング数列αを読み込み、計算データＡn-1Ａnｘとで行列演算を行い、結果Ａn-2Ａn-1Ａnｘを求める。
【００３１】
・以下同様である。
Ｓ１４は、ｗｒｉｔｅ開始点から結果を書き込み、コントローラに終了通知を送る。
【００３２】
以上のＳ１１ないしＳ１４を繰り返すことにより、プロセッサＰＡが既述した図１のＡnｘ、Ａn-1Ａnｘ、Ａn-2Ａn-1Ａnｘ・・・・Ａ1・・・Ａn-2Ａn-1Ａnｘを求め、ポインタ（２）で指す位置の計算データバッファ１に格納することが可能となる。
【００３３】
Ｓ２１は、Ｓ２でポインタ（１）を受け取ったプロセッサＰＢがポインタ（１）をｒｅａｄ開始点およびｗｒｉｔｅ開始点とする。
Ｓ２２は、開始点（ポインタ（１））から終端まで計算データを読み込む。
例えば
・第１回目は図１の入力データベクトルｘを読み込む。
【００３４】
・第２回目は図１のＡnｘを読み込む。
・第３回目は図１のＡn-1Ａnｘを読み込む。
・以下同様である。
【００３５】
Ｓ２３は、数列データ（スケーリング数列β）を読み込み、計算データとで行列計算を行う。例えば
・第１回目は図１のスケーリング数列βを読み込み、計算データｘとで行列演算を行い、結果Ｂnｘを求める。
【００３６】
・第２回目は図１のスケーリング数列βを読み込み、計算データＡnｘとで行列演算を行い、結果Ｂn-1Ａnｘを求める。
・第３回目は図１のスケーリング数列βを読み込み、計算データＡn-1Ａnｘとで行列演算を行い、結果Ｂn-2Ａn-1Ａnｘを求める。
【００３７】
・以下同様である。
Ｓ２４は、ｗｒｉｔｅ開始点から結果を書き込み、コントローラに終了通知を送る。
【００３８】
以上のＳ２１ないしＳ２４を繰り返すことにより、プロセッサＰＢが既述した図１のＢnｘ、Ｂn-1Ａnｘ、Ｂn-2Ａn-1Ａnｘ・・・・Ｂ1・・・Ａn-2Ａn-1Ａnｘを求め、ポインタ（１）で指す位置の計算データバッファ１に格納することが可能となる。
【００３９】
Ｓ３は、コントローラがポインタ（１）を次の半分の位置に移動できるか判別する。ＹＥＳの場合には、Ｓ４に進む。ＮＯの場合には、Ｓ５に進む。
Ｓ４は、ポインタ（１）を半分の位置に移動し、ポインタ（１）の名前をポインタ（２）に、ポインタ（２）の名前をポインタ（１）に変更する。これにより、ポインタ（１）およびポインタ（２）がそれぞれ半分の位置に移動し、次の計算を行わせる準備が完了したこととなる。
【００４０】
Ｓ５は、プロセッサＰＡ、ＰＢのデータ書込が終了するまでｗａｉｔする。そして、既述したＳ１４、Ｓ２４の書き込みを終了した旨の通知をコントローラが受けたときにＹＥＳとなり、Ｓ２以降を繰り返す。
【００４１】
以上によって、コントローラが図３のポインタ（１）、（３）の位置を順次半分にすることを繰り返し、その位置をプロセッサＰＡ、ＰＢに通知してプロセッサＰＡ、ＰＢが既述した図１に示す行列計算を行い、その結果を計算データバッファ１に格納することを繰り返し、ウェーブレット変換を当該プロセッサＰＡ、ＰＢが並列に行い、従来の半分の時間で実行することが可能となった。
【００４２】
図５は、本発明のＰＡ、ＰＢの行列計算説明図を示す。これは、既述した図４のプロセッサＰＡ、ＰＢの行列計算の詳細を示したものである。
図５の（ａ）は、プロセッサＰＡの行列計算の詳細を示す。ここで、数列データ（α1、α2・・・αn｝（ｎは偶数）
・（ａ−１）：
・例えばｎ＝４の場合、図示の以下と等価な計算を行なう。
【００４３】
・αi以外は０（ｉが偶数であるので奇数が全て０である旨を表す）
・右に２要素ずつすらす
・右端からはみ出たら左端へ（左端に既に値があればそれに加算する）
・（ａ−２）：
・ポインタ（１）のｒｅａｄ開始点から読み込んだデータのベクトルを表す。
【００４４】
・（ａ−３）：
・ポインタ（２）のｗｒｉｔｅ開始点から書き込むデータのベクトルを表す。
【００４５】
以上の（ａ−１）、（ａ−２）について、図３のプロセッサＰＡが行列乗算演算を行い、その結果を（ａ−３）の書き込むことにより、既述した図１のプロセッサＰＡの行列演算を実行することが可能となる。
【００４６】
図５の（ｂ）は、プロセッサＰＢも同様である旨を表す（プロセッサＰＡと同様である旨を表す）。ここで、数列データ（β1、β2・・・βn｝（ｎは偶数）図５の（ｃ）は、数列データの例を示す。これは、図５の（ａ）、（ｂ）の数列データの例であって、上段の上はｎ＝２の場合のα1、α2の値を示し、上段の下はｎ＝２の場合のβ1、β2の値を示す。下段の上はｎ＝４の場合のα1、α2、α3、α4の値を示し、下段の下はｎ＝４の場合のβ1、β2、β3、β4の値を示す。
【００４７】
図６は、本発明のポインタの移動とリネーム説明図を示す。これは、既述した図３のシステム構成図のもとで、図４で説明した手順に従いポインタ（１）、（２）を移動とリネームするときの説明図である。
【００４８】
図６の（ａ）は、初期状態を示す。ここでは、ポインタ（１）は左端を指し、ポインタ（２）はポインタ（１）の半分の位置を指す。
図６の（ｂ）は、（１）の移動を行なう。これは、図示のように、図６の（ａ）のポインタ（１）を、ポインタ（２）の半分の位置に移動する。
【００４９】
図６の（ｃ）は、リネームする。これは、図６の（ｂ）で移動した後、ポインタ（１）とポインタ（２）との名前を入れ替えてリネームし、図示のようにする。これにより、図６の（ａ）の初期状態からポインタ（１）、ポインタ（２）はそれぞれ半分の位置に移動したこととなる。
【００５０】
図６の（ｄ）は、（１）の移動を行なう。これは、図示のように、図６の（ｃ）のポインタ（１）を、ポインタ（２）の半分の位置に移動する。
図６の（ｅ）は、リネームする。これは、図６の（ｄ）で移動した後、ポインタ（１）とポインタ（２）との名前を入れ替えてリネームし、図示のようにする。これにより、図６の（ｃ）の状態からポインタ（１）、ポインタ（２）はそれぞれ半分の位置に移動したこととなる。
【００５１】
以上によって、既述した図３の計算データバッファ１のポインタ（１）、ポインタ（２）の移動を行なうことが可能となる。
次に、図７から図１０を用いて本発明の他の実施例の構成および動作を詳細に説明する。
【００５２】
図７は、本発明の他の概念説明図を示す。これは、入力ベクトルデータｘと、行列データとの積を演算し、ウェーブレット変換結果を得る概念図を示す。
図７において、入力データｘは、ウェーブレット変換しようとする入力データであって、例えば図１０の一次元の時系列のサンプリングした振幅データ列である。
【００５３】
プロセッサＰ2は、入力データｘと、数列β（ウェーブレット数列β）から求めた行列データＢnとの積を演算するものである。
プロセッサＰ1-1ないしＰ1-nは、入力データｘと、行列データＢn-1Ａn、Ｂn-2Ａn-1Ａn、・・・Ｂ1Ａ2・・・Ａn、Ａ1Ａ2・・・Ａnとの積をそれぞれ演算するものである。ここでは、プロセッサＰ1-1ないしＰ1-nは、１つの実プロセッサＰ1によって順次演算するようにしている（図８を用いて後述する）。
【００５４】
変換結果は、ウェーブレット変換した変換結果を示す。
以上のように、ウェーブレット数列βおよびスケーリング数列αをもとに演算した行列データＢn、Ｂn-1Ａn、Ｂn-2Ａn-1Ａn、・・・Ｂ1Ａ2・・・Ａn、Ａ1Ａ2・・・Ａnと、入力データｘとをプロセッサＰ1、プロセッサＰ2の２台によって同時並列に演算することにより、従来の逐次演算する場合に比し、半分の時間で演算を実行することが可能となる。以下順次詳細に説明する。
【００５５】
図８は、本発明の他のシステム構成図を示す。
図８の（ａ）は、構成図を示す。
図８の（ａ）において、入力データバッファ１１は、入力データを格納するものである。
【００５６】
出力データバッファ１２は、演算結果を書き込むものであって、ポインタによって指された位置にプロセッサ１が演算結果を順次書き込んだり、プロセッサ２が左端から演算結果を書き込んだりなどするものである。
【００５７】
プロセッサ１は、入力データｘと、行列データＷn-1、Ｗn-2、・・・Ｗ1、Ｖ1との積を順次演算し、出力データバッファ１２のポインタが指す位置に順次書き込むものである。
【００５８】
プロセッサ２は、入力データｘと、行列データＷnとの積を演算し、出力データバッファ１２の左端から書き込むものである。
コントローラ１３は、全体を統括制御するものであって、ここでは、プロセッサ１が演算結果を書き込む位置を指すポインタの位置を順次移動させたりなどするものである。
【００５９】
行列データ１５（Ｗn）は、ウェーブレット数列から求めた行列データＢnである。
行列データ１６（Ｗn-1、Ｗn-2、・・・Ｗ1、Ｖ1）は、スケーリング数列αおよびウェーブレット数列βから求めた行列データＢn-1Ａn、Ｂn-2Ａn-1Ａn、・・・Ｂ1Ａ2Ａ3・・Ａn、Ａ1Ａ2Ａ3・・Ａnである（図８の（ｂ）参照）。
【００６０】
図８の（ｂ）は、行列データを示す。これは、図８の（ａ）の行列データ１４および行列データ１５として図示の下記のようになる。
行列データＷn＝Ｂn
行列データＷn-1＝Ｂn-1Ａn
行列データＷn-2＝Ｂn-2Ａn-1Ａn
・・・
行列データＷ2  ＝Ｂ2Ａ3・・・Ａn
行列データＷ1  ＝Ｂ1Ａ2・・・Ａn
行列データＶ1  ＝Ａ1Ａ2・・・Ａn
図８の（ｃ）は、並列計算の説明図を示す。図示のように
１＋１＋２＋・・・＋２n-2＝２n-1
であるから、
（Ｖ1ｘ、Ｗ2ｘ・・・Ｗn-1ｘの合計計算時間）＝（Ｗnｘの計算時間）
となり、プロセッサ２が上述したＷnｘの計算を行い、同時並列にプロセッサ１がＢn-1Ａnｘ、Ｂn-2Ａn-1Ａnｘ、・・・Ｂ1Ａ2Ａ3・・Ａnｘ、Ａ1Ａ2Ａ3・・Ａnｘの計算を順次行なうと、ほぼ同時に計算が終了することとなり、全体を計算する場合に比して半分の時間でウェーブレット変換を行なうことが可能となる。
【００６１】
図９は、本発明の他の動作説明図を示す。ここで、コントローラ、プロセッサ１、プロセッサ２は、図８の（ａ）のそれぞれの対応するものである。
図９において、Ｓ３１は、コントローラがポインタ位置＝４（ｎ＝３の場合）を決定する。これは、ｎ＝３の場合、２3＝８となり、その半分の位置の４と決定する。
【００６２】
Ｓ３２は、プロセッサ１にポインタを送る。
Ｓ３３は、ポインタを現在位置／２へ移動できるか判別する。ＹＥＳの場合には、Ｓ３４に進む。ＮＯの場合には、Ｓ３５に進む。
【００６３】
Ｓ３４は、ポインタを移動する。
Ｓ３５は、プロセッサ１のデータ書き込みが終了するまでｗａｉｔする。書き込みが終了した場合には、ＹＥＳとなりＳ３２に戻り繰り返す。ＮＯの場合（プロセッサ１によるデータの書き込みが全て終了した場合）には、Ｓ３６に進む。
【００６４】
Ｓ３６は、プロセッサ２のデータ書き込みが終了するまでｗａｉｔする。プロセッサ２がデータの書き込みを終了した時点で一連の処理を終了する（ＥＮＤ）。
【００６５】
Ｓ４１は、プロセッサ１がポインタをｗｒｉｔｅ開始点とする。
Ｓ４２は、入力データｘと、行列データＷi（ｋ）との積を計算する（ループ毎に１回）。
【００６６】
Ｓ４３は、ｗｒｉｔｅ開始点から計算結果を出力データバッファ１２に書き込み、コントローラに終了通知を送る。
以上のＳ４１ないしＳ４３によって、プロセッサ１が入力データｘと、行列データＢn-1Ａn、Ｂn-2Ａn-1Ａn、・・・Ｂ1Ａ2・・・Ａn、Ａ1Ａ2・・・Ａnとの演算を順次行ってポインタの指す出力データバッファ１２の位置に順次書き込むことが可能となる。
【００６７】
Ｓ５１は、プロセッサ２が入力データｘと、行列データＷnとの積を計算する。
Ｓ５２は、出力データバッファの左端から結果を書き込み、コントローラに終了通知を送る。
【００６８】
以上のＳ５１、Ｓ５２によって、プロセッサ２が入力データｘと、行列データＢnとの積を求め、出力データバッファ１２の左端から書き込むことが可能となる。
【００６９】
図１０は、本発明のウェーブレット変換例を示す。
図１０の（ａ）は、一次元の入力データの例を示す。この入力データは、時間とともに変化する信号について、当該信号の振幅をサンプリングしたものである。ここでは、図示ａ、ｂ、ｃ、ｄ、ｅ、ｆの各点で不連続に変化している。
【００７０】
図１０の（ｂ）は、図１０の（ａ）の入力データについて、既述した２個のプロセッサを用いて並列演算したウェーブレット変換結果を示す。本例では、図示のようにウェーブレット変換により、入力データの微係数（高次微係数を含む）が不連続に変化している時刻（図１０の（ａ）のａ〜ｆの時刻）を検出できる。解像度が高い程、精度が良くなる。
【００７１】
【発明の効果】
以上説明したように、本発明によれば、ウェーブレット変換時に、同一のベクトルに対して行列Ａi、Ｂi（ｉ＝ｎ、ｎ−１、・・・１）との積を２個のプロセッサで同時に計算したり、入力データｘと行列データＷn、および入力データＸと行列データＷn-1、Ｗn-2、・・・Ｗ1、Ｖ1を２個のプロセッサで同時に計算したりする構成を採用しているため、全体の計算時間を半分にすることができる。
【図面の簡単な説明】
【図１】本発明の概念説明図である。
【図２】本発明のスケーリング数列α、ウェーブレット数列βと行列Ａi、Ｂiの関係説明図である。
【図３】本発明のシステム構成図である。
【図４】本発明の動作説明図である。
【図５】本発明のＰＡ、ＰＢの行列計算説明図である。
【図６】本発明のポインタの移動とリネーム説明図である。
【図７】本発明の他の概念説明図である。
【図８】本発明の他のシステム構成図である。
【図９】本発明の他の動作説明図である。
【図１０】本発明のウェーブレット変換例である。
【図１１】ウェーブレット変換説明図である。
【符号の説明】
１：計算データバッファ
２、１３：コントローラ
１１：入力データバッファ
１２：出力データバッファ
１４、１５：行列データ
ＰＡ、ＰＢ、Ｐ1、Ｐ2：プロセッサ
α：スケーリング数列
β：ウェーブレット数列
Ａi、Ｂi：行列
【図１】
0003844572.tif 000002
【図２】
0003844572.tif 000003
【図３】
0003844572.tif 000004
【図４】
0003844572.tif 000005
【図５】
0003844572.tif 000006
【図６】
0003844572.tif 000007
【図７】
0003844572.tif 000008
【図８】
0003844572.tif 000009
【図９】
0003844572.tif 000010
【図１０】
0003844572.tif 000011
【図１１】
0003844572.tif 000012