(57)【特許請求の範囲】
【請求項１】
入力信号の複数のサンプル値（Ｓ１〜Ｓｎ）を順次受け取って、離散フーリエ変換により入力信号を近似する、関数の係数（Ａ０、Ａ１、Ａ２、．．．およびＢ０、Ｂ１、Ｂ２、．．．）を決定する装置であって、
前記入力信号の複数のサンプル値を受取る受信部と、
サンプル番号および係数の数に基づいて直交関数の値を生成する第２デバイスと、
前記受信部および前記第２デバイスに接続され、前記受信部からの前記サンプル値と、前記第２デバイスから受取った前記直交関数の値とに基づいて、前記関数の各係数に加算されるべきそれぞれの項を生成する第１デバイスと
を有する係数生成手段を備え、
さらに、前記係数生成手段が前記関数の係数を記憶するためのメモリ素子を備え、
前記係数生成手段が、前記関数の各係数に加算されるべきそれぞれの項を、前記メモリ素子から読み出した係数に加算することによって前記関数の各係数を更新して前記メモリ素子の読み出した部分に書き込み、前記サンプル値を破棄する装置。
【請求項２】
前記サンプルは、外部クロックに基づいて前記受信部に提供され、前記第１デバイスおよび前記第２デバイスは前記係数を更新するために外部クロックを使用する請求項１に記載の装置。
【請求項３】
前記係数生成手段の第１デバイスが、各係数を複数のサンプルの最後（Ｓｎ）を用いて更新して係数を出力する請求項１に記載の装置。
【請求項４】
前記係数生成手段の第１デバイスが、各サンプル番号および係数の数に関連付けられた関数を記憶するためのメモリ素子を含み、前記第１デバイスが前記メモリにアクセスし、サンプルを、各サンプル番号および係数の数に関連付けられる関数によって乗算し、それにより項を定義し、それ以降、項を係数の過去の値に追加することによって係数を更新する請求項１に記載の装置。
【請求項５】
前記第１デバイスの前記メモリ素子が、複数のセルを有するアレイを含み、アレイの各セルが、それぞれのサンプル番号および係数の数に関連付けられる関数を表す値を記憶し、関連付けられたサンプル番号および係数の数によって定義された一意のアドレスを有し、各サンプル番号および係数の数に、前記係数生成手段の前記第１デバイスが、サンプル番号および係数の数に関連付けられるアドレスを使用して前記メモリのセルにアクセスし、記憶される関数でサンプルを乗算し、それにより前記係数の項を定義し、それ以降、項を係数の過去の値に加算することにより係数を更新する、請求項１に記載の装置。
【請求項６】
信号の各サンプルが、有限数の考えられる値の内の１つである値を有し、前記係数生成手段の前記第１デバイスが、各セルがそれぞれのサンプル番号および係数の数と関連付けられるセルのアレイを有する第１メモリ素子であり、各セルが有限数のサンプルの考えられる値の内の１つとそれぞれのサンプル番号および係数の数に関連付けられた関数の組み合わせに一致する事前に計算された値を含み、各セルが、前記セルを認識する単一のメモリアドレスを有し、前記単一のメモリアドレスが前記メモリ内においてセルをアドレスするトークンを示す請求項１に記載の装置。
【請求項７】
前記係数生成手段の前記第２のデバイスが、それぞれが前記第１メモリ素子のセルを表すトークンを記憶するためのセルのアレイを有する第２メモリ素子を備え、それぞれのサンプル番号および係数の数が前記第１メモリ素子のセルに格納され、サンプル番号および係数の数ごとに、前記第２メモリ素子がサンプル番号および係数の数に関連付けられたトークンを検索し、トークンを前記第１メモリ素子に供給し、それ以降、前記第１メモリ素子がトークンに対応する前記第１メモリ素子のセルに記憶される事前に計算された値を計算し、前記係数生成手段は、さらに、前記第１メモリ素子から係数の過去の値に事前に計算された値を追加することによって係数を更新する加算手段を有する請求項１に記載の装置。
【請求項８】
前記第２デバイスは、前記第１メモリ素子のセルをアドレス指定するための論理積ゲートであり、サンプルごとに、前記ゲートがサンプル番号および係数の数に関連付けられた前記第１メモリ素子においてセルを同定するトークンを前記第１メモリ素子に出力し、前記第１メモリ素子が、トークンおよびサンプルの値から構成されるアドレスを有する前記第１メモリ素子のセルに記憶される事前に計算された値を検索し、前記係数生成手段が、前記第１メモリ素子から係数の過去の値に事前に計算された値を加算することによって係数を更新する加算器をさらに有する請求項１に記載の装置。
【請求項９】
さらに、前記第１メモリ素子のセルをアドレス指定するために前記係数生成手段の前記第２のデバイスと電気的に通信するカウンタを備え、サンプルごとに、前記カウンタが係数とサンプルに関連付けられるトークンを前記第１メモリ素子に出力し、前記第１メモリ素子が、トークンおよびサンプルの値から構成されるアドレスを有する前記第１メモリ素子のセルに記憶される事前に計算された値を検索し、前記係数生成手段が、前記第１メモリ素子から係数の過去の値に事前に計算された値を加算することにより係数を更新する加算器をさらに有する請求項１に記載の装置。
【請求項１０】
前記係数生成手段が、さらにヌルデバイスを含み、それぞれのサンプル番号および係数の数に関連付けられた関数の値がゼロであり、前記係数生成手段は前記ヌルデバイスから、係数の過去の値にゼロを加算することによって係数を更新する請求項１に記載の装置。
【請求項１１】
前記第１メモリ素子が、それぞれのサンプルとそれぞれの関数の規模の組み合わせに一致する事前に計算された関数だけを含み、前記トークンがさらに関数の正負符号を示し、それにより前記第１メモリ素子によって記憶される事前に計算された値の数を削減する請求項１に記載の装置。
【請求項１２】
前記係数生成手段は、さらに、前記第１メモリ素子と電気的に通信する加算器を含み、前記トークンが、関数の正負符号が負であることを示すと、前記第１メモリ素子が関数の規模を出力し、前記加算器が出力を受け取り、関数の負を生成する、請求項１に記載の装置。
【請求項１３】
各トークンがそれぞれサンプル番号および係数の数を記憶する前記第１メモリ素子においてセルを表し、前記係数生成手段が、さらに、前記第１メモリ素子のゲートに接続したセレクタを含み、正負符号の逆関数を表す係数を生成するために、前記セレクタが、前記ゲートによって生成されるトークンが、それぞれサンプル番号および係数の数に関連付けられた逆関数を表す事前に計算された値を含む第１メモリ素子内でセルをアドレス指定するように、前記ゲートの出力を切り替え、前記係数生成手段が、前記第１メモリ素子から係数の過去の値に事前に計算された値を加算することによって係数を更新する請求項１に記載の装置。
【請求項１４】
前記係数生成手段が、それぞれ別個のチャネルに存在する複数の信号からサンプルを受取り、前記係数生成手段が、サンプルが受け取られるときに信号と関連付けられる各信号に基づき各サンプルと関連付けられた関数の係数を更新し、前記セレクタがチャネルの少なくとも１つから受け取られるサンプルに関して前記ゲートの出力を切り替え、その結果、前記係数生成手段が少なくとも１つのチャネルの信号の逆関数を表す係数を生成する請求項１に記載の装置。
【請求項１５】
前記係数生成手段が、さらに、第３メモリ素子を備え、前記係数生成手段が、さらに、それらが受け取られるとサンプルのそれぞれを前記メモリ素子に記憶する請求項１に記載の装置。
【請求項１６】
前記係数生成手段が、さらに、加算器を有し、前記係数生成手段がサンプル（Ｓ１〜Ｓｎ）のＮ数を受取り、処理した後に、前記係数生成手段が係数を出力し、入力信号の新しいサンプル（Ｓｎ＋１）が受け取られると、前記加算器が、前記第３メモリ素子に過去に記憶されていたサンプルのＮ数の第１サンプル（Ｓ１）に基づいた項を、新しいサンプル（Ｓｎ＋１）に基づいた項から差し引き、前記加算器が、新しいサンプル（Ｓｎ＋１）に基づいた項と、第１サンプル（Ｓ１）の間の差異によって係数を更新する請求項１に記載の装置。
【請求項１７】
前記係数生成手段がＮ数のサンプル（Ｓ１〜Ｓｎ）を受け取り、処理した後に、前記係数生成手段が係数を出力し、入力信号の新しいサンプル（Ｓｎ＋１）が受け取られると、前記加算器が、前記第３メモリ素子（６６）に過去に記憶されていたサンプルのＮ個の第１サンプル（Ｓ１）に基づいた項を、係数のそれぞれから差し引き、前記加算器が新しいサンプル（Ｓｎ＋１）に基づいた項を係数のそれぞれに加算する請求項１に記載の装置。
【請求項１８】
入力信号の関数がフーリエ変換である請求項１に記載の装置。
【請求項１９】
少なくとも１つの係数があり、前記係数生成手段の前記第１デバイスがサンプルのそれぞれを受取り、サンプルに基づいて残りの係数を更新せずに、各サンプルに基づいた関数の係数を更新する請求項１に記載の装置。
【請求項２０】
前記係数生成手段の前記第１デバイスが、係数が更新されるたびに係数を出力する請求項１に記載の装置。
【請求項２１】
少なくとも１つの第１および第２の係数があり、前記係数生成手段の前記第１デバイスが第２の係数とは異なるサンプルの数で第１の係数を更新し、その結果、それぞれの係数の分解能が異なる請求項１に記載の装置。
【請求項２２】
入力信号の複数のサンプル値（Ｓ１〜Ｓｎ）を順次受け取って、離散フーリエ変換により入力信号を近似する、関数の係数（Ａ０、Ａ１、Ａ２、．．．およびＢ０、Ｂ１、Ｂ２、．．．）を決定する方法であって、
係数生成手段の受信部が、前記入力信号の複数のサンプル値を受取るステップと、
前記係数生成手段の第２デバイスが、サンプル番号および係数の数に基づいて直交関数の値を生成するステップと、
前記受信部および前記第２デバイスに接続された、前記係数生成手段の第１デバイスが、前記受信部からの前記サンプル値と、前記第２デバイスから受取った前記直交関数の値とに基づいて、前記関数の各係数に加算されるべきそれぞれの項を生成するステップと、
前記係数生成手段のメモリ素子が、前記関数の係数を記憶するステップと、
前記係数生成手段が、前記関数の各係数に加算されるべきそれぞれの項を、前記メモリ素子から読み出した係数に加算することによって前記関数の各係数を更新して前記メモリ素子の読み出した部分に書き込み、前記サンプル値を破棄するステップと
を含む、方法。
【請求項２３】
前記サンプルは、外部クロックに基づいて前記受信部に提供され、前記第１デバイスおよび前記第２デバイスは前記係数を更新するために外部クロックを使用する請求項２２に記載の方法。
【請求項２４】
前記更新するステップにおいて、各サンプルが受け取られると、前記第１デバイスが複数のサンプルのそれぞれで係数のそれぞれを更新し、各係数が複数のサンプルの最後で更新されると、前記第１デバイスが係数を出力する請求項２２に記載の方法。
【請求項２５】
前記更新するステップにおいて、各サンプルが受け取られると、前記第１デバイスが、複数のサンプルのそれぞれに基づき係数のそれぞれを同時に更新し、係数が複数のサンプルの最後に基づき更新されると、前記更新するステップにおいて、前記第１デバイスが係数を出力する請求項２２に記載の方法。
【請求項２６】
前記第１デバイスがメモリ素子を有し、前記方法が、さらに、最初に、サンプル番号及び係数の数に関連付けられる関数をメモリ素子の中に記憶するステップと備え、サンプル番号及び係数の数ごとに、前記確定するステップにおいて、前記第１デバイスがメモリ素子にアクセスし、サンプル番号及び係数の数に関連付けられる値でサンプルを乗算し、それにより項を定義し、前記更新するステップにおいて、前記第１デバイスが係数の過去の値に項を加算することによって係数を更新する請求項２２に記載の方法。
【請求項２７】
前記第１デバイスのメモリ素子が複数のセルを有するアレイを含み、前記記憶するステップがアレイの各セルの中に、それぞれのサンプル番号及び係数の数に関連付けられる関数を表す値を記憶し、アレイの各セルが、関連付けられたサンプル番号及び係数の数によって定義された一意のアドレスを有し、サンプル番号及び係数の数ごとに、前記確定するステップにおける前記第１デバイスが、サンプル番号及び係数の数に関連付けられるアドレスを使用してメモリ素子のセルにアクセスし、記憶される関数でサンプルを乗算し、それにより項を定義し、それ以降前記更新するステップがそれらを係数の過去の値に加算することにより係数を更新する請求項２２に記載の方法。
【請求項２８】
前記第１デバイスがメモリ素子を有し、信号の各サンプルが、有限数の考えられる値の１つである値を有し、前記方法が、さらに、各セルがそれぞれのサンプル番号及び係数の数の有限値と関連付けられるように、セルのアレイを有する前記第１メモリ素子の中に、有限数のサンプルの考えられる値の１つと、各サンプル番号及び係数の数に関連付けられる関数の組み合わせに一致する事前に計算された値を記憶するステップとを備え、各セルがトークンアドレスで表される請求項２２に記載の方法。
【請求項２９】
前記第２のデバイスが第２のメモリ素子を有し、前記方法が、さらに、セルのアレイを有する前記第２メモリ素子の中に、それぞれがそれぞれのサンプル番号及び係数の数を表すトークンを記憶するステップを備え、サンプルごとに、前記確定するステップが第２メモリ素子にアクセスし、係数ごとに、係数とサンプルに関連付けられたトークンを検索し、トークンを第１メモリ素子に供給し、それ以降、トークンとサンプルの値から構成されるアドレスを有する第１メモリ素子のセルに記憶される事前に計算された値を検索し、前記更新するステップが、第１メモリ素子から係数の過去の値に事前に計算された値を加算することによって係数を更新する請求項２２に記載の方法。
【請求項３０】
さらに、前記第１デバイスが第１メモリ素子のセルをアドレス指定し、サンプルごとに前記アドレス指定するステップが係数とサンプルに関連付けられるトークンを第１メモリ素子に出力し、前記確定するステップにおいて、前記第１デバイスがトークンとサンプルの値から構成されるアドレスを有する第１メモリ素子のセルの中に記憶される事前に計算される値を検索し、前記更新するステップにおいて、前記第１デバイスが第１メモリ素子から係数の過去の値に事前に計算された値を加算することによって係数を更新する請求項２２に記載の方法。
【請求項３１】
各トークンが、それぞれのサンプル番号及び係数の数に関連付けられる関数の値がゼロであるかどうかも示し、前記更新するステップにおいて、前記第１デバイスが、トークンが関数がゼロであることを示した場合に係数の過去の値にゼロを加算することによって係数を更新する請求項２２に記載の方法。
【請求項３２】
各トークンが、それぞれのサンプル番号及び係数の数に関連付けられる関数の正負符号が、正であるのか、負であるのかも示し、第１メモリ素子に記憶するステップが、関数の正負符号を考慮せずに、それぞれのサンプルとそれぞれの関数の規模の組み合わせに一致する事前に計算された値だけを記憶し、それにより第１メモリ素子によって記憶される事前に計算される値の数を削減することを備える請求項２２に記載の方法。
【請求項３３】
各トークンがそれぞれのサンプル番号及び係数の数を表し、前記方法が、さらに、トークンを選択するステップと、信号の逆関数を表す係数を生成するために、前記選択するステップにおいて、前記第１デバイスが、トークンがそれぞれのサンプル番号及び係数の数に関連付けられる逆関数を表す事前に計算された値を含む第１メモリ素子の中でセルをアドレス指定するように、トークンの内容を切り替え、前記更新するステップにおいて、前記第１デバイスが第１メモリ素子から係数の過去の値に事前に計算された値を加算することによって係数を更新する請求項２２に記載の方法。
【請求項３４】
前記受け取るステップが、それぞれ別個のチャネルに存在する複数の信号からサンプルを受け取り、前記確定するステップにおいて、前記第１デバイスが信号のそれぞれに関してサンプルのそれぞれを受取り、前記選択するステップからのトークンに基づき、サンプルが受け取られるときに、信号に関連付けられる各サンプルに基づく各サンプルに関連付けられる関数の係数を更新し、前記選択するステップにおいて、前記第１デバイスがチャネルの少なくとも１つから受け取られるサンプルに関してトークンを切り替え、その結果前記確定するステップにおいて、前記第１デバイスが少なくとも１つのチャネルに関して信号の逆関数を表す係数を生成する請求項２２に記載の方法。
【請求項３５】
さらに、サンプルのそれぞれを、それらがメモリ素子に受け取られると記憶するステップを備える請求項２２に記載の方法。
【請求項３６】
前記受け取るステップが受け取り、前記更新するステップにおいて、前記第１デバイスがＮ個のサンプル（Ｓ１〜ＳＮ）を処理した後に、前記更新するステップにおいて、前記第１デバイスが係数を出力し、Ｎ個のサンプル（Ｓ１〜ＳＮ）がすでに受け取られた後に、入力信号の新しいサンプル（ＳＮ＋１）が前記受け取るステップによって受け取られると、前記方法は、さらに、前記記憶するステップに過去に記憶されていた所定の複数のサンプルの第１サンプルに基づく項を、新しいサンプルに基づいた項から差し引くステップを備え、前記更新するステップが、新しいサンプルに基づいた項と所定の複数のサンプルの第１サンプルの間の差異によって係数を更新する請求項２２に記載の方法。
【請求項３７】
前記受け取るステップが受け取り、前記更新するステップにおいて、前記第１デバイスがＮ個のサンプルを処理した後に、前記更新するステップにおける前記第１デバイスが係数を出力し、入力信号の新しいサンプル（Ｓｎ＋１）が、Ｎ個のサンプルがすでに受け取られた後に前記受け取るステップによって受け取られると、前記方法は、さらに、前記記憶するステップで過去に記憶されたＮ個のサンプルの第１サンプルに基づく項を、係数のそれぞれから差し引くステップを備え、前記更新するステップにおいて前記第１デバイスが新しいサンプルに基づく項を係数のそれぞれに加算する請求項２２に記載の方法。
【請求項３８】
入力信号の関数がフーリエ変換である請求項２２に記載の方法。
【請求項３９】
少なくとも１つの係数があり、前記受け取るステップが、サンプルのそれぞれを受取り、前記更新するステップにおける前記第１デバイスが、各サンプルに基づき関数の係数を更新し、サンプルに基づいた残りの係数を更新しない請求項２２に記載の方法。
【請求項４０】
前記更新するステップが、係数が更新されるたびに係数を出力する請求項２２に記載の方法。
【請求項４１】
少なくとも１つの第１および第２の係数があり、前記更新するステップにおける前記第１デバイスが、第２の係数とは異なるサンプルの数で第１の係数を更新し、その結果それぞれの係数の分解能が異なる請求項２２に記載の方法。
【発明の詳細な説明】
【０００１】
（発明の分野）
本発明は、概して、関数の係数を確定することに関する。さらに特定すると、本発明の装置、方法およびコンピュータプログラム製品は、信号の各サンプルが係数の確定における待ち時間を減少するために受信されるときに入力信号を表す関数の係数を確定することに関する。
【０００２】
（発明の背景）
信号処理は、多くの電子システムの重要な機能である。特に、多くの電子システムにおいて、データは信号形式で伝送される。さらに、いくつかの電子システムは、機械システムまたは化学システムの動作を、振動信号およびその他の種類の信号などの、これらのシステムから出力される信号の特徴を観察することにより分析および監視する。これを考慮に入れて、信号の中の情報またはデータがデータ処理に使用できるように信号を特徴付けるために方法が開発されてきた。
【０００３】
一例として、多くの電子システムにおいては、時間ドメイン信号は、典型的には、信号処理の前に周波数ドメインに変換される。信号を周波数ドメインに変換するための典型的な方法は、フーリエ変換を使用して実行される。信号のフーリエ変換は、ベース周波数として知られている選択された時間期間で採取される時間ドメイン信号の複数のサンプルに基づいている。信号のこれらのサンプルに基づき、フーリエ変換は複数の係数を提供し、係数はそれぞれベース周波数の倍数である周波数の振幅を表す。それから、周波数ドメインで信号を表すフーリエ変換のこれらの係数は、信号を処理する際に電子システムによって使用される。
【０００４】
フーリエ変換は、信号を処理するための最も幅広く使用されている関数の内のいくつかの中にあるが、現在使用されている、あるいはその適用可能性のさらによい理解が認識されるにつれて将来使用されるだろうそれ以外の関数がある。これらの関数は、いくつか挙げるだけでも、ベッセル関数、ルジャンドルの多項式、第１種および第２種のチェバイシェフ（Ｔｓｃｈｅｂｙｓｈｅｆｆ）の多項式、ヤコビ（Ｊａｃｏｂｙ）の多項式、一般化されたラゲールの多項式、エルミートの多項式、ベルヌーイの多項式、オイラーの多項式、および量子力学で使用される種々の行列、一次分析関数、ウェーブレットおよびフラクタルを含む。
【０００５】
フーリエ変換およびその他の前述された関数は、データ処理で使用するための信号の特徴を決定する上で有効であるが、その使用にはいくつかの欠点がある。特に、これらの関数を信号に適用することは、典型的には演算上集約的である。これは、それがデータ処理を実行するために専門化したプロセッサの使用を必要とする可能性があるために不利である。さらに、およびなおさらに重要なことには、これらの関数を使用する演算の総数を実行するのに必要とされる時間は、多くのデータ処理用途に受け入れ難い遅延を引き起こす可能性がある。事実上、多くのデータ処理システムの目標とは、遅延なくリアルタイムでデータ信号を処理する能力である。
【０００６】
例えば、フーリエ級数は、信号を表す係数の無限級数として定義される。フーリエ級数を使用して信号を変換するには、無限数の演算が必要になるだろう。この問題を矯正するために、多くの従来のデータ処理システムが、無限フーリエ級数と対照的に、離散フーリエ変換（ＤＦＴ）を使用する。ＤＦＴはフーリエ級数に対するデジタル近似であり、デジタル化されたアナログ情報を処理するために使用される。重要なことに、ＤＦＴはフーリエ級数の無限級数を、有限期間で採取されるＮ個の均等に間隔をあけておかれるサンプルの有限集合と置換する。したがって、ＤＦＴの演算は、フーリエ級数によって必要とされる無限数のサンプルの代わりに、受け取られたサンプルと同数の係数を提供する。そのこと自体、ＤＦＴの使用は、信号を処理するための最も満足のいく現在の手段を提供する。
【０００７】
しかしながら、信号を処理するのに必要とされる時間を短縮することの重要性のため、信号のＤＦＴを実行するために必要とされる演算の数をさらに削減するために、方法が開発されてきた。特に、ＤＦＴ手順は、類似するプロセスによってそれぞれの係数を計算する。一般的な係数のプロセスは、以下の通りである。独立した可変時間かける角度速度の正規化された値の正弦または余弦で各サンプルを乗算し、サンプルのすべてを総計する。この手順は、Ｎ個の係数のそれぞれに、Ｎ乗算−加算のステップを定義し、それは、その結果、Ｎ２乗算−ＤＦＴごとに演算加算に等しい。典型的には、信号の多くのサンプルが信号の適切な近似を実行するために必要とされるので、信号のＤＦＴは、典型的には演算および時間集約的である。
【０００８】
演算の数を削減するために開発された方法の１つがバタフライ方法であり、それは演算の数をＮ2からＮかける対数（Ｎ）に削減する。バタフライ方法は、ＤＦＴの三角値の多くが関数の周期性のために同じであるという事実に基づいている。そのこと自体、バタフライ方法はＤＦＴに関連付けられる行列をＮ／２  ２点変換（つまり、各係数ａnとｂnを表す変換）に削減する。バタフライ方法は、さらに、ＤＦＴの冗長な三角値を削減する。バタフライ方法はさらに伝統的なＤＦＴ方法に優先して演算数を削減するが、それは信号のフーリエ変換に複雑度も加える。特に、バタフライ方法は、信号のサンプルおよび関数を含む行列を処理するための複雑な方法を使用する。この複雑度が、専門化されたプロセッサの使用を必要とし、フーリエ変換の演算のための時間を増加することがある。その性質により、バタフライは、サンプルのすべてが受け取られた後まで係数の確定を開始しないバッチプロセスである。後述されるように、この方法が、関数の係数の確定で待ち時間を生じさせる。
【０００９】
必要とされた演算数に加えて、ＤＦＴの追加の問題とは、ＤＦＴの各係数の値が、信号のすべてのサンプルの関数であるという点である。したがって、ＤＦＴの係数のどれも、サンプルのすべてが処理されるまで確定できない。いったん集合の最後のサンプルが受け取られると、係数のすべての値が定義できる。そのこと自体、最後のサンプルの到着と係数の可用性の間の時間が、システムの待ち時間と呼ばれる。係数を処理するための時間がサンプルの集合を収集するための時間を上回る場合、システムはリアルタイムで動作できない。
【００１０】
サンプルのすべてが受け取られるまで係数は定義されないが、従来の技術ではこれまで認識されていなかったＤＦＴの有利な特性がある。この特性とはサンプルの独立性である。ＤＦＴプロセスで変換されているサンプルの集合では、各サンプルが、適用可能な角度の正弦または余弦だけに基づいて、各係数に寄与する。これは付録１に図解される。特に、ＤＦＴの係数のそれぞれ（つまり、Ａ０、Ａ１、Ａ２．．．およびＢ０、Ｂ１、Ｂ２．．．）は、各サンプルを、各係数に関連付けられる正弦関数と余弦関数に適用した総和である。例えば、係数Ａ１は、各サンプルの、Ａ１係数に関連付けられた余弦関数への適用である総和Ａ１1＋Ａ１2＋．．．Ａ１8である。サンプルのそれぞれが加算により各係数に関係するため、各サンプルは他のサンプルとは無関係であり、他のサンプルの受信前に係数を更新するために使用することができる。
【００１１】
信号のフーリエ変換を確定するための多くの従来のシステムは、ＤＦＴのこのサンプルの独立性の態様を認識していない。特に、ＤＦＴを使用する従来のシステムは、典型的には、最初に信号の多くのサンプルＮを受け取り、サンプルのすべてが受信された後にだけ、システムは係数のそれぞれを生成する。そのこと自体、これらの従来のシステムは、システムが、最後のサンプルが受け取られた後に、係数のそれぞれを計算するために必要とされる時間に等しい関連付けられた待ち時間を有する。この待ち時間が重要である場合がある。例えば、従来のシステムがＮ＝６４サンプルを使用してＤＦＴを確定する場合に、演算の数はＮ2、つまり４０９６である。高速フーリエ変換（ＦＦＴ）の場合、これはＮかける対数（Ｎ）に削減され、つまり６４（６）は３６４に等しい。
【００１２】
付録１は、ＤＦＴの係数を確定する前に、サンプルのすべてが受け取られるまで待機するデータ処理システムの例を示す。分かるように、付録１に示されているデータ処理システムは、最初に、フーリエ変換の係数のどれかの処理を開始する前に、信号の８つのサンプルを受け取る。サンプルの受信後だけに、システムは係数の計算を開始する。待ち時間は、最後のサンプルの受信と、係数が使用できるようになるときの間の時間として定義されるため、このデータ処理システムは、係数のすべての演算を実行するために必要とされる時間に等しい待ち時間を有する。そのこと自体、このデータ処理システムは、リアルタイムデータ処理に使用することはできない。リアルタイムデータ処理、あるいはほぼリアルタイムのデータ処理は多くのデータ処理システムでの使用に有利であるため、信号の変換を実行するために必要とされる時間を短縮する装置および方法を提供することが望ましい。
IEEE Transactions on Signal Processing Vol. 42, No. 4, ９９８〜９９１ページ（１９９４年４月）に掲載された、 N. Rama MurthyとM.N.S. Swamyの共著による、「シストリック・アーキテクチャを用いたＤＦＴとＤＣＴのリアルタイム計算について（On the Real-Time Computation of DFT and DCT through Systolic Architectures）」という題名の論文には、信号のＤＦＴを求める計算システムが説明されている。この論文で提案されているアーキテクチャは一連のデータとして入力データを受け付け、一連の出力として出力する。これは、また、計算のための境界セル（boundary cell）を削減する。しかし、全てのサンプルが受け付けられるまで係数を求める計算を待機させるので、このアーキテクチャではＤＦＴ計算のための待ち時間の減少がもたらされない。
【００１３】
バタフライなどの多くの従来のデータ処理システムの追加の問題とは、システムの複雑さのために、関数の係数が独立して観察できないという点である。さらに、バタフライは、リアルタイムと対照的に、バッチ方法で係数を確定するため、それぞれ新しいサンプルが受信されるときに個々の係数を観察し、追跡調査することはできない。分析のバッチ方法は待ち時間を加算するため、従来のシステムで経時的に係数を観察し、追跡調査するにはかなりの処理が利用されなければならない。遵守（Ｏｂｓｅｒｖａｎｃｅ、監視）および信号の個々の係数の追跡調査は、徹底的な信号分析には有利である。
【００１４】
多くの従来のデータ処理システムでの依然として追加の問題とは、これらのシステムが、典型的には、関数の個々の係数の分解能の変動に対処しないという点である。例えば、バタフライは、サンプルのと同じ数の係数を生じさせる各係数を計算するように構成される。バタフライは重要なそれらの係数と同じ分解能にとってあまり重要ではない係数を確定するのに時間と資源を費やすため、これは、ただ１つの係数、あるいは係数の部分集合に対する関心がある用途では不利である可能性がある。これを考慮に入れて、個々の係数の追跡調査および遵守（ｏｂｓｅｒｖａｎｃｅ）および個々の係数を計算する分解能の変化に対処する装置および方法を提供することが望ましいだろう。
【００１５】
（発明の要約）
以下に述べられるように、本発明の装置、方法およびコンピュータプログラム製品は、フーリエ変換などの関数を使用する信号の処理で特定される欠点の多くを克服する。特に、本発明は、待ち時間が短縮された入力信号を表す関数の係数を確定する装置、方法およびコンピュータプログラム製品を提供し、その結果、関数の係数は信号の最後のサンプルの受信から短縮された時間内で使用できるようになる。本発明は、関数の係数を確定するために記憶されなければならないデータ量を削減する装置、方法、およびコンピュータプログラム製品も提供し、その結果、あまり複雑ではないハードウェア設計が実現できる。さらに、本発明は、個々の係数を追跡調査、観察できるようにし、個々の係数または係数の部分集合も異なるレベルの分解能で確定できるようにする装置、方法、およびコンピュータプログラム製品を提供する。
【００１６】
特に、１つの実施形態では、本発明は、信号の最後のサンプルの受取りの前に関数の係数の少なくとも１つを更新し、その結果、関数の係数が、待ち時間が短縮されて確定できる装置、方法、およびコンピュータプログラム製品を提供する。さらに、別の実施形態では、本発明の装置、方法、およびコンピュータプログラム製品が、信号のサンプルのそれぞれが受信されるにつれて関数の係数のそれぞれを更新する。前述されたように、信号のサンプルのそれぞれは、他のサンプルとは関係なく関数の係数に影響を及ぼす。サンプルの独立した性質は、各サンプルからの寄与のすべてを別々に分類するために、各係数の等式を配列し直すことを可能にする。その結果、各サンプルの寄与は、サンプルが受け取られ、その後に各係数に加算されるときに計算できるようになる。
【００１７】
これを考慮に入れて、ある実施形態では、本発明は、入力信号の所定の複数のサンプルに基づいて入力信号を表す関数の係数を確定するための装置を含む。本発明の装置は、一度に１つずつサンプルのそれぞれを受け取り、最後のサンプルの受取りの前に関数の係数の少なくとも１つを更新する係数生成プログラムを含む。
【００１８】
別の実施形態では、本発明の装置は、一度に１つずつサンプルのそれぞれを受け取り、すべてのサンプルの受取りを待機しなくてもサンプルが受け取られるにつれて、各サンプルに基づいて関数の係数を更新する係数生成プログラムを含む。このようにして係数は、次のサンプルの到着前に毎回更新される。そのこと自体、最後のサンプルが受け取られると、残りの演算は各係数に対する最後のサンプルの寄与の確定だけである。したがって、最後のサンプルの受取りから係数が使用できるようになるまでの待ち時間は短縮される。
【００１９】
本発明のさらなる実施形態では、係数生成プログラムが、係数のそれぞれを、それが受け取られるとサンプルで更新する。そのこと自体、最後のサンプルが受け取られると、係数生成プログラムは、同時に係数のそれぞれを更新し、最後のサンプルの受取りと係数の可用性の間の待ち時間は大幅に短縮される。
【００２０】
最後のサンプルの受取りと係数の可用性の間の待ち時間を短縮することに加えて、本発明の装置、方法、およびコンピュータプログラム製品は、実現に必要とされるハードウェアも削減する。特に、本発明の装置、方法、およびコンピュータプログラム製品は、係数のそれぞれを、サンプルが受け取られると各サンプルの寄与で更新する。そのこと自体、係数のそれぞれが更新された後にサンプルを保持することは必要とされず、それにより記憶域の量は削減される。
【００２１】
さらに、本発明の装置、方法およびコンピュータプログラム製品は、各係数に関連付けられた関数の少なくとも一部を事前に計算し、これらの事前に計算した値を、指定された信号の係数を確定する上で使用するためにメモリに記憶することによって、演算を実行するための時間も短縮する。特に、前述され、付録１に示されるように、サンプルのそれぞれが、三角関数によって係数のそれぞれと関係し、三角関数の値は係数、およびサンプルが複数のサンプルの中で受け取られた順序に基づいている。係数およびサンプルが受け取られる順序が事前に既知であるため、本発明の装置、方法およびコンピュータプログラム製品は、サンプルおよび係数ごとに三角関数のこの部分を事前計算する。そのこと自体、各サンプルが受け取られると、本発明の係数生成プログラムは、サンプルおよび係数に関連付けられた事前に計算された値でサンプルを乗算するだけでよい。
【００２２】
特に、１つの実施形態では、本発明は、メモリ素子を含む係数生成プログラムを有する装置を含む。メモリ素子に記憶されるのは、各サンプルおよび係数に関連付けられる数学関数を表す事前に計算された値である。本発明のこの実施形態では、サンプルが受け取られると、係数生成プログラムがメモリ素子にアクセスし、サンプルを、サンプルと係数に関連付けられる数学関数を表す値で乗算し、それにより係数の項を定義する。係数生成プログラムは、さらに、項を係数の過去の値に加算することにより係数を更新する。
【００２３】
追加の実施形態では、装置、方法およびコンピュータプログラム製品は、複数のセルを有するアレイを含むメモリ素子に、事前に計算された値のそれぞれを記憶してよく、アレイの各セルは、それぞれのサンプルおよび係数と関連付けられる数学関数を表す値を記憶する。さらに、この実施形態では、アレイの各セルが、それぞれの係数およびサンプルで指定される一意のアドレスを有する。そのこと自体、各サンプルおよび係数ごとに、本発明のこの実施形態の係数生成プログラムが、サンプルと係数に関連付けられたアドレスを使用してメモリ素子のセルにアクセスし、記憶された値でサンプルを乗算し、それにより係数の項を定義し、それ以降、項を係数の過去の値に加算することによって係数を更新する。
【００２４】
１つの実施形態において、各サンプルおよび係数と関連付けられる関数を事前に計算することによって、必要とされる計算の数を削減することに加え、本発明の装置、方法およびコンピュータプログラム製品は、サンプルの規模（大きさ）のすべての考えられる値も、各係数とサンプルに関連付けられる三角関数とともに事前に計算する。そのこと自体、サンプルが受け取られると、係数生成プログラムはサンプルの値を評価し、サンプルの値に関連付けられた事前に計算された値、およびサンプルと係数の数学関数を、メモリ素子から検索し、事前に計算された値を使用して係数を更新する。
【００２５】
例えば、１つの実施形態においては、本発明は、第１メモリ素子および第２メモリ素子を備える係数生成プログラムを有する装置を含む。第１メモリ素子は、セルのアレイを含み、各セルはそれぞれのサンプルと係数と関連付けられている。各セルは、サンプルの有限数の考えられる値の１つと、それぞれの係数とサンプルに関連付けられている数学関数の組み合わせに一致する事前に計算された値を含む。第２メモリ素子は、トークンを記憶するためのセルのアレイも有する。トークンのそれぞれが、それぞれの係数およびサンプルを表す。
【００２６】
動作中、サンプルが受け取られると、係数生成プログラムは、第２メモリ素子にアクセスし、係数ごとに、係数とサンプルに関連付けられているトークンを検索し、トークンを第１メモリ素子に供給する。さらに、係数生成プログラムはサンプルの値を受け取り、第２メモリ素子からのトークンおよびサンプルの値に基づき、トークンとサンプルの値から構成されるアドレスを有する第１メモリ素子のセルの中に記憶される事前に計算された値を検索する。係数生成プログラムは、さらに、第１メモリ素子からあ事前に計算された値を係数の過去の値に加算することによって係数を更新する。
【００２７】
別の実施形態では、係数生成プログラムは、第２記憶装置よりむしろ、掛け算器、加算器、割り算器、あるいはそれ以外のゲート制御された関数を含む。この実施形態では、トークンは、第１メモリ素子のセルをアドレス指定するためにゲートによって第１メモリ素子に提供される。依然として別の実施形態では、カウンタが、第２メモリ素子をアドレス指定するためのトークンに、ゲートを使用して、あるいはゲートを使用しないで復号され、それはメモリ素子よりむしろ掛け算器、加算器、割り算器、またはその他のゲート制御されている関数を送る値への変換であってよい。
【００２８】
事前に計算された値を記憶することによって各サンプルに基づいて係数を計算するための時間を短縮することに加え、本発明は、メモリ素子に記憶されなければならない値の数、および第１メモリ素子をアドレス指定するために必要とされるトークンのサイズを最小限に抑える、装置、方法およびコンピュータプログラム製品も提供する。特に、いくつかの関数の三角性質のため、いくつかのサンプルの係数のいくつかは、ゼロという数学的な値を有するだろう。三角関数は係数およびサンプル数に依存するので、これらのインスタンスは所定できる。さらに、これらのインスタンスの値はゼロであるため、第１メモリ素子内にこれらの値の記憶を提供し、それによってメモリ素子のアレイのサイズおよび第１記憶装置をアドレス指定するために必要とされるトークンのサイズを縮小する必要性はない。
【００２９】
特に、本発明のこの実施形態では、トークンは、それぞれのサンプルおよび係数と関連付けられる数学関数の値がゼロであるかどうかも示す。サンプルの三角関数および係数がゼロであるサンプルが受け取られると、サンプルと係数に関連付けられたトークンはそのように示すだろう。そのこと自体、係数生成プログラムがサンプルと係数に関連付けられるトークンにアクセスすると、係数生成プログラムはトークンを観察し、ゼロを係数の過去の値に加算することによって係数を更新する。
【００３０】
いくつかの実施形態においては、係数生成プログラムは、さらに、プルダウン回路などのヌルデバイスを含む。この実施形態では、トークンが数学関数がゼロであると示すと、ヌルデバイスが第１メモリ素子の出力を、係数への加算のためにゼロ値で置換する。
【００３１】
さらに、記憶域を最小限に抑えるために、１つの実施形態では、本発明は、数学関数の正負符号を考慮せずに、それぞれのサンプルとそれぞれの数学関数の規模の組み合わせに対応する事前に計算された値だけを記憶する装置、方法およびコンピュータプログラム製品を提供する。特に、いくつかの関数の周期的な性質のため、それぞれのサンプルと係数に関連付けられる数学関数のいくつかは同じ規模を有するが、異なる正負符号を有する。本発明のこの実施形態においては、各値の規模のみメモリ素子に記憶される。さらに値の正負符号はトークンに示される。そのこと自体、値には、さらに少ない記憶域が必要とされる。
【００３２】
本発明の１つの実施形態においては、係数生成プログラムは、さらに、第１メモリ素子の出力と電気的に接続する加算器を含む。トークンが、数学関数が負であることを示すと、２の補数を使用する加算器は、第１メモリ素子によって出力される数学関数の規模の負を取る。
【００３３】
前記に詳説されたように、本発明は、受取り時に各サンプルを、サンプルと係数に関連付けられた数学関数と結合することによって信号を表す関数の係数を確定する。さらに、前記に詳説されたように、サンプルおよび係数のさまざまな組み合わせが事前に計算され、アドレス指定可能なメモリ素子に記憶される。典型的には、メモリ素子のセルをアドレス指定するトークンは、係数を示すビットおよびサンプルを示すビットを有する。通常の動作の間、トークンおよびメモリ素子は、信号を表す関数の係数を画定するために使用される。これらのトークンおよびメモリ素子は、信号の逆関数の係数を確定するためにも使用されてよい。特に、１つの実施形態においては、係数生成プログラムは、さらに、ゲート、カウンタ、第１メモリ素子をアドレス指定するためのトークンを生成するために使用される第２メモリ素子のどれかと電気的に接続するセレクタを含む。信号の逆関数の係数が所望される場合、セレクタは、トークンが信号の逆数学関数を表す事前に計算された値を含む第１メモリ素子のセルをアドレス指定するように、トークンによって示されるアドレスを改変する。
【００３４】
前記に詳説されたように、本発明は、受取り時に各サンプルを、サンプルと係数に関連付けられる数学関数と結合することによって、信号を表す関数の係数を確定する。さらに、前記に詳説されたように、サンプルと係数のさまざまな組み合わせは、事前に計算され、アドレス指定可能なメモリ素子に記憶されてよいか、あるいはトークンと関連付けられている値に関してゲート制御された関数によって計算されてよい。典型的には、メモリ素子のセルをアドレス指定するトークンは、係数とサンプルを示すカウンタから得られる状態情報から引き出される。通常の動作中、トークンおよびメモリ素子は、信号を表す関数の係数を確定するために使用され、これらのトークンおよびメモリ素子は、適切な場所にあるカウンタにビットを追加することによって繰り返し使用され、非常に多数のチャネルにサービスを提供してもよい。この実施形態では、追加係数メモリセルは追加係数を維持し、チャネル番号はユーザに対する便宜として出力されてよい。順方向係数を確定するため、あるいは入力の逆関数を確定するために電気信号を利用することも可能である。
【００３５】
さらに、通常の動作中、トークンおよびメモリ素子は、信号を表す関数の係数を確定するために使用され、これらのトークンおよびメモリ素子は、適切な場所にあるカウンタにビットを追加することによって繰り返し使用され、非常に多数のチャネルにサービスを提供してもよい。この実施形態では、追加係数メモリセルが追加係数を維持し、チャネル番号はユーザに対する便宜として出力されてよい。連続サンプルを異なるチャネルとして処理させることによって、このようにしてインタリーブされた変換を生じさせることが可能である。インタリーブされた変換は、第２の類似したプロセスに送られ、一例として、２次元変換を作成してよい。
【００３６】
さらなる実施形態では、係数生成プログラムが、さまざまなチャネルで複数の異なる信号からサンプルを受け取る。この実施形態では、係数生成プログラムは、別の信号の逆関数の係数も提供しつつ、セレクタを介して、１つの信号を表す関数の係数を提供してよい。
【００３７】
前記に詳説されたように、本発明の装置、方法およびコンピュータプログラム製品は、複数のサンプルを処理し、サンプルに基づいて関数の係数を生成する。本発明のいくつかの実施形態では、複数のサンプルが受け取られた後で、本発明の装置、方法およびコンピュータプログラム製品は、生成された係数を出力し、係数をリセットし、再び信号のサンプルを採取する。しかしながら、いくつかの実施形態では、それぞれの新しいサンプルが受け取られ、処理されるときに、係数の完全な集合を生成し、出力することが有利であってよい。これがすべりアパーチャフーリエ変換（ＳＡＦＴ）と呼ばれる。
【００３８】
この実施形態では、本発明の装置、方法、およびコンピュータプログラム製品は、複数のサンプルの最後のサンプルが受け取られ、係数が出力された後に、係数のそれぞれをゼロにリセットしない。代わりに、本発明の装置、方法およびコンピュータプログラム製品は、過去の複数のサンプルの最初のサンプルを、次に受け取られたサンプルで置換する。この新しいサンプルを使用して、本発明の装置、方法およびコンピュータプログラム製品は、係数の次の集合を出力する。そのこと自体、サンプルの「バッチ」ごとに係数の集合を生成する代わりに、本発明の装置、方法およびコンピュータプログラム製品は、新しいサンプルが受け取られるたびに、係数の集合を生成し、それにより毎回新しいサンプルが受け取られるたびに係数の新しい集合を提供する。
【００３９】
本発明は、新しいサンプルが受け取られるたびに、係数の集合を生成するための複数の装置、方法、およびコンピュータプログラム製品を提供する。これらの実施形態のそれぞれでは、本発明の装置、方法およびコンピュータプログラム製品が、過去の複数のサンプルの最初のサンプルを、受け取られた次のサンプルで置換してから、新しい係数を出力する。例えば、１つの実施形態では、本発明の装置、方法およびコンピュータプログラム製品は、最初に、サンプルのそれぞれを、それらが受け取られるときに記憶し、複数のサンプルの最後のサンプルが受け取られると、係数の第１集合を生成する。さらに、所定の複数のサンプルがすでに受け取られた後に、入力信号の新しいサンプルが受け取られると、本発明の装置、方法およびコンピュータプログラム製品が、係数に関連付けられた数学関数をサンプルに適用し、係数ごとに新しいサンプルに基づいた項を生成する。新しいサンプルを複数のサンプルの第１サンプルで置換するために、新しいサンプルの生成された項が、過去にメモリ素子に記憶されていた所定の複数のサンプルの第１サンプルに関連付けられた項から差し引かれる。この減算に続いて、係数は、新しいサンプルに基づいた項と所定の複数のサンプルの第１サンプルの間の差異によって更新される。
【００４０】
本発明の別の実施形態では、新しいサンプルを複数のサンプルの第１サンプルで置換するために、本発明の装置、方法、およびコンピュータプログラム製品は、所定の複数のサンプルの第１サンプルに基づいた項を、係数のそれぞれから差し引き、新しいサンプルに基づいた項を係数のそれぞれに加算する。
【００４１】
また、受け取られた新しいサンプルごとに係数を出力することに加えて、本発明の装置、方法、およびコンピュータプログラムは、係数の部分集合の個々を、経時的に観察、追跡調査できるようにする。特に、前述されたように、１つの実施形態の係数生成プログラムは、新しいサンプルごとに係数を出力する。これは、ユーザに、遵守（ｏｂｓｅｒｖａｎｃｅ）のために、リアルタイムまたはほぼリアルタイムで係数の新しい集合を与える。
【００４２】
さらに、説明されたように、本発明の装置、方法、およびコンピュータプログラム製品は、各サンプルが受け取られると、関数の係数のそれぞれを更新する。係数は個別に更新されるので、それらは、遵守（ｏｂｓｅｒｖａｎｃｅ）のために、さらに容易に個別に使用できる。さらに、各係数は個別に更新されるため、それぞれの個別の係数に加えられる更新数は変化してよい。そのこと自体、１つの実施形態では、本発明の装置、方法、およびコンピュータプログラム製品は、係数の１つまたは部分集合のどちらかが、他の係数を基準にしてそれらが更新されるサンプル数を変えることによって確定される分解能を変えることができる。
【００４３】
さらに、本発明は、ある関数の考えられる数学項を表すために記憶されなければならない値の数を削減するための方法およびコンピュータプログラム製品も提供する。特に、前記に示されたように、演算を実行するための時間は、システムに関連付けられた値の一部またはすべての値を事前に計算し、記憶することによって節約することができる。しかしながら、多くの場合、記憶域を必要とする量値を最小に削減し、その結果標準メモリ素子が使用できることが望ましい。
【００４４】
１つの実施形態では、本発明は、初期に、関数のすべての考えられる数学項の第１リストを作成する方法およびコンピュータプログラム製品を提供する。数学項ごとに、方法およびコンピュータプログラム製品は、組織的に、リスト中の各数学項を、リスト中の他のすべての数学項に比較し、数学項のどれが冗長であるのかを判断する。さらに、関数の一意の数学項が、関数の一意の数学項のすべての第２リストに記憶され、その結果、第２リスト中には関数の冗長な数学項はない。
【００４５】
本発明の１つの実施形態では、関数は、関数の数学項のいくつかが同じ規模および異なる正負符号を有するように少なくとも周期的であるか、逆になる。この実施形態では、本発明の方法およびコンピュータプログラム製品は、リスト中の各数学項の規模を、リスト中のそれ以外の数学項のそれぞれの規模に比較し、数学項の内のどれが同じ規模を有するのかを決定する。さらに、一意の規模を有する数学項は、第２リスト中に記憶される。本発明の方法およびコンピュータプログラム製品は、さらに、各数学項に関連付けられたトークンを作成することを含み、トークンは数学項に関連付けられた第２リストに記憶されている規模、および数学項に関連付けられる正負符号を示す。
【００４６】
本発明の別の実施形態では、数学項の少なくとも１つがゼロという規模を有する。この実施形態では、方法およびコンピュータプログラム製品は、数学項が第２リストに記憶されないように、数学項がゼロであることを示す数学項に関連付けられたトークンを作成する。
【００４７】
別の実施形態では、関数は信号を表し、信号のサンプルによって定義され、信号のサンプルは有限数の考えられる値の内の１つである。この実施形態では、方法およびコンピュータプログラム製品は、サンプルの考えられる値と関数の数学項のすべての考えられる組み合わせの第１リストを作成する。さらに、リスト中の各組み合わせは、規則正しくリスト中の他のすべての組み合わせに比較され、組み合わせの内のどれが冗長なのかを判断する。この比較に基づき、一意の組み合わせのすべては第２リストに記憶され、その結果、第２リスト中には冗長な組み合わせはない。
【００４８】
（発明の詳細な説明）
ここで、本発明は、本発明の好ましい実施形態が添付図面に関して、以下により完全に示される。類似する番号は、全体を通じて類似する要素を示している。
【００４９】
前述されたように、データ処理システムは、信号を表す関数の係数を確定するために開発された。しかしながら、これらのシステムの多くは複雑であり、信号のすべてのサンプルが受け取られるまで係数を計算しないため、これらのシステムは信号の即時の分析を提供しない。さらに、これらの従来のシステムは複雑であるため、個々の係数は、、遵守（ｏｂｓｅｒｖａｎｃｅ）および追跡調査のために容易にアクセスできない。さらに、これらのシステムは、個々の係数または係数の選択された部分集合の分解能の変動を許さない。
【００５０】
本発明は、他方、信号を表す関数の係数が確定される待ち時間を短縮できる装置、方法およびコンピュータプログラム製品を提供する。特に、サンプルの独立性を利用する本発明の装置、方法およびコンピュータプログラム製品は、最後のサンプルの受取り前に係数の少なくとも１つを更新し、その結果、係数を確定する上での待ち時間が短縮される。
【００５１】
さらに、別の実施形態では、本発明の装置、方法およびコンピュータプログラム製品は、各サンプルが受け取られると、関数の係数のそれぞれを更新する。そのこと自体、最後のサンプルが受け取られると、本発明の装置、方法およびコンピュータプログラム製品は、係数を出力する前に、最後のサンプルの寄与で各係数を更新さえすればよい。そのこと自体、最後のサンプルが受け取られるとき係数の可用性からの待ち時間は短縮される。
【００５２】
さらに、待ち時間を短縮するために、１つの実施形態では、本発明の装置、方法、およびコンピュータプログラム製品は、各係数に対するサンプルの寄与の考えられる値のすべてまたは部分のどちらかを事前に記憶する。そのこと自体、サンプル、特に最後のサンプルが受け取られると、本発明の装置、方法およびコンピュータプログラム製品は、サンプルの値を評価し、係数、サンプルおよびサンプルの値に一致する事前に記憶された値から適切な値を検索し、それにより係数を確定するために必要とされる時間を短縮する。依然としてさらに、別の実施形態では、本発明の装置、方法およびコンピュータプログラム製品が、係数のそれぞれを同時に更新する。そのこと自体、最後のサンプルが受け取られると、係数は、最後のサンプルの寄与と同時に更新され、係数のすべてが出力される。
【００５３】
また、本発明の装置、方法およびコンピュータプログラム製品は、個々の係数または係数の部分集合を観察できるようにし、個々の係数または係数の部分集合を変化する分解能で確定できるようにする。特に、述べられたように、本発明の装置、方法およびコンピュータプログラム製品は、各サンプルが受け取られると、係数のそれぞれを更新する。そのこと自体、各サンプルは、所望されるときに出力のために使用できる。さらに、本発明の装置、方法、およびコンピュータプログラム製品は他の係数と無関係に各係数を更新するため、各係数は異なる分解能まで更新できる。例えば、重要な１つの係数は、あらゆるサンプルで更新されてよいが、別の係数はあらゆる第３サンプルだけと更新される。
【００５４】
本発明の装置、方法およびコンピュータプログラム製品は、処理システムを実現するために必要とされるハードウェアの量およびサイズも削減してよい。特に、述べられたように、信号のサンプルが受け取られると、本発明の装置、方法およびコンピュータプログラム製品は、サンプルの寄与で即座に係数のそれぞれを更新する。サンプルは互いに無関係であるので、係数がその寄与で更新された後にはサンプルはもはや必要とされず、そのこと自体、サンプルは破棄されてよい。使用後にサンプルを破棄することにより、処理システムは、サンプルを処理するための追加メモリ記憶域またはデータを検索するための追加処理を必要としない。
【００５５】
本発明は、関数の考えられる数学項を表すために記憶されなければならない値の数を削減するための方法およびコンピュータプログラム製品も提供する。特に、本発明のこの実施形態の方法およびコンピュータプログラム製品は、関数の考えられる数学項のそれぞれを他の数学項に比較する。この比較から、方法およびコンピュータプログラム製品は、記憶されなければならない値の数を削減する。例えば、１つの実施形態では、数学関数は周期的でよく、その結果、関数のさまざまな値が同じ規模であるが異なる正負符号を有する。この例では、本発明の方法およびコンピュータプログラム製品は、項の規模だけを記憶し、正負符号を表すためにはトークンを使用するだろう。別の実施形態では、ゼロ（例えば、ｃｏｓ（π／２）およびｓｉｎπ＝０）である関数の値がある可能性がある。この実施形態では、方法およびコンピュータプログラム製品は、値ゼロを記憶しないが、代わりに値がゼロであることを表すトークンを使用する。
【００５６】
例示的な目的のため、本発明の多様な装置、方法およびコンピュータプログラム製品は、フーリエ級数の特徴とともに示され、記述される。しかしながら、本発明の装置、方法およびコンピュータプログラム製品が、多くの異なる種類の関数とともに使用できることが明らかでなければならない。例えば、装置、方法およびコンピュータプログラム製品は、ベッセル関数、ルジャンドルの多項式、第１種および第２種のチェバイシェフ（Ｔｓｃｈｅｂｙｓｈｅｆｆ）の多項式、ヤコビ（Ｊａｃｏｂｙ）の多項式、一般化されたラゲールの多項式、エルミートの多項式、ベルヌーイの多項式、オイラーの多項式、および量子力学で使用される種々の行列、一次分析関数、ウェーブレットおよびフラクタルなどの関数と使用されてよい。このリストは、決して網羅的ではなく、単なる例として提供されている。アプローチは、値のシーケンスとして表すことができる任意の関数に適用されてよい。これらの関数および前記に一覧表示されていないそれ以外の関数の適用の実用性は、きわめて一般的である。この方法は、並列計算のための装置および方法を開発し、機械の実行と互換性のある機械的な方法で冗長性を削除する。本発明の１つの実現は、問題の各クラスを調べ、最小の実行プログラムを作成するか、あるいは同じ関数用の装置を設計するための汎用コンピュータプログラムにあるだろう。この用途では、それはプログラミングの補助器具だろう。
【００５７】
付録１に関して前述されたように、本発明の重要な概念は、関数の係数を確定するために使用されるサンプルの独立性である。サンプルの独立性は、フーリエ変換という文脈で説明することができる。フーリエ変換は、直交性の原則に基づく。フーリエ変換がＤＦＴで適用されるので、それは信号の各周波数の成分の振幅を完全に独立して計算する手段を提供する。演算で使用される周波数はベース周波数の連続整数倍数である。ベース周波数は、サンプルの１つの集合を採取するために必要とされる時間期間である。信号のサンプルは直交関数の集合のそれぞれの構成要素によって乗算され、ベース周波数の１つのまたは複数のサイクルの間総計される。それぞれの結果として生じる係数は、１つの試験周波数の実数部または虚数部の振幅である。重要なことに、係数の演算は、他の係数の演算とは無関係である。ＤＦＴによって変換されるサンプルの集合Ｎでは、各サンプルが適用可能な角度および正規化定数の正弦または余弦のどちらかに基づいて、関数の各係数に寄与する。離散フーリエ変換の一般的な等式が以下に示される。
【数１】
0004083387.tif 000002
【００５８】
付録１に関して、従来のＤＦＴを使用した関数の係数の確定が図解される。最初に、ＤＦＴは信号の事前に選択された集合（この例ではＮ＝８）を受け取る。次に、ＤＦＴは係数のすべて（Ａ0、Ａ1、Ａ2、Ａ3、Ａ4、Ｂ1、Ｂ2、Ｂ3およびＢ4）を一度に１つずつ計算する。各サンプルの値は、係数の演算の中で一度使用される。各サンプルは、各係数かける正規化速度に関連付けられる独立した変数の正弦と余弦の両方で乗算される。例えば、係数Ａ１は、Ａ１係数に関連付けられる余弦関数に対する各サンプルの適用であるＡ１1＋Ａ１2．．．Ａ１8の総和である。サンプルのそれぞれが加算によって各係数に関係するので、各サンプルは他のサンプルとは無関係であり、他のサンプルの受取りの前に係数を更新するために使用できる。
【００５９】
サンプルのこの独立性を考慮に入れて、本発明の装置、方法およびコンピュータプログラム製品は、付録２に示されるように項を並べ直し、その結果、係数のそれぞれが、信号のサンプルのそれぞれが受け取られると更新される。これは、係数を計算する前に、すべてのサンプルが受信されるまで待機するバッチ方法である付録１の従来の方法とは異なる。前述され、以下に詳説されるように、各サンプルが受け取られると、係数のそれぞれを更新することによって、本発明の装置、方法およびコンピュータプログラム製品は、係数の生成での待ち時間を短縮し、個々の係数の追跡調査または観察を可能にし、異なる分解能で係数を確定できる。
【００６０】
ここで図１を参照すると、付録２に示される方法に従って、入力信号のサンプルに基づく入力信号を表す関数の係数を確定するための１つの実施形態が図示されている。本発明のこの実施形態の装置は、係数生成プログラム１０を含む。該係数生成プログラムは、入信信号のサンプルを受信するために受信機１２を含む。係数生成プログラムは、受信機と電気的に通信している第１ゲート１４および第１ゲートと電気的に通信している第２ゲート１６も含む。
【００６１】
図２および付録２に関して、係数生成プログラムの動作が示される。この図では、係数生成プログラムは、信号のＮ＝８サンプルに基づいて係数を生成する。サンプルごとに、受信機は、信号のサンプルを受け取り、該サンプルを第１ゲート１２に入力する（ステップ１００を参照すること）。係数ごとに、第２ゲートは２つの値、つまり係数の数を表す一方１８とサンプル番号を表す他方２０を受け取る。係数の数およびサンプル番号に基づき、第２ゲートは、信号の直交関数部分を生成する（ステップ１１０を参照すること）。
【００６２】
例えば、付録２に示されているように、ゼロ番目の係数Ａ０の場合、サンプル値は係数に加算される（つまり、Ａ０＋Ａ０1）。第１サンプルおよび係数Ａ１１の場合、直交関数は、以下の通りであり、
【数２】
0004083387.tif 000003
ここでは、
Ｃn＝係数の数、
Ｓn＝サンプル番号、
Ｎ＝サンプルの数
第１係数および第１サンプルの項を計算するため、第２ゲートは、係数の数１８およびサンプル番号２０を受け取る。これに基づき、第１サンプルＳnおよび第１係数Ｃnに関して、第２ゲートがｃｏｓ（２π・１・１／８）またはｃｏｓ（２π／８）を生成し、この値を第１ゲートに出力する（ステップ１１０を参照すること）。
【００６３】
その結果、第１ゲートは第２ゲートからの値および受信機からのサンプルの値を受け取る。これらの値に基づき、第１ゲートは、係数のサンプルの寄与を表す項を生成する（つまり、Ｓ1ｃｏｓ（２π／８））（ステップ１２０を参照すること）。それから、項は係数Ａ１に加算される（つまり、Ａ１＋Ａ１1）（ステップ１３０を参照すること）。これがそれぞれの係数に繰り返される（ステップ１４０と１５０を参照すること）。
【００６４】
前記説明は、各サンプルを用いた一度に１つずつの各係数の更新を図解する。しかしながら、係数生成プログラムが、最後の係数の受取りの前に、係数の１つだけを更新し、それによって係数を確定する上での待ち時間を減少するだろうことが理解されなければならない。さらに、係数生成プログラムが、各サンプルで同時に係数のすべてを更新できるだろうことが理解されなければならない。例えば、係数生成プログラムは、すべて受信機に接続されている複数の第１ゲートと第２ゲートを含むだろう。この実施形態では、サンプルは、同時にゲートの各集合に供給され、ゲートの各集合が、その結果、各係数へのサンプルの寄与を表す各係数の項を同時に生成し、各係数は同時に更新される。これが並行と呼ばれ、それはすべての係数を同時に更新できるようにするために有利である。並行は係数生成プログラムの典型的な適用である。特に、係数生成プログラムは、典型的には、すべての係数を同時に更新するために実現される。さらに、なんらかの例では、係数生成プログラムは、係数生成プログラムがチャネルごとに係数の集合を生成する複数のチャネルから入力を受け取るように構成される。しかしながら、以下の実施形態の多くでは、係数生成プログラムは、各係数を連続して更新し、明快さのために、ただ１つのチャネルを用いるとして示されている。
【００６５】
図１は、掛け算器、加算器、割り算器、またはその他のゲート制御される関数などのゲートの使用に基づいた係数の確定を図解する。図３は、少なくとも１つのメモリ素子を使用する係数の確定を図解する。ゲートと対照的に、メモリ素子の使用は、係数を確定するために計算されなければならない値の多くがメモリ素子に事前に記憶されてよいので、有利である可能性がある。これは、その結果、係数を確定する上で時間を節約できる。
【００６６】
図３に関して、この実施形態の係数生成プログラムは、信号のサンプルを受け取るための受信機１２を含む。係数生成プログラムは、受信機と電気的に通信する第１メモリ素子２２、および第１メモリ素子と電気的に通信する第２メモリ素子２４も含む。本発明の１つの実施形態では、第２メモリ素子はセルのアレイを含み、各セルは、サンプルと係数ごとの信号の直交関数部分を表す事前に計算された値を含む。例えば、第２メモリ素子は、ｃｏｓ（２πＣnＳn／Ｎ）またはｃｏｓ（２π／８）に等しい第１サンプルと係数の直交関数部分用のセルを含む。本実施形態では、第１メモリ素子は、掛け算器であってよい。
【００６７】
図２および付録２に関して、本実施形態の動作では、サンプルごとに、受信機が信号のサンプルを受け取り、該サンプルを第１メモリ素子２２に入力する（ステップ１００を参照すること）。係数ごとに、第２メモリ素子は、サンプルと係数の信号の直行関数部分を含むセルのアドレスを表すトークンを受け取る。このトークンは、入力１８と２０によって提供され、トークンの一部は係数の数Ｃnであり、他の部分はサンプル番号Ｓnである。トークンに基づき、第２メモリ素子は、係数とサンプルに関連付けられる値を検索し、値を第１メモリ素子に出力する（ステップ１１０を参照すること）。第１メモリ素子は、その結果、第２メモリ素子から値を、受信機からサンプルの値を検索する。これらの値に基づき、第１メモリ素子は、係数に対するサンプルの寄与を表す項を生成する（つまり、第１サンプルと係数の場合、Ｓ1ｃｏｓ（２π／８））（ステップ１２０を参照すること）。それから、項は係数に加算される（つまり、Ａ１＋Ａ１1）（ステップ１３０を参照すること）。これが、係数ごとに繰り返される（ステップ１４０と１５０を参照すること）。
【００６８】
本発明のいくつかの実施形態では、受信機から受け取られるサンプルは、多くの有限値の内の１つである。サンプルと係数の直交関数部分は過去に知られており（つまり、２πＣnＳn／Ｎ）、サンプルは有限数の値の１つにすぎないため、各サンプル値、サンプル番号、および係数の数を表す値は、事前に計算し、事前に記憶することができる。そのこと自体、サンプルが受け取られると、サンプルの各係数に対する寄与を表す項は、サンプルの値、サンプル番号、および係数の数に基づいたメモリ素子内の値を調べることによって確定できる。
【００６９】
これを考慮に入れて、１つのさらなる実施形態では、第１メモリ素子は、セルのアレイを含むメモリ素子である。第１メモリ素子の各セルは、各サンプル値、サンプル番号、および係数の数を表す事前に計算された値を含む。係数とサンプルごとに、メモリ素子は、セルのグループを含み、それぞれがサンプルに考えられる値で乗算された係数とサンプルに関連付けられた直交関数を有する。例えば、第１サンプルと係数の場合、Ｓ1ｃｏｓ（２π／８）という値を有するセルのグループがあり、各セルはＳ1の別の考えられる値の値を表す。さらに、第２メモリ素子は、それぞれが各サンプルと係数の直交関数部分を表すトークンを有するセルのアレイを有する。
【００７０】
動作中、図２に関して、サンプルごとに、受信機は信号のサンプルを受信し、該サンプルを第１メモリ素子２２に入力する（ステップ１００を参照すること）。係数ごとに、第２メモリ素子が、入力１８と２０から、サンプルと係数の信号の直交関数部分を表すトークンを含むセルのアドレスを表す値を受け取る。第２メモリ素子は、係数とサンプルに関連付けられたトークンを検索し、第１メモリ素子にトークンを出力する（ステップ１１０を参照すること）。第１メモリ素子は、その結果、第２メモリ素子からトークンを、受信機からサンプルの値を受け取る。トークンおよびサンプルの値に基づき、第１メモリ素子は、これらの値に対応するアレイ内のセルを調べ、係数に対するサンプルの寄与を表す項を出力する（つまり、第１サンプルと係数の場合、Ｓ1ｃｏｓ（２π／８））（ステップ１２０を参照すること）。それから、この項は、係数に加算される（つまり、Ａ１＋Ａ１1）（ステップ１３０を参照すること）。これが、各係数に繰り返される（ステップ１４０と１５０を参照すること）。
【００７１】
再び、本実施形態の装置が、すべて受信機に接続される各係数のための複数の第１メモリ素子と第２メモリ素子を提供することによって、各係数を同時に更新するために並列構成で動作してよいことが理解されなければならない。この実施形態では、各第１メモリ素子と第２メモリ素子は、同時にサンプルを受け取り、第１メモリ素子と第２メモリ素子のそれぞれの集合が異なる係数の値をアドレス指定するように適切にアドレス指定される。このようにして、各係数に対するサンプルの寄与は、並列で同時に確定される。
【００７２】
図３を参照すると、１つの追加の実施形態では、係数生成プログラムは、第２メモリ素子２４と電気的に通信するカウンタ２６を含んでよい。該カウンタは、計算を行うことができるように時間を計られる図示されていないクロックによって増分されてよい。カウンタは、第２メモリ素子をアドレス指定するために係数の数およびサンプル番号を表す２つの出力１８と２０を含んでよい。動作中、サンプルごとに、サンプル番号は一定に保持されるが、クロックの各サイクルまたは複数のサイクルの間、カウンタは係数の数を増分する。これが、その結果、各係数に対するサンプルの寄与を決定するために、第２メモリ素子をアドレス指定する。係数のすべてがそのサンプルに関して計算された後、カウンタのサンプル番号は増分され、係数の数はリセットされ、その結果、次のサンプルがいま各係数のために評価される。
【００７３】
前述されたように、計算の時間を短縮するために、本発明の１つの実施形態は、事前に計算された値とトークンを記憶し、メモリ素子をアドレス指定するためにメモリ素子を使用する。多くの電子部品設計での重要な関心は、回路を操作するために必要とされる構成部品の数を最小限に抑えたいという希望と、可能な箇所では既製の構成部品を使用する必要性である。これを考慮に入れて、設計の必要性の態様を評価し、構成部品数を最小限に抑え、標準構成部品の使用に対処する設計解決策を決定する方法が必要とされている。
【００７４】
そのこと自体、本発明は、関数の考えられる数学項を表すために記憶されなければならない値の数を削減するための方法およびコンピュータプログラム製品を提供する。この方法は、図４に関して図解され、係数生成プログラムのメモリ素子に記憶されなければならない値の数を削減する方法は、図３に示されている。
【００７５】
図４に関して、最初に、空のリストが作成され（ステップ２００を参照すること）、関数のすべての考えられる数学項が行列に記憶される（ステップ２１０を参照すること）。例えば、フーリエ級数などの多くの数学関数では、値の特定のアレイが、データの集合によって乗算されなければならない。データがＮビット２進数であり、アレイ内にＭ個の数がある場合、形成される可能性がある考えられる製品の数は、２のＮ乗かけるＭ（２NxM）である。例えば、フーリエ級数が６４個の係数を生成するために６４個のサンプルに基づいている場合、評価され、サンプルで乗算される４０９６個の三角関数がある。サンプルの長さがそれぞれ１２ビットである場合、４９０６個の考えられるサンプル値がる。すべての４０９６個の考えられるサンプル値に関して、考えられるサンプル値のそれぞれかける三角関数の積を事前に計算し、記憶するためには、かなり大きなメモリ素子を必要とするだろう１６，７７７，２１６個の記憶された積が必要となるだろう。
【００７６】
図４に関して、記憶された値の数を削減するために、本発明の方法およびコンピュータプログラム製品は、すべての考えられる値を行列に格納し（ステップ２１０を参照すること）、リスト中の各数学項を、リスト中のそれ以外のすべての数学項と規則正しく比較し、数学項のどれが冗長であるのかを判断する（ステップ２２０と２４０を参照すること）。値が一意である場合、それは作成されたリストの中に記憶される（ステップ２５０を参照すること）。これは、すべての値に繰り返され（ステップ２６０を参照すること）、値の総数が出力される（ステップ２７０を参照すること）。
【００７７】
例えば、フーリエ級数の場合、正弦と余弦の特性のため、記憶される必要のあるのは３２の異なる実際の値だけである。この分析は、典型的にはフーリエ変換に使用される制限関数と余弦関数の計算に基づいている。特に、図５は、６４個のサンプルおよび６４個の係数を使用するフーリエ変換の係数の正弦と余弦の４０９６の計算結果をプロットする２つのグラフを示す。これらのグラフは、値の有限の集合だけがあることを示す。この分析は、各値が、極性、つまりプラスまたはマイナスに関係するという事実に基づいている。値のプラスまたはマイナスがトークンで表わされる場合、関数の絶対値は記憶される必要のあるすべてである。これを行う際、メモリの要件は２５６Ｋから１２８Ｋに削減できる。
【００７８】
１つの正負符号ビットがあり、残りの１１のビットが１２ビット入力の絶対値となるように、記憶される値の数は、サンプルの値を表す入信サンプル値コードが正負符号付きの形式（つまり、正または負）、ほぼゼロである場合にも削減することができる。１１ビット数は１２個のビットと同じ数のメモリロケーションの半分だけを必要とする。そのこと自体、メモリのサイズは、１２ビット値を１１ビット値と１ビット正負符号に変換し、正負符号ビットを、同様にトークンをサポートできるなんらかの論理で処理することによって６４Ｋに削減できる。
【００７９】
説明されるように、記憶されなければならない３２の異なるトークンを必要とする３２の異なる値がある。トークンの数が１６に削減できる場合には、３２Ｋである１６個の値かける２０４６の考えられるサンプル値があるだろう。これは、値の１つがゼロであり、それに関連付けられるすべての４０９６個の値がゼロになることを観察することによって達成できる。トークンにゼロ値を与える代わりに、トークン自体がゼロ専用のビットを含むことがある。そのこと自体、１６個のトークンの集合が使用でき、４ビットがアドレス、値の正負符号を表すための正負符号ビット、および値がゼロであるのかを表すゼロビットである。
【００８０】
示されているように、本発明の方法およびコンピュータプログラム製品は、記憶されなければならない値の数を削減するために使用できる。これが、その結果、最小且つ標準のハードウェアの使用に対処する。例えば、信号の６４のサンプルが、１２ビットサンプルコードを使用して採取される前記例では、事前に計算された値のすべてを記憶するためノ第１メモリ素子は、１２８Ｋメモリに削減でき、トークンを記憶するための第２メモリは８Ｋメモリに削減することができる。
【００８１】
記憶される値の数を削減するための本発明の方法およびコンピュータプログラム製品は、所定のサンプルの数およびサンプルビットサイズと、フーリエ級数の文脈で示されるが、記憶されなければならない必要とされる値の数を削減するための方法およびコンピュータプログラム製品が任意の関数、所定サンプルの数、および／またはサンプルビットサイズとともに使用できることが理解されなければならない。
【００８２】
記憶される値の数が確定された後に、値は、第２メモリ素子に記憶さえるトークンでアドレス指定される必要がある。図６に関して、記憶のためにアドレス／トークンを作成するために、方法は、当初、アドレスを値に適用する（ステップ３００と３１０を参照すること）。それから、アドレスに関係するトークンが選択される（ステップ３２０を参照すること）。次に、方法は、すべての値がアドレス指定されているかどうかを確かめるためにチェックする（ステップ３３０を参照すること）。されていない場合、方法は任意の順序でアドレスを増分する（ステップ３４０を参照すること）。いったんすべての値がアドレス指定されると、それらはメモリの中にロードされる（ステップ３５０を参照すること）。同様に、いったん値の集合がトークンにとって既知であると、加算器またはテーブルを各アドレスに対する同じ応答で置換するその他のゲート制御の機構、およびトランジスタ数の節約、あるいは実現されている技術でどのような最も有意義な基準も見つけることが一般的である。これは、テーブルよりむしろゲート制御関数と呼ばれる。
【００８３】
図７に関して、トークンを作成し、記憶することに加え、事前に計算された値も第１メモリ素子にロードされなければならない。特に、考えられるサンプル値ごとに、本発明の方法およびコンピュータプログラム製品は、第１トークンを取り、トークンの値およびサンプルの考えられる値を関数に適用し、サンプル値の関数の事前に計算された値を作成する（ステップ４００と４１０を参照すること）。それから、事前に計算された値は、メモリに記憶される（ステップ４２０を参照すること）。次に、方法は、すべての値がアドレス指定されているかどうかを確かめるためにチェックする（ステップ４３０を参照すること）。されていない場合、方法は任意の順序でアドレスを増分する（ステップ４４０を参照すること）。いったんすべての値がアドレス指定されると、それらはメモリにロードされる（ステップ４５０を参照すること）。同様に、いったん値の集合がトークンに関して既知であると、掛け算器または各アドレスに対する同じ応答でテーブルを置換するその他のゲート制御の機構、およびトランジスタ数の節約、あるいは実現されている技術でどのような最も有意義な基準も見つけることが一般的である。これは、テーブルよりむしろゲート制御関数と呼ばれる。
【００８４】
前述された図３は、関数の係数を確定するためのメモリ素子およびトークンの使用を示す。しかしながら、図８は、図４、および図６から図７で前記に開発されたメモリ素子およびトークンのより一般的な使用を示す。特に、値を特定するためにメモリ素子およびトークンを使用するには、所望のトークンを表すアドレスが第２メモリ素子に適用され（ステップ５００を参照すること）、トークンが検索される（ステップ５１０を参照すること）。それから、トークンは第１メモリ素子にアクセスするためのアドレスを作成するためのサンプルの値とともに第１メモリ素子に適用される（ステップ５２０と５３０を参照すること）。トークンが、設定される正負符号ビットまたはゼロビットを含む場合、第１メモリ素子内のトークンと関連付けられた値が適切に改変される（ステップ５４０を参照すること）。最後に、値が出力される（ステップ５５０を参照すること）。
【００８５】
前述されたように、関数の係数を計算するために記憶されなければならない値の数は、冗長な値を削除し、値の規模だけを記憶し、値がゼロであるとき、または値の正負符号を表すトークンビットを使用することによって削減することができる。図９は、記憶される値の最小数を有する第１メモリ素子、正負符号およびゼロを示すためのビットを含むトークンを備える第２メモリ素子、および正負符号付きの入力値を使用して関数の係数を確定するための例示的な実施形態を提供する。前記実施形態と同様に、本実施形態の係数生成プログラム１０は、第１メモリ素子と第２メモリ素子２２と２４を含む。メモリ素子の両方とも、値を記憶するためのセルのアレイを含む。第２メモリ素子は係数とサンプル番号を表すトークンを含み、第１メモリ素子は各サンプルと係数の直交関数部分と結合されるサンプルの考えられる一意の値のすべてを含む。例えば、第１サンプルＳ1および第２係数Ｃ1の場合、第２メモリ素子に記憶されるトークンはサンプル番号および係数の数、Ｓ1とＣ1を指定する。第１メモリ素子に記憶されるのは、それぞれが等式（Ｓ1ｃｏｓ（２πＣnＳn／Ｎ））または（Ｓ1ｃｏｓ（２π／Ｎ））によって定義される値を有する数多くのセルであり、それぞれのセルが等式へのサンプルＳ1の考えられる値の適用を記憶する。
【００８６】
さらに、本実施形態の係数生成プログラムは、受信機１２と電気的に通信する第１論理積ゲート２８、第２メモリ素子の出力、および第１メモリ素子の入力も含む。係数生成プログラムは、第１論理積ゲート２８の出力に接続される第２論理積ゲート３０、およびＸＯＲゲート３２も含む。第２論理積ゲート３０の出力に接続されているのは、典型的には信号の２の補数を取るために実現される加算器３６である。ＸＯＲゲート３２は、第２メモリ素子の出力、および後述されるゲート組み合わせ４０と電気的に通信する。本実施形態の係数生成プログラムは、第１メモリ素子の出力と電気的に通信するヌルデバイスまたはプルダウン３４も含む。
【００８７】
重要なことに、記憶されなければならない値の数を削減するために、受信機によって受け取られるサンプルは１２ビットコードとなり、ビットの１つは正負符号ビットである。説明されるように、サンプルのビット表記を１１ビットに縮小し、正負符号に１ビットを使用することによって、記憶空間は削減される。この目的のため、いくつかの実施形態では、係数生成プログラムは、受信機１２と電気的に通信するコード変換器３８も含む。受信機によって出力されるサンプルが適切な１２ビットフォーマットではない場合、コード変換器はサンプルを、値を表す１１ビットおよび正負符号の１ビットを含む１２ビットに変換するだろう。
【００８８】
本実施形態の係数生成プログラムは、第１メモリ素子に記憶される値をアドレス指定するために、第２メモリ素子に記憶される６ビットトークンも使用する。重要なことに、記憶されなければならない値の数を削減するために、ビットの内の１つは数の正負符号を表し、ビットの内の１つは値がゼロであるかどうかを表す。トークンは第２論理積ゲート３０および加算器３６とともに動作し、トークンの正負符号ビットが値の負を示す場合には、第１メモリ素子の出力の負を取る。さらに、ヌルデバイスまたはプルダウンデバイス３４、トークンのゼロビット、および論理積ゲート２８は、トークンが、値がゼロでなければならないことを示す場合に第１メモリ素子の出力を負にする、あるいはゼロにするために動作する。
【００８９】
図１０に関して、本実施形態の動作中、サンプルごとに、受信機は信号のサンプルを受け取り、該サンプルを第１メモリ素子２２に入力する（ステップ６００を参照すること）。係数ごとに、入力１８と２０が、サンプル番号および係数の数を表す第２メモリ素子に与えられる（ステップ６１０を参照すること）。入力に基づき、第２メモリ素子は、サンプルおよび係数の数を表す４ビット、値が負であるかどうかを示す１ビット、および値がゼロであるかどうかを表す１ビットを出力する（ステップ６２０を参照すること）。第１メモリ素子は、その結果、第２メモリ素子からトークンを、受信機からサンプルの値を受け取る。それらの値に基づき、第１メモリ素子は、係数にアイするサンプルの寄与を表す項を生成する（つまり、第１サンプルと係数の場合、Ｓ1ｃｏｓ（２π／８））（ステップ６３０を参照すること）。
【００９０】
さらに、サンプルの正負符号ビットおよびトークンの正負符号ビットの出力が、第２論理積ゲート３０に供給される。信号の正負符号が負であるか、あるいはトークンの正負符号ビットが設定されているかのどちらかの場合、第２論理積ゲートは加算器３６に桁上げビットを出力する。加算器は、第１メモリ素子の出力を負にする（ステップ６４０と６５０を参照すること）。
【００９１】
同様に、トークンおよび信号はともに第１論理積ゲート２８に提供される。信号またはトークンのどちらかがゼロ値を示す場合、ゼロ値は、第１論理積ゲート２８によって出力される。ゼロ値が第２論理積ゲート３０に送信され、それが第２論理積ゲート３０が信号を負にするのを禁止する。さらに、ゼロ値は第１メモリ素子に出力され、それが第１メモリ素子をディスエーブルする。第１メモリ素子がディスエーブルされるため、ヌルデバイスまたはプルダウンデバイス３４が、係数の値を表すゼロ値を出力する（ステップ６６０と６７０を参照すること）。それから、係数の項が出力される（ステップ６８０を参照すること）。
【００９２】
図９に示されるように、１つの実施形態では、係数生成プログアムは、さらに、第２メモリ素子と電気的に通信するカウンタ２６を含む。該カウンタは、計算を行うことができるように時間が計られる、図示されていないクロックによって増分されてよい。カウンタは、第２メモリ素子をアドレス指定するための係数の数およびサンプル番号を表す２つの出力１８と２０を含んでよい。動作中、サンプルごとに、サンプル番号は一定に保たれるが、クロックの各サイクルまたは複数のサイクルの間、カウンタは係数の数を増分する。これが、その結果、各係数に対するサンプルの寄与を確定するための第２メモリ素子をアドレス指定する。係数のすべてがそのサンプルに関して計算された後、カウンタのサンプル番号は増分され、係数の数はリセットされ、その結果、いま係数ごとに次のサンプルが評価される。
【００９３】
さらに、および重要なことに、図９は、本発明の別の態様も示す。前述されたように、本発明の装置、方法およびコンピュータプログラム製品は、入力信号の所定の複数のサンプルに基づく入力信号を表す関数の係数を特定する。しかしながら、装置、方法およびコンピュータプログラム製品は、信号の逆関数を表す係数も特定してよい。例えば、多くのデータ処理システムが、信号のＤＦＴと逆ＤＦＴの両方を実行するために具備される。
【００９４】
逆ＤＦＴは、本来、逆の意味でＤＦＴを実行している。第１メモリ素子はＤＦＴの考えられる値のすべてを含むので、逆ＤＦＴは、逆ＤＦＴの値に一致する第１メモリ素子内の値を単にアドレス指定するだけで特定することができる。図９に関して、逆ＤＦＴを実現するために、係数生成プログラムは、さらにＸＯＲおよびＮＯＴゲートを有する第３ゲート４０を含む。第３ゲートは、１２ビット信号の正負符号ビットに結合される入力、および逆関数４４をいつ実行すべきかを示すための入力を有する。第３ゲートの出力は、第２メモリ素子の出力とともに、ＸＯＲゲート３２に接続される。さらに、係数生成プログラムは、第２メモリ素子への入力１８と２０と電気的に通信するセレクタまたはクロスバー４２も含む。該クロスバーも、逆関数を実行するかどうかを示す入力４４に接続される。
【００９５】
動作中、逆関数（例えば、逆ＤＦＴ）は、図１０に説明されるように、関数（例えば、ＤＦＴ）を特定するための動作と同様に動作する。セレクタまたはクロスバーが、アドレス入力行を第１メモリ素子に切り替える以外。特に、信号の逆関数の係数が所望される場合、セレクタは、トークンが信号の逆数学関数を表す事前に計算された値を含む第１メモリ素子のセルをアドレス指定するように、トークンによって示されるアドレスを改変する。さらに、第３ゲート４０は、第２論理積ゲート３０とともに動作し、数学関数または入力信号のどちらかが負であるときに信号を負にする。そのこと自体、本発明の装置、方法およびコンピュータプログラム製品は、単に逆関数を実行するためにアドレス指定される値を切り替えるだけで、同じ構成要素および記憶される値を使用し関数または逆関数を特定することができる。
【００９６】
前述されたように、本発明の装置、方法およびコンピュータプログラム製品は、各サンプルが受け取られると、各係数を更新することによって信号を表す関数の係数を特定する。図１、図３、および図９は、サンプルの係数の更新を図解する。後述される図１１は、複数のサンプルに基づく係数の特定を図解し、特に受け取られる各サンプルの各係数の更新を示す。
【００９７】
前記実施形態と同様に、本実施形態の係数生成プログラム１０は、第１メモリ素子と第２メモリ素子、２２と２４を含む。メモリ素子の両方とも、値を記憶するためのセルのアレイを含む。第２メモリ素子は、係数とサンプル番号を表すトークンを含み、第１メモリ素子はサンプルと係数の直交関数部分と結合されるサンプルの考えられる一意の値のすべてを含む。どのシステムまたはデバイスが第２メモリ素子をアドレス指定するのに使用されてもよいが、本実施形態は、第２メモリ素子をアドレス指定するためにカウンタ２６を示す。
【００９８】
本実施形態の係数生成プログラムは、さらに、第１メモリ素子の出力と電気的に通信する加算器４４を含む。加算器４４に接続されるのは、クロスバー４６および第３メモリ素子４８である。係数生成プログラムは、カウンタの出力と接続しているクロスバーおよび論理積ゲート５２と５４と電気的に通信するヌルデバイスまたはプルダウンデバイス５０も含む。
【００９９】
図１１に関して、本実施形態での動作中、サンプルごとに、受信機は信号のサンプルを受け取り、該サンプルを第１メモリ素子２２に入力する（ステップ７００を参照すること）。係数ごとに、入力１８と２０が、カウンタからのサンプル番号および係数の数を表す第２メモリ素子に与えられる（ステップ７１０を参照すること）。入力に基づき、第２メモリ素子は、トークンを出力する（ステップ７２０を参照すること）。第１メモリ素子は、その結果、第２メモリ素子からトークンを、受信機からサンプルの値を受け取る。これらの値に基づき、第１メモリ素子は、係数に対するサンプルの寄与を表す項を生成する（ステップ７３０を参照すること）。項は次に、やはり第３メモリ素子４８から係数の過去の値を受け取る加算器４４に提供される。また、第３メモリ素子は、第２メモリ素子に接続される。第２メモリ素子からのトークンが、その結果、項に追加するために出力される第３メモリ素子に記憶される係数をアドレス指定する。項は、加算器によって既存の係数に加算される（ステップ７４０を参照すること）。
【０１００】
係数が更新された後、係数生成プログラムは、次に、最後のサンプルが処理されたかどうかを判断する（ステップ７５０を参照すること）。特に、論理積ゲート５２は、サンプル番号を示す、カウンタの６個の最上位ビットに接続される。サンプル番号が集合の最後のサンプル番号である場合（このケースでは６４番目のサンプル）、カウンタの６個の最上位ビットはすべて１だろう。すべての１が論理積ゲート５２に入力されると、論理席ゲートは、最後のサンプルが受け取られたことを示す１を出力する。
【０１０１】
最後のサンプルが受け取られていない場合、クロスバー４６が、加算器４４から、更新された係数が記憶される第３メモリ素子４８に更新された係数を向ける（ステップ７６０を参照すること）。ヌルデバイスまたはプルダウンデバイス５０は、係数が計算されていないことを示す出力でゼロを出力する。
【０１０２】
他方、最後のサンプルが受け取られている場合、クロスバー４６が、更新された係数を加算器４４から出力に向ける（ステップ７７０を参照すること）。さらに、ヌルデバイスまたはプルダウンデバイス５０は、クロスバーによってゼロに向けられるか、あるいはリセットとして第３メモリ素子に記憶される値をゼロまたは無にする。さらに、論理積ゲート５４は、ゼロの代わりに、係数値出力は有効な値であることを示す。
【０１０３】
前記ステップは、係数のすべてがサンプルで更新されるまで係数ごとに繰り返される（ステップ７８０と７９０を参照すること）。さらに、すべてのサンプルが受け取られ、各係数が更新されるまで、プロセスは各サンプルに繰り返される（ステップ７９５を参照すること）。
【０１０４】
図１１は、本発明の別の態様も示す。特に、１つの実施形態では、本発明の係数生成プログラムは複数の信号チャネルに接続され、その結果、係数生成プログラムは、各チャネルに位置する信号を表す関数に関して係数を特定する。この実施形態では、カウンタは係数生成プログラムが現在信号を処理しているチャネルを示すカウント値も出力する。チャネル番号および係数の数が、行５６と５８で出力される。係数生成プログラムは、前記実施形態と同様に動作する。特に、係数生成プログラムは最初に、それがサンプルを受取り、第１チャネルと関連付けられる係数を更新する第１チャネルに接続される。係数生成プログラムは、各チャネルに移動し、サンプルを受け取り、そのチャネル乗の信号と関連付けられる係数を更新する。これは、すべてのチャネルのサンプルのすべてが受け取られ、各チャネル上の信号の係数が更新されるまで繰り返される。別の実施形態では、係数生成プログラムは、次のチャネルに切り替わる前に、１つのチャネルに関してすべてのサンプルを受取り、処理してよい。
【０１０５】
前述されたように、冗長な値を排除し、値の規模だけを記録し、正負符号または値がゼロであるかどうかを指定するためにトークンを使用することによって、記憶されなければならないデータの量を削減することが有利な場合がある。そのこと自体、図１３は、記憶されなければならない値の量を削減するためにゲートが増設される図１１の係数生成プログラムを示す。特に、前記実施形態に類似して、本実施形態の係数生成プログラム１０は、第１メモリ素子と第２メモリ素子２２と２４を含む。メモリ素子の両方とも、値を記憶するためのセルのアレイを含む。第２メモリ素子は、係数とサンプル番号を表すトークンを含み、第１メモリ素子は、各サンプルと係数の直交関数部分と結合されるサンプルの考えられる一意の値のすべてを含む。任意のシステムまたはデバイスが第２メモリ素子をアドレス指定するために使用されてよいが、本実施形態は、第２メモリ素子をアドレス指定するためのカウンタ２６を示す。
【０１０６】
本実施形態の係数生成プログラムは、さらに、第１メモリ素子の出力と電気的に通信する加算器４４を含む。加算器４４に接続されるのは、クロスバーまたはセレクタ４６、および第３メモリ素子４８である。係数生成プログラムは、クロスバー、およびカウンタの出力に接続されている否定積ゲート５２と論理積ゲート５４と電気的に通信するヌルデバイスまたはプルダウンデバイス５０も含む。
【０１０７】
さらに、本実施形態の係数生成プログラムは、第１論理積ゲート２８、第２論理積ゲート３０、およびＸＯＲゲート３２も含む。第２論理積ゲート３０の出力に接続されるのは、典型的には信号の２の補数を取るために実現される加算器３６である。ＸＯＲゲート３２は、第２メモリ素子の出力およびゲート組み合わせ４０と電気的に通信する。本実施形態の係数生成プログラムは、第１メモリ素子の出力と電気的に通信するヌルデバイスまたはプルダウン３４も含む。
【０１０８】
係数生成プログラムは、必要な場合に入力信号を、値を表す１１ビットおよび正負符号の１ビットを有する１２ビット値に変換するために受信機１２と電気的に通信するコード変換器３８も含む。本実施形態の係数生成プログラムは、第１メモリ素子に記憶される値をアドレス指定するために第２メモリ素子に記憶される６ビットトークンも使用する。前記実施形態でのように、トークンは、第２論理積ゲート３０および加算器３６とともに動作し、トークンの正負符号ビットが値の負を示す場合、第１メモリ素子の出力の負を取る。さらに、ヌルデバイスまたはプルダウンデバイス３４、およびトークンのゼロビットは、トークンが、値がゼロでなければならないことを示す場合に、第１メモリデバイスの出力をゼロまたは無にするために動作する。
【０１０９】
依然としてさらに、係数生成プログラムは、入力信号をラッチするための第１の６０ラッチおよび出力係数値をラッチして外すための第２ラッチ６２を含む。係数生成プログラムは、信号の逆関数の係数を特定するために係数生成プログラムを使用するための入力４４およびゲートの組み合わせ４０も含む。さらに、係数生成プログラムは、メモリをリセットするためのリセットデバイス６４を含み、係数およびチャネル番号を出力するために５６と５８を出力する。
【０１１０】
図１４に関して、本実施形態の動作中、サンプルごとに、受信機は信号のサンプルを受け取り、該サンプルを第１メモリ素子２２に入力する（ステップ８００を参照すること）。係数ごとに、入力１８と２０は、サンプル番号および係数の数を表す第２メモリ素子に提供される（ステップ８１０を参照すること）。入力に基づき、第２メモリ素子は、サンプルと係数の数を表す４ビット、値が負であるかどうかを表す１ビット、および値がゼロであるかどうかを表す１ビットを有するトークンを出力する（ステップ８２０を参照すること）。第１メモリ素子は、その結果、第２メモリ素子からトークンを、受信機からサンプルの値を受け取る。これらの値に基づき、第１メモリ素子は、係数に対するサンプルの寄与を表す項を生成する（ステップ８３０を参照すること）。
【０１１１】
さらに、サンプルの正負符号ビットおよびトークンの正負符号ビットの出力は、第２論理積ゲート３０に供給される。信号の正負符号が負であるか、あるいはトークンの正負符号ビットが設定されているかのどちらかの場合、第２論理積ゲートは桁上げビットを加算器３６に出力する。加算器は、第１メモリ素子の出力を負にするだろう（ステップ８４０と８５０を参照すること）。
【０１１２】
同様に、トークンおよび信号は、ともに第１論理積ゲート２８に提供される。信号またはトークンのどちらかがゼロ値を示す場合、ゼロ値は第１論理積ゲート２８によって出力されるだろう。ゼロ値が第２論理積ゲート３０に送信され、それが第２論理積ゲート３０が信号を負にするのを禁止する。さらに、ゼロ値は第１メモリ素子に出力され、それが第１メモリ素子をディスエーブルする。第１メモリ素子がディスエーブルされるため、ヌルデバイスまたはプルダウンデバイス３４が、係数の値を表すゼロ値を出力する（ステップ８６０と８７０を参照すること）。それから、係数の項が出力される。
【０１１３】
次に項は、やはり第３メモリ素子４８から係数の過去の値を受け取る加算器４４に提供される。第３メモリ素子は第２メモリ素子にも接続される。第２メモリ素子からのトークンは、その結果、項を追加するための加算器に出力される第３メモリ素子に記憶される係数をアドレス指定する。項は、加算器によって既存の係数に追加される（ステップ８８０を参照すること）。
【０１１４】
係数が更新された後、係数生成プログラムは、次に、最後のサンプルが処理されたかどうかを判断する（ステップ９００を参照すること）。特に、論理積ゲート５２は、サンプル番号を示すカウンタの６個の最上位ビットに接続される。サンプル番号が集合の最後のサンプル番号である場合（このケースでは６４番目のサンプル）、カウンタの６個の最上位ビットはすべて１だろう。すべての１が論理積ゲート５２に入力されると、論理席ゲートは、最後のサンプルが受け取られたことを示す１を出力する。
【０１１５】
最後のサンプルが受け取られていない場合、クロスバーまたはセレクタ４６が、更新された係数を加算器４４から、更新された係数が記憶される第３メモリ素子４８に向ける（ステップ９００を参照すること）。ヌルデバイスまたはプルダウンデバイス５０も、係数が計算されていないことを示す出力でゼロを出力する。
【０１１６】
他方、最後のサンプルが受け取られている場合、クロスバー４６は更新された係数を加算器４４から出力に向ける（ステップ９１０を参照すること）。さらに、ヌルデバイスまたはプルダウンデバイス５０は、クロスバーによってゼロに向けられるか、あるいは第３メモリ素子に記憶される値をリセットとしてゼロまたは無にする。さらに、論理積ゲート５４は、出力された係数値が、ゼロの代わりに係数値であることを示す。
【０１１７】
前記ステップは、係数のすべてがサンプルで更新されるまで、係数ごとに繰り返される（ステップ９２０と９３０を参照すること）。さらに、プロセスは、すべてのサンプルが受け取られ、各係数が更新されるまでサンプルごとに繰り返される（ステップ９４０を参照すること）。
【０１１８】
さらに、第１ラッチと第２ラッチ、６０と６２は、クロックサイクルに基づいて係数を出力し、新しいサンプルを受け取るように、カウンタと同期される。さらに、リセットデバイス６４はメモリをリセットする。
【０１１９】
前記に詳説されたように、本発明の装置、方法およびコンピュータプログラム製品は、複数のサンプルを処理し、サンプルに基づいて関数の係数を生成する。本発明のいくつかの実施形態では、複数のサンプルが受け取られた後、本発明の装置、方法およびコンピュータプログラム製品は、生成された係数を出力し、係数をリセットし、再び信号のサンプルを採取する。しかしながら、それぞれの新しいサンプルが受け取られ、処理されるときに係数の完全な集合を生成し、出力することが有利である実施形態もある。これが、スライド式アパーチャフーリエ変数（ＳＡＦＴ）と呼ばれる。
【０１２０】
この実施形態では、本発明の装置、方法およびコンピュータプログラム製品は、複数のサンプルの最後のサンプルが受け取られ、係数が出力された後に、係数のそれぞれをゼロにリセットしない。代わりに、本発明の装置、方法、およびコンピュータプログラム製品は、過去の複数のサンプルの第１サンプルを次に受け取られるサンプルで置換する。この新しいサンプルを使用すると、本発明の装置、方法およびコンピュータプログラム製品は係数の次の集合を出力する。そのこと自体、サンプルの各「バッチ」に係数の集合を生成する代わりに、本発明の装置、方法、およびコンピュータプログラム製品は、新しいサンプルが受け取られるたびに係数の集合を生成し、それによってサンプルが受け取られるたびに係数の新しい集合を提供する。
【０１２１】
本発明は、新しいサンプルが受け取られるたびに、係数の集合を生成するための装置、方法、およびコンピュータプログラム製品を提供する。これらの実施形態のそれぞれで、本発明の装置、方法およびコンピュータプログラム製品は、過去の複数のサンプルの第１サンプルの寄与を、次に受け取られるサンプルの寄与で置換してから、新しい係数を出力する。例えば、１つの実施形態では、本発明の装置、方法およびコンピュータプログラム製品は、最初に、それらが受け取られるときにサンプルのそれぞれを記憶し、複数のサンプルの最後のサンプルが受け取られると、係数の第１集合を生成する。さらに、入力信号の新しいサンプルが受け取られると、（所定の複数のサンプルがすでに受信された後に）、本発明の装置、方法およびコンピュータプログラム製品は、係数と関連付けられた数学関数を新しいサンプルに適用し、係数ごとに新しいサンプルに基づいた項を生成する。新しいサンプルを複数のサンプルの第１サンプルで置換するために、新しいサンプルの生成された項が、メモリデバイスに過去に記憶されていた所定の複数のサンプルの第１サンプルと関連付けられる項から差し引かれる。この減算に続き、係数は、新しいサンプルに基づいた項と、所定の複数のサンプルの第１サンプルの間の差異によって更新される。
【０１２２】
本発明の別の実施形態では、新しいサンプルを複数のサンプルの第１サンプルで置換するために、本発明の装置、方法およびコンピュータプログラム製品は、所定の複数のサンプルの第１サンプルに基づいた項を係数のそれぞれから差し引き、新しいサンプルに基づいた項を係数のそれぞれに加算する。そのこと自体、１つの実施形態では、新しいサンプルおよび最も旧いサンプルの項が最初に互いから差し引かれ、残りが係数に追加されるが、別の実施形態では、最も旧いサンプルと関連付けられる項は各係数から差し引かれ、新しいサンプルに関連付けられた項が係数に加算される。この第２実施形態は、典型的には、さらに少ない演算上のドリフトを経験し、図１５に示される。
【０１２３】
特に、図１５の係数生成プログラム１０は、図１３に示され、記述されている係数生成プログラムの構成要素のすべてを含む。しかしながら、図１５の係数生成プログラムは、さらに、複数のサンプルの各サンプルと関連付けられる項を記憶するための第３メモリ素子４８と電気的に通信する第４メモリ素子６６を含む。係数生成プログラムは、さらに、新規に受け取られたサンプルに関連付けられた項から、過去の複数のサンプルの第１サンプルと関連付けられた項を差し引くための第３メモリ素子と第４メモリ素子と電気的に通信する加算機６８を含む。
【０１２４】
図１６に関して、本実施形態での動作中、過去の実施形態と同様に、サンプルごとに、受信機は信号のサンプルを受け取り、該サンプルを第１メモリ素子２２に入力する（ステップ１０００を参照すること）。係数ごとに、入力１８と２０が、サンプル番号および係数の数を表す第２メモリ素子に提供され（ステップ１０１０を参照すること）、入力に基づき、第２メモリ素子がトークンを出力する（ステップ１０２０を参照すること）。トークンおよびサンプルに基づき、第１メモリ素子は、係数に対するサンプルの寄与を表す項を生成する（ステップ１０３０を参照すること）。
【０１２５】
信号の正負符号が負であるか、あるいはトークンの正負符号ビットが設定されるどちらかの場合、第２論理積ゲートは桁上げビットを加算器３６に出力する。加算器は、第１メモリ素子の出力を負にするだろう（ステップ１０４０と１０５０を参照すること）。同様に、信号またはトークンのどちらかがゼロ値を示す場合、ゼロ値は、第１論理積ゲート２８によって出力される。ゼロ値が第１メモリ素子に出力されると、それは第１メモリ素子をディスエーブルする。第１メモリ素子のディスエーブルのため、ヌルデバイスまたはプルダウンデバイス３４が、係数の値を表すゼロ値を出力する（ステップ１０６０と１０７０を参照すること）。ゼロのケースでは、符号は無視される。それから、係数の項が出力される。
【０１２６】
項は、次に、第３メモリ素子４８から係数の過去の値も受け取る加算器４４に提供される。第３メモリ素子は第２メモリ素子にも接続される。第２メモリ素子からのトークンは、その結果、項に加算するために加算器に出力される第３メモリ素子に記憶される係数をアドレス指定する。項は、加算器によって既存の係数に加算される（ステップ１０８０を参照すること）。
【０１２７】
第４メモリ素子も第２メモリ素子に接続される。第２メモリ素子からのトークンは、複数のサンプル（つまり、最も旧いサンプル）の第１サンプルと関連付けられた項を表す、第４メモリ素子に記憶される項をアドレス指定する。項は、項が更新された係数から差し引かれる加算器６８に提供される（ステップ１０９０を参照すること）。新しいサンプルに関連付けられる項は、第４メモリ素子に記憶され（ステップ１１００を参照すること）更新された係数は第３メモリ素子に記憶され（ステップ１１１０を参照すること）、出力もされる（ステップ１１２０を参照すること）。前記ステップは、係数のすべてがサンプルで更新されるまで、係数ごとに繰り返される（ステップ１１３０と１１４０を参照すること）。
【０１２８】
前記の実施形態のいくつかに示されるように、本発明の装置、方法、およびコンピュータプログラム製品は、本発明がチャネル上で信号を表す関数のチャネル係数ごとに生成するチャネルの級数のために並列で使用されてよい。前記に詳説されたように、本発明は、受取り時に各サンプルを、サンプルと係数に関連付けられる数学関数と結合することにより、信号を表す関数の係数を特定する。さらに、前記に詳説されたように、サンプルと係数の異なる組み合わせは、事前に計算され、アドレス指定可能メモリ素子に記憶されてよいか、あるいはトークンに関連付けられた値に関してゲート制御関数によって計算されてよい。典型的には、メモリ素子のセルをアドレス指定するトークンは、係数とサンプルを示すカウンタから得られる状態情報から引き出される。通常の動作中、トークンおよびメモリ素子は、信号を表す関数の係数を特定するために使用されるが、これらのトークンおよびメモリ素子は、適切な場所にあるビットをカウンタに追加することによって繰り返し使用されてよく、このようにして非常に多数のチャネルにサービスを提供する。この実施形態では、追加係数メモリセルが追加係数を維持し、チャネル番号がユーザに対する便宜として出力されてよい。順方向係数を確定するため、あるいは入力の逆関数を確定するために電気信号を利用することは依然として可能である。
【０１２９】
さらに、通常の動作中、トークンおよびメモリ素子は、信号を表す関数の係数を確定するために使用され、これらのトークンおよびメモリ素子は、適切な場所にあるカウンタにビットを追加することにより繰り返し使用されてよく、このようにして非常に多数のチャネルにサービスを提供する。本実施形態では、追加の係数メモリセルが追加係数を維持し、チャネル番号はユーザにとっての便宜として出力されてよい。異なるチャネルとして連続サンプルを処理させることによって、このようにしてインタリーブされた変換を生じさせることが可能である。インタリーブされた変換は、例えば、２次元変換を作成するために第２の類似するプロセスに送信されてよい。
【０１３０】
前記に詳説されたように、本発明の装置、方法およびコンピュータプログラム製品は、関数の係数を確定するだけではなく、逆関数の係数も確定することができる。これは、トークンのアドレスを切り替えることによって多くの例で達成され、その結果トークンは、逆関数を表す値をアドレス指定する。係数生成プログラムが複数のチャネルとともに使用される例では。係数生成プログラムは、別個のチャネル用の別の信号の逆関数の係数も提供しつつ、あるチャネルのために、それが１つの信号を表す関数の係数を提供するように有利に制御されてよい。
【０１３１】
前記に示された多様な実施形態に詳説されたように、本発明の装置、方法およびコンピュータプログラム製品は、各サンプルが受け取られると各係数を更新する。さらに、いくつかの実施形態では、本発明の装置、方法およびコンピュータプログラム製品は、新しいサンプルが受け取られるたびに、係数を出力する。これは、それが重要な個々の係数を観察、および追跡調査できるようにするために有利である。重要な個々の係数は、これらの係数を出力するために係数生成プログラムを制御することによって追跡調査されてよい。これは、ユーザに、遵守（ｏｂｓｅｒｖａｎｃｅ）のためにリアルタイムまたはほぼリアルタイムで係数の新しい集合を与える。
【０１３２】
追加の優位点とは、係数がさまざまな分解能で更新することもできるという点である。特に、すべての係数が適切に処理、記憶できるわけではないように、係数のいくつかはさらに重要であるか、あるいは限られたハードウェアリソースがある。これらの例では、係数生成プログラムは、一定の係数を更新するため、あるいは各サンプルでいくつかの係数を更新するためだけに制御することができるが、あまり重要ではない係数は少ない数のサンプルで更新される。
【０１３３】
装置および方法を提供することに加え、本発明は、入力信号の所定の複数のサンプルに基づき、入力信号を表す関数の係数を特定するためのコンピュータプログラム製品も提供する。コンピュータプログラム製品は、媒体内に実現されるコンピュータ読取り可能プログラムコード手段を有するコンピュータ読取り可能記憶媒体を有する。コンピュータ読取り可能記憶媒体は、係数生成プログラムを置換し、係数生成プログラムの機能をソフトウェアを通して実行してよい。さらに、コンピュータ読取り可能媒体は、係数を特定するためのアドレスを提供することにより係数生成プログラムを制御してよい。
【０１３４】
コンピュータ読取り可能プログラムコード手段は、一度に１つずつサンプルのそれぞれを受け取るための第１コンピュータ命令手段を含む。さらに、コンピュータ読取り可能プログラムコード手段は、すべてのサンプルの受取りを待機せずに、サンプルが受け取られると、各サンプルに基づく関数の係数を更新するための第２コンピュータ命令手段を含み、それによって関数の係数を特定するために必要とされる待ち時間を短縮する。さらなる実施形態では、各係数は、サンプルと数学関数の組み合わせに少なくとも部分的に基づく少なくとも１つの項から構成される。本実施形態では、コンピュータ読取り可能プログラムコード手段は、さらに、受取り時に各サンプルを、サンプルと係数に関連付けられた数学関数と結合することにより、各係数のそれぞれの項を特定するための第３コンピュータ命令手段を含む。依然として別の実施形態では、各サンプルは各係数の１つの項に寄与するだけである。本実施形態では、第２コンピュータ命令手段は、サンプルがそれ以降記憶されるのを必要とせずに、受取り時に各サンプルに基づき係数のそれぞれの更新する。
【０１３５】
本発明は、関数の考えられる数学項を表すために記憶されなければならない値の数を削減するためのコンピュータプログラム製品も提供する。この実施形態では、コンピュータプログラム製品は、媒体内で実現されるコンピュータ読取り可能プログラムコード手段を有するコンピュータ読取り可能記憶装置媒体を含む。コンピュータ読取り可能プログラムコード手段は、関数のすべての考えられる数学項の第１リストを作成するための第１コンピュータ命令手段を含む。第２コンピュータ命令手段は、リスト中の各数学項を、リスト中のその他のすべての数学項に規則正しく比較し、数学項の内のどれが冗長であるのかを判断する。コンピュータ読取り可能プログラムコードは、関数の一意の数学項のすべてを第２リストの中に記憶するための第３コンピュータ命令手段も含み、その結果、第２リストの中には関数の冗長な数学項はない。
【０１３６】
本発明の１つの実施形態では、関数は周期的で、ゼロの回りで対称的であり、その結果、関数の数学項のいくつかは同じ規模および異なる正負符号を有する。本実施形態では、第２コンピュータ命令手段は、リスト中の各数学項の規模を、リスト中の他の数学項のそれぞれの規模に比較し、数学項の内のどれが同じ規模を有するのかを判断する。さらに、第３コンピュータ命令手段は、一意の規模を有する数学項のすべてを第２リストの中に記憶する。本実施形態のコンピュータ読取り可能プログラムコード手段は、さらに、各数学項と関連付けられたトークンを作成するための第４コンピュータ命令手段を含み、トークンは数学項に関連付けられる第２リストの中に記憶される規模および数学項に関連付けられる正負符号を示す。
【０１３７】
別の実施形態では、数学項の少なくとも１つはゼロという規模を有する。本実施形態では、コンピュータ読取り可能プログラムコード手段は、さらに、前記記憶ステップが第２リストに数学項を記憶しないように、数学項がゼロであることを示す数学項に関連付けられるトークンを作成するための第４コンピュータ命令手段を含む。
【０１３８】
いくつかの実施形態では、コンピュータ読取り可能プログラムコード手段は、さらに、第２リスト中の数学項のそれぞれをアドレス指定する第４コンピュータ命令手段を含み、その結果、数学項は検索されてよい。さらなる実施形態では、関数は、信号を表し、信号のサンプルによって定義され、信号のサンプルは有限数の考えられる値の内の１つである。本実施形態では、第１コンピュータ命令手段が、サンプルの考えられる値と関数の数学項のすべての考えられる組み合わせの第１リストを作成する。さらに、第２コンピュータ命令手段は、リスト中の各組み合わせを、リスト中の他のすべての組み合わせに規則正しく比較し、組み合わせのどれが冗長であるのかを判断し、第３コンピュータ命令手段は、一意の組み合わせのすべてを第２リストに記憶し、その結果、第２リスト中に冗長な組み合わせはない。
【０１３９】
関数の係数を生成するコンピュータプログラム製品、および記憶される値の数を削減するコンピュータプログラム製品を提供することに加え、本発明は、回路設計を生成するコンピュータプログラム製品、または最後のサンプルの受取り前に、係数の少なくとも１つを更新することによって関数の係数を確定するコンピュータプログラムも提供する。特に、技術で既知であるように、パラメータによって定義される関数を実現するために指定されたパラメータの入力に対処し、回路設計またはコンピュータソフトウェアを出力するコンピュータプログラムがある。本発明は、システムによって実行される関数に関するパラメータを受け取るコンピュータプログラム製品を提供し、関数を実現するための回路設計またはコンピュータプログラムのどちらかを生成する。例えば、１つの実施形態では、コンピュータプログラム製品は、関数のすべての考えられる数学項を受け取り、縮小されたハードウェアまたは削減されたデータ記憶域で、関数の係数を生成するためにすべての考えられる数学項を使用する回路またはコンピュータプログラムのどちらかを生成する。
【０１４０】
この点で、図１から図１６は、本発明に従った方法、システムおよびプログラム製品のブロック図、フローチャートおよび制御フロー図である。ブロック図、フローチャートおよび制御フロー図の各ブロックまたはステップ、およびブロック図、フローチャートおよび制御フロー図のブロックの組み合わせは、コンピュータプログラム命令によって実現できる。これらのコンピュータプログラム命令は、コンピュータまたは機械を生産するためのその他のプログラム可能装置にロードされてよく、その結果コンピュータまたはその他のプログラム可能装置で実行する命令が、ブロック図、フローチャート、または制御フローブロック（複数の場合がある）またはステップ（複数の場合がある）に指定される関数を実現するための手段を作成する。また、これらのコンピュータプログラム命令は、特定の方法でコンピュータまたはその他のプログラム可能装置に機能するように命令することができるコンピュータ読取り可能目盛りに記憶されてよく、その結果、コンピュータ読取り可能メモリに記憶される命令は、ブロック図、フローチャート、または制御フローブロック（複数の場合がある）またはステップ（複数の場合がある）に指定される関数を実現する命令手段を含む製造の製品を生産する。コンピュータプログラム命令は、コンピュータまたはその他のプログラム可能装置の上にもロードされてよく、一連の操作ステップをコンピュータまたはその他のプログラム可能装置上で実行させ、コンピュータまたはその他のプログラム可能装置上で実行する命令が、ブロック図、フローチャートまたは制御フローブロック（複数の場合がある）またはステップ（複数の場合がある）に指定される関数を実現するためのステップを提供するように、コンピュータによって実現されるプロセスを作成する。
【０１４１】
その結果、ブロック図、フローチャート、または制御フロー図のブロックまたはステップは、指定された機能を実行するための手段の組み合わせ、指定された機能を実行するためのステップの組み合わせ、および指定された機能を実行するためのプログラム命令手段をサポートする。また、ブロック図、フローチャート、または制御フロー図の各ブロックまたはステップ、およびブロック図、フローチャート、または制御フロー図のブロックまたはステップの組み合わせは、指定された機能またはステップ、または特殊目的ハードウェアおよびコンピュータ命令の組み合わせを実行する特殊目的ハードウェアベースのコンピュータシステムによって実現できることも理解されるだろう。
【０１４３】
付録１
標準フーリエ級数を計算するプログラムの例
【数３】
0004083387.tif 000004
【０１４４】
【数４】
0004083387.tif 000005
【０１４５】
付録２
本発明の１つの実施形態に従って高速フーリエ級数を計算するプログラムの例
すべての計算はサンプル単位で実行され、１つのレジスタが各係数専用とされ、各連続サンプルで更新される。
【数５】
0004083387.tif 000006
【０１４６】
【数６】
0004083387.tif 000007
【０１４７】
【数７】
0004083387.tif 000008
【０１４８】
【数８】
0004083387.tif 000009
【図面の簡単な説明】
【図１】  図１は、本発明の１つの実施形態に従って、ゲートデバイスを使用して入力信号のサンプルに基づいた入力信号を表す関数の係数を確定するための装置のブロック図である。
【図２】  図２は、本発明の１つの実施形態に従って、入力信号のサンプルに基づく入力信号を表す関数の係数を確定するために実行される動作のブロック図である。
【図３】  図３は、本発明の１つの実施形態に従って、少なくとも１つのメモリ素子を使用して入力信号のサンプルに基づく入力信号を表す関数の係数を確定するための装置のブロック図である。
【図４】  図４は、本発明の１つの実施形態に従って、関数の考えられる数学項を表すために記憶されなければならない値の数を削減するために実行される動作のブロック図である。
【図５】  図５は、フーリエ変換を使用して確定される係数のプロットの図表記である。
【図６】  図６は、各トークンが本発明の１つの実施形態に従って関数な対を表す、トークンのテーブルを作成するために実行される動作のブロック図である。
【図７】  図７は、本発明の１つの実施形態に従ってアドレス指定可能な値のテーブルを作成するために実行される動作のブロック図である。
【図８】  図８は、本発明の１つの実施形態に従ってトークンに基づくテーブルから値を検索するために実行される動作のブロック図である。
【図９】  図９は、本発明の１つの実施形態に従ってメモリ素子およびゲートを使用して入力信号のサンプルに基づく入力信号を表す関数の係数を確定するための装置のブロック図である。
【図１０】  図１０は、本発明の１つの実施形態に従って、メモリ素子およびゲートを使用して、入力信号のサンプルに基づく入力信号を表す関数の係数を確定するために実行される動作のブロック図である。
【図１１】  図１１は、本発明の１つの実施形態に従って、入力信号の複数のサンプルに基づく入力信号を表す関数の係数を確定するための装置のブロック図である。
【図１２】  図１２は、本発明の１つの実施形態に従って、入力信号の複数のサンプルに基づく入力信号を表す関数の係数を確定するために実行される動作のブロック図である。
【図１３】  図１３は、本発明の１つの実施形態に従って、メモリ素子およびゲートを使用して入力信号の複数のサンプルに基づく入力信号を表す関数の係数を確定するための装置のブロック図である。
【図１４】  図１４は、本発明の１つの実施形態に従って、メモリ素子およびゲートを使用して入力信号の複数のサンプルに基づく入力信号を表す関数の係数を確定するために実行される動作のブロック図である。
【図１５】  図１５は、受け取られたサンプルごとに、本発明の１つの実施形態に従って、係数の集合が出力される、メモリ素子およびゲートを使用して入力信号の複数のサンプルに基づく入力信号を表す関数の係数を確定するための装置のブロック図である。
【図１６】  図１６は、受け取られたサンプルごとに、本発明の１つの実施形態に従って、係数の集合が出力される、メモリ素子およびゲートを使用して入力信号の複数のサンプルに基づく入力信号を表す関数の係数を確定するために実行される動作のブロック図である。
【図１】
0004083387.tif 000010
【図２】
0004083387.tif 000011
【図３】
0004083387.tif 000012
【図４】
0004083387.tif 000013
【図５】
0004083387.tif 000014
【図６】
0004083387.tif 000015
【図７】
0004083387.tif 000016
【図８】
0004083387.tif 000017
【図９】
0004083387.tif 000018
【図１０】
0004083387.tif 000019
【図１１】
0004083387.tif 000020
【図１２】
0004083387.tif 000021
【図１３】
0004083387.tif 000022
【図１４】
0004083387.tif 000023
【図１５】
0004083387.tif 000024
【図１６】
0004083387.tif 000025