JP4313803B2 - 行列における数値分解方法 - Google Patents

行列における数値分解方法 Download PDF

Info

Publication number
JP4313803B2
JP4313803B2 JP2006086017A JP2006086017A JP4313803B2 JP 4313803 B2 JP4313803 B2 JP 4313803B2 JP 2006086017 A JP2006086017 A JP 2006086017A JP 2006086017 A JP2006086017 A JP 2006086017A JP 4313803 B2 JP4313803 B2 JP 4313803B2
Authority
JP
Japan
Prior art keywords
matrix
storage unit
column
value
row
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2006086017A
Other languages
English (en)
Other versions
JP2007264788A (ja
Inventor
聞杰 姜
聡 相河
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2006086017A priority Critical patent/JP4313803B2/ja
Publication of JP2007264788A publication Critical patent/JP2007264788A/ja
Application granted granted Critical
Publication of JP4313803B2 publication Critical patent/JP4313803B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Complex Calculations (AREA)

Description

本発明は、数値計算分野における行列のQR分解計算方法に属し、あらゆるデジタル信号処理分野(例えば、デジタル通信,画像処理,音声処理,ソナーシステム,レーザシステムなど)において、ある行列Hを、行列Qと上三角行列Rとの2つに分解することに適用する行列における数値分解方法に関する。
数値計算の分野において、行列Hを、行列Qと上三角行列Rとの2つに分解する計算アルゴリズムがあり、その計算イメージを図Xに示す。
図7において、従来のQR分解アルゴリズムにより、以下に示す(1)式に基づき、行列Hを行列Qと上三角行列Rとの2つの行列に分解される。ここで、行列HはR行,T列の行列を表し、行列QはR行,T列の行列を表し、上三角行列RはT行,T列の行列を表している。
Figure 0004313803
上記(1)式に示すように、行列Q及び三角行列Rに分解するアルゴリズムとして、Classical Gram-Schmidt QR分解法,Modified Gram-Schmidt QR分解法,Householder QR分解法,Given QR分解法などがある(例えば、非特許文献1参照)。
Gene H.Golub, Charles F.Van Loan、Matrix Computations Third Edition. Hohns Hopkins published
しかしながら、非特許文献1に示すQR分解方法にあっては、GRアルゴリズムにおける行列のQR分解の繰り返しにより行われるため、所要処理演算量が大きいという問題がある。
また、従来例にあっては、アルゴリズムを実際の物理的な回路により実現する場合、回路規模が上記所要処理演算量に比例するため、必要な回路規模も大きくなり、装置を小型化することが困難である。
また、従来例にあっては、上述したように、回路規模が大きくなることにより、消費電力も比例して増加することとなり、バッテリで動作する携帯機器等で使用した場合、電力の消耗が早く、長時間使用することができなくなる。
本発明は、このような事情に鑑みてなされたもので、入力される行列G及びHが既知である場合、従来のQR分解のアルゴリズムに比較して、所要処理演算量を少なくし、回路規模を小型化し、消費電力を削減することができるQR分解のアルゴリズムの行列における数値分解方法を提供することを目的とする。
本発明の行列における数値演算方法は、入力される行列Hを行列Qと上三角行列Rとに分解するQR分解を行う数値分解方法であって、初期化手段が、記憶部に記憶されている分解対象である行列H、及び該行列の複素共役転置行列Hと行列Hとを乗算して求めた正方行列Gを入力し、行列Hの各要素を、空行列Qに対して付与して仮の行列Qとし、正方行列Gの上三角部分の各要素を空三角行列Rに対して付与して仮の上三角行列Rとする初期化過程と、行列R演算部が前記記憶部から前記仮の上三角行列Rを読み出し、この仮の上三角行列Rを行ベクトル単位に、上部から下部方向に、各行ベクトルにおける非ゼロ要素のみの部分行列に対して、対応する行ベクトルより下部の要素を所定の割合にて順次減算する演算を行い、算出された行列Rの各行ベクトルを記憶部に記憶する行列R演算過程と、行列Q演算部が前記記憶部から前記仮の行列Qを読み出し、この仮の行列Qを列ベクトル単位に、列ベクトルの各要素より、所定の列ベクトルの要素を順次減算する演算を行い、算出された行列Qの各列ベクトルを記憶部に記憶する行列Q演算過程と、演算処理部が前記行列R演算過程及び行列Q演算過程を同一の処理ループ内にて行い、この処理ループを行列Hの列数に対応する回数繰り返し、行列Hを分解した行列Q及び上三角行列Rを、記憶部から読み出して出力する演算処理過程とを有することを特徴とする。
本発明の行列における数値演算方法は、入力される行列Hを行列Qと上三角行列Rとに分解するQR分解を行う数値分解方法であって、初期化手段が、記憶部に記憶されている分解対象である行列H、及び該行列の複素共役転置行列Hと行列Hとを乗算して求めた正方行列Gを入力し、行列Hの各要素を、空行列Qに対して付与して仮の行列Qとし、正方行列Gの上三角部分の各要素を空三角行列Rに対して付与して仮の上三角行列Rとする初期化過程と、行列R演算部が前記記憶部から前記仮の上三角行列Rを読み出し、この仮の上三角行列Rを行ベクトル単位に、上部から下部方向に、各行ベクトルにおける非ゼロ要素のみの部分行列に対して、対応する行ベクトルより下部の要素を所定の割合にて順次減算する演算を行い、算出された行列Rの各行ベクトルを記憶部に記憶する行列R演算過程と、行列Q演算部が前記記憶部から前記仮の行列Qを読み出し、この仮の行列Qを列ベクトル単位に、列ベクトルの各要素より、所定の列ベクトルの要素を順次減算する演算を行い、算出された行列Qの各列ベクトルを記憶部に記憶する行列Q演算過程と、演算処理部が前記行列R演算過程及び行列Q演算過程を、各々独立した処理ループ内にて行い、この各処理ループを行列Hの列数に対応する回数繰り返し、行列Hを分解した行列Q及び上三角行列Rを、記憶部から読み出して出力する演算処理過程とを有し、前記演算処理部が行列R演算過程の繰り返しループが終了した後に、行列Q演算過程の繰り返しループを実行することを特徴とする。
本発明の行列における数値演算方法は、入力される行列Hを行列Qと上三角行列Rとに分解するQR分解を行う数値分解方法であって、初期化手段が、記憶部に記憶されている分解対象である行列H、及び該行列の複素共役転置行列Hと行列Hとを乗算して求めた正方行列Gを入力し、行列Hの各要素を、空行列Qに対して付与して仮の行列Qとし、正方行列Gの下三角部分の各要素を空三角行列Rに対して付与して下三角行列Lとする初期化過程と、行列R演算部が前記記憶部から前記仮の下三角行列Lを読み出し、この下三角行列Lを列ベクトル単位に、左端から右端方向に、各列ベクトルにおける非ゼロ要素のみの部分行列に対して演算を行い、算出された行列Lの各列ベクトルを記憶部に記憶する行列L演算過程と、行列R演算部が所定の回数の処理ループの繰り返しの終了の後、前記行列Lを読み出し、この行列Lに対して複素共役転置処理を行い、この演算結果を上三角行列Rとして、記憶部に記憶する複素共役転置処理過程と、行列Q演算部が前記記憶部から前記仮の行列Qを読み出し、この仮の行列Qを列ベクトル単位に、列ベクトルの各要素より、所定の列ベクトルの要素を順次減算する演算を行い、算出された行列Qの各列ベクトルを記憶部に記憶する行列Q演算過程と、演算処理部が前記行列R演算過程及び行列Q演算過程を同一の処理ループ内にて行い、この処理ループを行列Hの列数に対応する回数繰り返し、行列Hを分解した行列Q及び上三角行列Rを、記憶部から読み出して出力する演算処理過程とを有することを特徴とする。
本発明の行列における数値演算方法は、入力される行列Hを行列Qと上三角行列Rとに分解するQR分解を行う数値分解方法であって、初期化手段が、記憶部に記憶されている分解対象である行列H、及び該行列の複素共役転置行列Hと行列Hとを乗算して求めた正方行列Gを入力し、行列Hの各要素を、空行列Qに対して付与して仮の行列Qとし、正方行列Gの下三角部分の各要素を空三角行列Rに対して付与して下三角行列Lとする初期化過程と、行列R演算部が前記記憶部から前記仮の下三角行列Lを読み出し、この下三角行列Lを列ベクトル単位に、左端から右端方向に、各列ベクトルにおける非ゼロ要素のみの部分行列に対して演算を行い、算出された行列Lの各列ベクトルを記憶部に記憶する行列L演算過程と、行列R演算部が所定の回数の処理ループの繰り返しの終了の後、前記行列Lを読み出し、この行列Lに対して複素共役転置処理を行い、この演算結果を上三角行列Rとして、記憶部に記憶する行列R演算過程と、行列Q演算部が前記記憶部から前記仮の行列Qを読み出し、この仮の行列Qを列ベクトル単位に、列ベクトルの各要素より、所定の列ベクトルの要素を順次減算する演算を行い、算出された行列Qの各列ベクトルを記憶部に記憶する行列Q演算過程と、演算処理部が前記行列R演算過程及び行列Q演算過程を、各々異なった処理ループ内にて行い、この各処理ループを行列Hの列数に対応する回数繰り返し、行列Hを分解した行列Q及び上三角行列Rを、記憶部から読み出して出力する演算処理過程とを有することを特徴とする。
上述した本発明のアルゴリズムとしては、複素領域(あるいは実数領域)にある行列Hに対して、行列G=HHが既知であることを前提に、行列Hを行列Qと上三角行列Rとの2つの行列に分解する機能を有している。
すなわち、行列Hを行列Q,Rの2つの行列へ分解する処理において、演算量が大きい、所要回路規模が大きい、消費電力が多いという従来の課題を、分解対象の行列Hのみを用いたアルゴリズムにより解決する。
具体的な実施形態のアルゴリズムとしては、行列Hと行列G(行列Hの複素共役転置行列)とをアルゴリズムの入力とし、T(行列Hの列ベクトルの数)回の巡回(ループ処理)により、H=QRとなる行列Q及び行列Rを生成する。行列Rは列ベクトル毎に上部から下部方向に、また行列Qは列ベクトル毎に左端から右端に向かって順次生成される。
以上説明したように、本発明のアルゴリズムによれば、部分行列毎に行列全体を演算していくため、所要処理演算量が従来アルゴリズム(Classical Gram-Schmidt QR分解法,Modified Gram-Schmidt QR分解法,Householder QR分解法,Given QR分解法など)に比較して少なくなる。
また、本発明のアルゴリズムによれば、QR分解法のための回路を小さい規模で実現できる。すなわち、回路規模は所要演算量に比例するため、従来例に比較して演算量が少なくなるため、行列のQR分解の所要回路規模も従来に比較して小さくなり、従来装置に比較して小型化を実現できる。
本発明の行列における数値分解方法は、分解対象の行列Hに対する複素共役転置の行列Hを数値演算により求め、行列Hと行列Hとを乗算することにより、正方行列Gを算出し、この行列Hと正方行列Gとを用いて、行列Hを行列Qと上三角行列Rとに分解するアルゴリズである。
すなわち、計算のイメージは、図1に示すような流れで行われ、行列Aと行列Gとを入力し、以下の(2)式に示すように、行列Rを各行毎に、最上部の行から、最下部の行まで順次算出し、行列Qを各列毎に、左側から右側まで順次算出する。この(2)式において、q(1≦t≦T)は行列Qのt番目の列ベクトルを示しており、r(1≦t≦T)は行列Rのt番目の行ベクトルを示している。
Figure 0004313803
<第1の実施形態>
以下、本発明の第1の実施形態による数値分解システムを図面を参照して説明する。図2は同実施形態による数値分解システムの構成例を示すブロック図である。
第1の実施形態による数値分解システムは、入力部1,初期化部4,行列R演算部5,行列Q演算部6,記憶部7及び演算制御部8を有している。
入力部1は、分解対象のR行,T列の行列H及びT行,T列の正方行列Gが既知の値を、記憶部7に記憶する。すなわち、行列H及び行列G(=HH)が既知であるとし、これらの行列が外部機器から入力されるとして、以下の説明を行う。また、入力部1が入力される行列H及び行列Gを、直接に初期下部4へ出力するようにしてもよい。
初期化部4は、行列R演算部5及び行列演算部6にて用いる仮の行列を設定する。すなわち、初期化部4は、空行列Qに対して、分解対象の行列Hを付与して(行列Hの要素を、空行列Qの対応する要素の位置(行及び列で指定される)に要素のデータを上書きして)、行列Qとし、空行列Rに対して正方行列の上三角行列を付与して(対応する位置に要素のデータを上書きして)、行列Rとして初期化を行う。
行列R演算部5は、設定された数値iにより、記憶部7に記憶されている対応するi行目の行ベクトルR(i,i:T)のデータを読み出すとともに、行列Rの要素rk,iからスカラーrk,i を算出し、以下の(3)式により、新たな行ベクトルを算出して、記憶部7の読み出した位置(すなわちアドレス)に上書きを行い、行ベクトルのデータの変更を行う。
ここで、行ベクトルR(i,i:T)は、i行目の行ベクトルにおけるi番目の列成分からT番目までの列成分までの部分行列を示し、スカラーrk,i は行列Rのk行,i列目の要素の複素共役を示している。すなわち、各列ベクトル単位にて、非ゼロ要素の部分からなる部分行列のみの演算を行っている。
R(i,i:T):=R(i,i:T)−rk,i ・R(i,i:T)…(3)
すなわち、行列R演算部5は、行ベクトルR(i,i:T)に対して、スカラーrk,i を乗算し、乗算結果をこの行ベクトルから減算して、この減算結果を新たな行ベクトルR(i,i:T)として、記憶部7に対して、読み出した位置に上書きする。
このとき、行列R演算部4は、kをインクリメントして、上記(3)式を、1≦k≦i−1の間で繰り返して行う。
また、行列R演算部5は、以下の(4)式に示すように、最終的に得られた行ベクトルR(i,i:T)を記憶部7から読み出し、スカラーrk,iの平方根である(rk,i1/2により除算し、この除算結果を最終的な行ベクトルR(i,i:T)演算結果として、記憶部7に記憶する。このスカラーrk,iは、行列Rのk行番目,i列番目の要素を示している。
R(i,i:T):=R(i,i:T)/(rk,i1/2 …(4)
行列Q演算部6は、設定された数値iにより、記憶部7から行列Qのi番目の列ベクトルQ(:,i)を読み出し、以下の(5)式に示すように、スカラーri,iにより除算し、除算結果を新たな列ベクトルQ(:,i)として、記憶部7において読み出した位置に書き込む。このスカラーは、行列Rにおけるi行,i列目の要素である。
Q(:,i):=Q(:,i)/ri,i …(5)
また、行列Q演算部6は、記憶部7から列ベクトルQ(:,j)を読み出し、以下の(6)式により、新たな列ベクトルQ(:,j)を算出し、記憶部7の読み出した位置に記憶する。ここで、スカラーri,jは、行列Rにおけるi行目,j列目の要素である。
Q(:,j):=Q(:,j)−ri,j・Q(:,i) …(6)
すなわち、行列Q演算部6は、列ベクトルQ(:,i)の要素に対して、スカラーを乗算し、この乗算結果を列ベクトルQ(:,j)から減算し、この減算結果を新たな列ベクトルQ(:,j)として、記憶部7の読み出した位置に書き込み、データの更新を行う。
このとき、行列Q演算部6は、jを初期値i+1とし、処理を1回行う毎にインクリメントしつつ、上記(6)式を、i+1≦j≦Tの間で繰り返して行う。
演算制御部8は、行列R演算部5及び行列Q演算部6における演算処理の順序制御と、各演算部における演算処理の回数の制御、すなわち演算ループの制御とを行っている。
次に、図2及び図3を参照して、第1の実施形態による数値分解システムの動作を説明する。図3は、第1の実施形態の数値分解システムのアルゴリズムにおける各部の処理を示したテーブルであり、(1)〜(11)の処理が順次行われる。ここで、入力部1,複素共役転置行列生成部2及び正方行列生成部3の動作は省略され、行列H及び正方行列Gが各々求められ、すでに記憶部7に記憶されているとする。
処理(1)において、初期化部4は、記憶部7から分割対象の行列Hを読み出し、空行列Qに対し、この行列Hの各要素を、対応する行番号及び列番号で指定される位置に書き込み、すなわち空行列Qに対して行列Hの値を付与し、空行列QをR行,T列の行列とする。
また、初期化部4は、記憶部7から行列Gを読み出し、この行列Gから上三角部分を抽出し、空行列Rの対応する行番号及び列番号で指定される位置に書き込み、すなわち空行列Rに対して行列Gの上三角部分の要素を付与し、行列Rを上三角部分が非ゼロ要素である上三角行列である行列Rとする。
次に、処理(2)において、演算制御部8は、正方行列である行列Rの列数及び行数の数値Tを抽出し、行列R演算回路5と行列Q演算回路6とにおける繰り返し演算回数をTとし、数値iを「1」に初期化して、処理(2)〜処理(11)までの、行列R演算回路5と行列Q演算回路6とにおける演算処理を、数値iが1≦i≦Tの間繰り返して行う。ここで、例えば、1回の処理が終了した後、処理(11)にて数値iをインクリメント(1を加算)し、処理(2)にて数値iが1≦i≦Tの範囲内であるか否かを検出し、範囲内であることを検出した場合、次の処理(3)へ処理を移し、一方、数値iが数値Tを超えたこと(範囲外であること)を検出すると、処理(2)〜処理(11)の演算ループ(行列分割の演算ループ)を終了し、その時点で記憶部7に記憶されている行列R及び行列Qを、それぞれ行列Hを分解した上三角行列Rと行列Qとして出力する。
次に、処理(3)において、行列R演算部5は、演算制御部8から数値iを入力し、数値kを「1」に初期化して、処理(3)〜処理(5)までの演算ループを、数値kが1≦k≦i−1の間繰り返して行い、演算ループ毎に(3)式により、(2)式の最左辺の行ベクトルr〜行ベクトルrの各行ベクトル(部分行列)を、行列の最上部の行ベクトルから最下部の行ベクトルの順に、すなわち行ベクトルrから行ベクトルrの向かい、順に行ベクトルを演算する。ここで、行ベクトルr1は、R(1,1:T)と同様である。
ここで、i=1の場合、1≦k≦i−1が成り立たないため、演算ループには入らず、行列R演算部5は、処理を処理(6)へ移す。すなわち、1行目の行ベクトルrは行列Gの1行目の行ベクトルのままとする。
したがって、数値i=2以降において、行列演算部5は、数値kが1≦k≦i−1の範囲内にあることを検出するため、処理(4)へ処理を進める。
次に、処理(4)において、行列R演算部5は、数値iの示す行ベクトルriにおける部分行列R(i,i:T)を、記憶部7に記憶されている行列Rから読み出す。
そして、行列R演算部5は、この部分行列R(i,i:T)に対し、(3)式の演算を行い、記憶部7における読み出した位置に書き込み、処理を処理(5)へ進める。
次に、処理(5)において、行列R演算部5は、1回の演算ループの毎に数値kをインクリメントし、処理を処理(3)へ進める。
次に、行列R演算部5は、処理(3)にて数値kが1≦k≦i−1の範囲内であるか否かを検出し、範囲内であることを検出した場合、次の処理(4)へ処理を移し、一方、数値kが数値i−1を超えたこと(範囲外であること)を検出すると、処理(3)〜処理(5)の演算ループ(行列R生成の演算ループ)を終了させ、処理を処理(6)へ移す。
次に、処理(6)において、行列R演算部5は、この時点の数値iに対応した行ベクトルにおける部分行列R(i,i:T)を、記憶部7に記憶された行列Rから読み出し、(4)式の演算処理を行い、演算結果を記憶部7の読み出した位置に上書きし、データの変更を行い、処理を処理(7)へ移す。
次に、処理(7)において、行列Q演算部6は、演算制御部8から数値iを入力し、記憶部7に記憶された行列Qから、数値iに対応した列ベクトルqを読み出し、(5)式に示す処理を行い、すなわちスカラーri,iにて列ベクトルqを除算し、この除算結果を記憶部7の読み出した位置に書き込み、データの変更を行い、処理を処理(8)へ進める。
次に、処理(8)において、行列Q演算部6は、数値jを「1」に初期化して、処理を処理(8)へ進める。
以下、行列Q演算部6は、処理(8)〜処理(10)までの演算ループを、数値jがi+1≦j≦Tの間繰り返して行い、演算ループ毎に(3)式により、(2)式の最左辺の列ベクトルq〜行ベクトルqの各列ベクトル(部分行列)を、行列の最右端の列ベクトルから最左端の列ベクトルの順に、すなわち列ベクトルqから列ベクトルqに向かい、順に列ベクトルを演算する。ここで、列ベクトルqjは、Q(:,j)と同様である。
次に、処理(9)において、行列Q演算部6は、i=1の場合、i+1≦j≦Tの範囲として、2≦j≦Tの範囲で、(6)式の処理を行うため、演算ループにおいて、行列Qの第1列目に対して、(7)の処理のみが行われる。すなわち、1行目の列ベクトルqに対して、処理(8)から処理(10)までの処理は行われない。
そして、行列Q演算部6は、数値jの示す列ベクトルr、すなわち部分行列Q(,:j)を、記憶部7に記憶されている行列Qから読み出す。
そして、行列Q演算部6は、この部分行列Q(,:j)に対し、(6)式の演算を行い、記憶部7における読み出した位置に書き込み、処理を処理(10)へ進める。
次に、処理(10)において、行列Q演算部6は、1回の演算ループの毎に数値jをインクリメントし、処理を処理(8)へ進める。
次に、行列Q演算部6は、処理(8)にて数値jがi+1≦j≦Tの範囲内であるか否かを検出し、範囲内であることを検出した場合、次の処理(8)へ処理を移し、一方、数値jが数値Tを超えたこと(範囲外であること)を検出すると、処理(8)〜処理(10)の演算ループ(行列Qの生成の演算ループ)を終了させ、処理を処理(11)へ移す。
<第2の実施形態>
第2の実施形態の数値分解システムは、第1の実施形態と同様の構成をしている。第2の実施形態と第1の実施形態との違いは、演算制御部8の行列R演算部5及び行列Q演算部6の演算順序にある。すなわち、第1の実施形態においては、同一の演算ループ内にて、行列Rを生成する演算ループと行列Qを生成する演算ループとが実行されるアルゴリズムとなっている。
一方、第2の実施形態においては、演算制御部8が、行列Rを生成する演算ループと、行列Qを生成する演算ループとを、順番に、それぞれ独立に制御し、すなわち、行列Rの生成の演算ループが終了し、分割後の行列Rが求められた後、行列Qの生成の演算ループを開始して行列Qの生成を行い、行列Hが分解された行列R及び行列Q各々の生成を別々に行うアルゴリズムとなっている。
したがって、演算制御部8及び初期化部4以外の他の構成要素(入力部1,行列R演算部5,行列Q演算部6及び記憶部7)の動作は、第2の実施形態においても、第1の実施形態の構成と同様である。
以下、図2及び図4を参照して、第2の実施形態による数値分解システムの動作を説明する。図4は、第2の実施形態の数値分解システムのアルゴリズムにおける各部の処理を示したテーブルであり、(1)〜(13)の処理が順次行われる。ここで、入力部1,複素共役転置行列生成部2及び正方行列生成部3の動作は省略され、行列H及び正方行列Gが各々求められ、すでに記憶部7に記憶されているとする。
処理(1)において、初期化部4は、記憶部7から分割対象の行列Hを読み出し、空行列Qに対し、この行列Hの各要素を、対応する行番号及び列番号で指定される位置に書き込み、すなわち空行列Qに対して行列Hの値を付与し、空行列QをR行,T列の行列とする。
また、初期化部4は、記憶部7から行列Gを読み出し、空行列Rに対し、この行列Gの各要素を、対応する行番号及び列番号で指定される位置に書き込み、すなわち空行列Rに対して行列Gの値を付与し、空行列RをT行,T列の正方行列とする。
次に、処理(2)において、演算制御部8は、正方行列である行列Rの列数及び行数の数値Tを抽出し、行列R演算回路5と行列Q演算回路6とにおける繰り返し演算回数をTとし、数値iを「1」に初期化して、処理(2)〜処理(7)までの、行列R演算回路5における演算処理を、数値iが1≦i≦Tの間繰り返して行う。ここで、例えば、1回の処理が終了した後、処理(7)にて数値iをインクリメント(1を加算)し、処理(2)にて数値iが1≦i≦Tの範囲内であるか否かを検出し、範囲内であることを検出した場合、次の処理(3)へ処理を移し、一方、数値iが数値Tを超えたこと(範囲外であること)を検出すると、処理(2)〜処理(7)の演算ループ(行列R生成の演算ループ)を終了し、その時点で記憶部7に記憶されている行列Rを、行列Hを分解した行列Qとして出力し、処理を処理(8)へ進める。
次に、処理(3)〜処理(6)までの処理は、第1の実施形態における処理(3)〜処理(6)それぞれと同様のため、処理の説明を省略する。
そして、処理(7)において、演算制御部8は、数値iをインクリメント(1を加算)し、処理を処理(2)ヘ進める。
次に、処理(2)において、演算制御部8は、数値iが1≦i≦Tの範囲内であるか否かを検出し、範囲内であることを検出した場合、次の処理(3)へ処理を移し、一方、数値iが数値Tを超えたこと(範囲外であること)を検出すると、この時点における行列Rとして記憶部7へ記憶するとともに、処理を処理(8)へ進める。
次に、処理(8)において、演算制御部8は、R行,T列の行列である行列Qの列数及の数値Tを抽出し、行列Q演算回路6における繰り返し演算回数をTとし、数値iを「1」に初期化して、処理(8)〜処理(13)までの、行列R演算回路5における演算処理を、数値iが1≦i≦Tの間繰り返して行う。ここで、例えば、1回の処理が終了した後、処理(13)にて数値iをインクリメント(1を加算)し、処理(8)にて数値iが1≦i≦Tの範囲内であるか否かを検出し、範囲内であることを検出した場合、次の処理(9)へ処理を移し、一方、数値iが数値Tを超えたこと(範囲外であること)を検出すると、処理(9)〜処理(12)の演算ループ(行列Q生成の演算ループ)を終了し、その時点で記憶部7に記憶されている行列Qを、行列Hを分解した行列Qとして出力し、行列Hの分解処理を終了する。上記、処理(9),(10),(11),(12)各々は、それぞれ第1の実施形態における処理(7),(8),(9),(10)と同様のため、説明を省略する。
すなわち、処理(2)〜処理(7)においては、T回(正方行列Gの行及び列の数に対応した回数)の演算ループにて、行列Rを(2)式の最左辺の行ベクトルrから行ベクトルrまで、順番に演算する。
また、処理(8)〜処理(13)においては、T回(正方行列Gの行及び列の数に対応した回数)の演算ループにて、行列Qを(2)式の最左辺の列ベクトルqから列ベクトルqまで、順番に演算する。
<第3の実施形態>
以下、本発明の第3の実施形態による数値分解システムを図面を参照して説明する。図2は同実施形態による数値分解システムの構成例を示すブロック図である。構成は第1の実施形態と同様であるが各構成の機能が異なっている。
したがって、第3の実施形態による数値分解システムは、第1の実施形態と同様に、入力部1,初期化部4,行列R演算部5,行列Q演算部6,記憶部7及び演算制御部8を有している。
入力部1は、分解対象のR行,T列の行列H及びT行,T列の正方行列Gが既知の値を、記憶部7に記憶する。すなわち、行列H及び行列G(=HH)が既知であるとし、これらの行列が外部機器から入力されるとして、以下の説明を行う。また、入力部1が入力される行列H及び行列Gを、直接に初期下部4へ出力するようにしてもよい。
初期化部4は、行列R演算部5及び行列演算部6にて用いる仮の行列を設定する。すなわち、初期化部4は、空行列Qに対して、分解対象の行列Hを付与して(対応する位置に要素のデータを上書きして)、行列Qとし、空行列L’に対して正方行列の下三角行列を付与して(対応する位置に要素のデータを上書きして)、行列Lとして初期化を行う。
行列R演算部5は、設定された数値iにより、記憶部7に記憶されている対応するi列目の列ベクトルL(i:T,i)のデータを読み出すとともに、スカラーli、k を算出し、以下の(7)式により、新たな列ベクトルを算出して、記憶部7の読み出した位置に上書きを行い、列ベクトルのデータの変更を行う。
ここで、行ベクトルL(i:T,i)は、i列目の列ベクトルにおけるi番目の行成分からT番目までの行成分までの部分行列を示し、スカラーli、k は行列Lのi行,k列目の要素の複素共役を示している。ここで、R=Lであるため、行列Rの行ベクトルを最上部から順に最下部の行を順次計算することに相当する。
L(i:T,i):=L(i:T,i)−li、k ・L(i:T,k)…(7)
すなわち、行列R演算部5は、列ベクトルL(i:T,i)に対して、スカラーli、k を乗算し、乗算結果をこの行ベクトルから減算して、この減算結果を新たな列ベクトルL(i:T,i)として、記憶部7に対して、読み出した位置に上書きする。
このとき、行列R演算部4は、kをインクリメントして、上記(7)式を、1≦k≦i−1の間で繰り返して行う。
また、行列R演算部5は、以下の(8)式に示すように、最終的に得られた列ベクトルL(i;T,i)を記憶部7から読み出し、スカラーli、iの平方根である(li,i1/2により除算し、この得られた除算結果を最終的な列ベクトルL(i:T,i)として、記憶部7に記憶する。このスカラーli,iは、行列Lのi行番目,i列番目の要素を示している。
L(i:T,i):=L(i:T,i)/(li,i1/2 …(8)
行列Q演算部6は、設定された数値iにより、記憶部7から行列Qのi番目の列ベクトルQ(:,i)を読み出し、以下の(9)式に示すように、スカラーli,iにより除算し、除算結果を新たな列ベクトルQ(:,i)として、記憶部7において読み出した位置に書き込む。このスカラーは、行列Lにおけるi行,i列目の要素である。
Q(:,i):=Q(:,i)/li,i …(9)
また、行列Q演算部6は、記憶部7から列ベクトルQ(:,j)を読み出し、以下の(10)式により、新たな列ベクトルQ(:,j)を算出し、記憶部7の読み出した位置に記憶する。ここで、スカラーli,j は、行列Lにおけるi行目,j列目の要素の複素共役である。
Q(:,j):=Q(:,j)−li,j ・Q(:,i) …(10)
すなわち、行列Q演算部6は、列ベクトルQ(:,i)の要素に対して、スカラーli,j を乗算し、この乗算結果を列ベクトルQ(:,j)から減算し、この減算結果を新たな列ベクトルQ(:,j)として、記憶部7の読み出した位置に書き込み、データの更新を行う。
このとき、行列Q演算部6は、jを初期値i+1とし、処理を1回行う毎にインクリメントしつつ、上記(6)式を、i+1≦j≦Tの間で繰り返して行う。
演算制御部8は、行列R演算部5及び行列Q演算部6における演算処理の順序制御と、各演算部における演算処理の回数の制御、すなわち演算ループの制御とを行っている。
次に、図2及び図5参照して、第3の実施形態による数値分解システムの動作を説明する。図5は、第3の実施形態の数値分解システムのアルゴリズムにおける各部の処理を示したテーブルであり、(1)〜(13)の処理が順次行われる。ここで、入力部1,複素共役転置行列生成部2及び正方行列生成部3の動作は省略され、行列H及び正方行列Gが各々求められ、すでに記憶部7に記憶されているとする。
処理(1)において、初期化部4は、記憶部7から分割対象の行列Hを読み出し、空行列Qに対し、この行列Hの各要素を、対応する行番号及び列番号で指定される位置に書き込み、すなわち空行列Qに対して行列Hの値を付与し、空行列QをR行,T列の行列とする。
また、初期化部4は、記憶部7から行列Gを読み出し、この行列Gから下三角部分を抽出し、空行列L’の対応する行番号及び列番号で指定される位置に書き込み、すなわち空行列L’に対して行列Gの下三角部分の要素を付与し、行列L’を下三角部分が非ゼロ要素である下三角行列である行列L’とする。
次に、処理(2)において、演算制御部8は、正方行列である行列L’の列数及び行数の数値Tを抽出し、行列R演算回路5と行列Q演算回路6とにおける繰り返し演算回数をTとし、数値iを「1」に初期化して、処理(2)〜処理(11)までの、行列R演算回路5と行列Q演算回路6とにおける演算処理を、数値iが1≦i≦Tの間繰り返して行う。ここで、例えば、1回の処理が終了した後、処理(11)にて数値iをインクリメント(1を加算)し、処理(2)にて数値iが1≦i≦Tの範囲内であるか否かを検出し、範囲内であることを検出した場合、次の処理(3)へ処理を移し、一方、数値iが数値Tを超えたこと(範囲外であること)を検出すると、処理(2)〜処理(11)の演算ループ(行列分割の演算ループ)を終了し、処理を処理(12)へ進める。
また、行列R演算部5は、処理(12)において、R=LHの演算を行い、すなわち上述した求めた下三角行列Lに対して複素共役転置の処理を行い、上三角行列の行列Rを算出して、記憶部7に記憶する。
次に、演算制御部8は、その時点で記憶部7に記憶されている行列R及び行列Qを、それぞれ行列Hを分解した上三角行列Rと行列Qとして出力する。
次に、処理(3)において、行列R演算部5は、演算制御部8から数値iを入力し、数値kを「1」に初期化して、処理(3)〜処理(5)までの演算ループを、数値kが1≦k≦i−1の間繰り返して行い、演算ループ毎に(7)式により、行列L’の列ベクトルl〜列ベクトルlの各列ベクトル(部分行列)を求めるため、行列の最左部の列ベクトルから最右部の列ベクトルの順に、列ベクトルlから列ベクトルlに向かい、順に列ベクトルを演算する。ここで、列ベクトルlの全ての行成分から成る部分行列は、L(1:T,1)と同様である。
ここで、i=1の場合、1≦k≦i−1が成り立たないため、演算ループには入らず、行列R演算部5は、処理を処理(6)へ移す。すなわち、1行目の行ベクトルrは行列Gの1行目の行ベクトルのままとする。
したがって、数値i=2以降において、行列演算部5は、数値kが1≦k≦i−1の範囲内にあることを検出するため、処理(4)へ処理を進める。
次に、処理(4)において、行列R演算部5は、数値iの示す行ベクトルliにおける部分行列R(i:T,i)を、記憶部7に記憶されている行列L’から読み出す。
そして、行列R演算部5は、この部分行列L(i:T,i)に対し、(7)式の演算を行い、記憶部7における読み出した位置に書き込み、処理を処理(5)へ進める。
次に、処理(5)において、行列R演算部5は、1回の演算ループの毎に数値kをインクリメントし、処理を処理(3)へ進める。
次に、行列R演算部5は、処理(3)にて数値kが1≦k≦i−1の範囲内であるか否かを検出し、範囲内であることを検出した場合、次の処理(4)へ処理を移し、一方、数値kが数値i−1を超えたこと(範囲外であること)を検出すると、処理(3)〜処理(5)の演算ループ(行列R生成の演算ループ)を終了させ、処理を処理(6)へ移す。
次に、処理(6)において、行列R演算部5は、この時点の数値iに対応した行ベクトルにおける部分行列L(i:T,i)を、記憶部7に記憶された行列L’から読み出し、(8)式の演算処理を行い、演算結果を記憶部7の読み出した位置に上書きし、データの変更を行い、処理を処理(7)へ移す。
次に、処理(7)において、行列Q演算部6は、演算制御部8から数値iを入力し、記憶部7に記憶された行列Qから、数値iに対応した列ベクトルqを読み出し、(9)式に示す処理を行い、すなわちスカラーli,iにて列ベクトルqを除算し、この除算結果を記憶部7の読み出した位置に書き込み、データの変更を行い、処理を処理(8)へ進める。ここで、列ベクトルqiは、部分行列Q(:,i)に等しい。
次に、処理(8)において、行列Q演算部6は、数値jを「1」に初期化して、処理を処理(8)へ進める。
以下、行列Q演算部6は、処理(8)〜処理(10)までの演算ループを、数値jがi+1≦j≦Tの間繰り返して行い、演算ループ毎に(3)式により、(2)式の最左辺の列ベクトルq〜行ベクトルqの各列ベクトル(部分行列)を、行列の最右端の列ベクトルから最左端の列ベクトルの順に、すなわち列ベクトルqから列ベクトルqに向かい、順に列ベクトルを演算する。上述したように、列ベクトルqjは、Q(:,j)と同様である。
次に、処理(9)において、行列Q演算部6は、i=1の場合、i+1≦j≦Tの範囲として、2≦j≦Tの範囲で、(6)式の処理を行うため、演算ループにおいて、行列Qの第1列目に対して、(7)の処理のみが行われる。すなわち、1行目の列ベクトルqに対して、処理(8)から処理(10)までの処理は行われない。
そして、行列Q演算部6は、数値jの示す列ベクトルr、すなわち部分行列Q(,:j)を、記憶部7に記憶されている行列Qから読み出す。
そして、行列Q演算部6は、この部分行列Q(,:j)に対し、(10)式の演算を行い、記憶部7における読み出した位置に書き込み、処理を処理(10)へ進める。
次に、処理(10)において、行列Q演算部6は、1回の演算ループの毎に数値jをインクリメントし、処理を処理(8)へ進める。
次に、行列Q演算部6は、処理(8)にて数値jがi+1≦j≦Tの範囲内であるか否かを検出し、範囲内であることを検出した場合、次の処理(8)へ処理を移し、一方、数値jが数値Tを超えたこと(範囲外であること)を検出すると、処理(8)〜処理(10)の演算ループ(行列Qの生成の演算ループ)を終了させ、処理を処理(11)へ移す。
次に、処理(11)において、演算制御部8は、数値iをインクリメント(1を加算)し、処理を処理(2)へ進める。
そして、処理(2)において、演算制御部8は、数値iが1≦i≦Tの範囲内であるか否かを検出し、範囲内であることを検出した場合、次の処理(3)へ処理を移し、一方、数値iが数値Tを超えたこと(範囲外であること)を検出すると、処理(2)〜処理(11)の演算ループ(行列分割の演算ループ)を終了し、処理を処理(12)へ進める。
次に、行列R演算部5は、処理(12)において、R=LHの演算を行い、すなわち上述した求めた下三角行列Lに対して複素共役転置の処理を行い、上三角行列の行列Rを算出して、記憶部7に記憶する。
上述した複素共役転置の処理後、演算制御部8は、記憶部7から行列Q及び行列Rを読み出し、行列Hの分解結果として出力する。
<第4の実施形態>
第4の実施形態の数値分解システムは、第3の実施形態と同様の構成をしている。第4の実施形態と第3の実施形態との違いは、演算制御部8の行列R演算部5及び行列Q演算部6の演算順序にある。すなわち、第3の実施形態においては、同一の演算ループ内にて、行列Rを生成する演算ループと行列Qを生成する演算ループとが実行されるアルゴリズムとなっている。
一方、第4の実施形態においては、演算制御部8が、行列Rを生成する演算ループと、行列Qを生成する演算ループとを、順番に、それぞれ独立に制御し、すなわち、行列Rの生成の演算ループが終了し、分割後の行列Rが求められた後、行列Qの生成の演算ループを開始して行列Qの生成を行い、行列Hが分解された行列R及び行列Q各々の生成を別々に行うアルゴリズムとなっている。
したがって、行列R演算部5,行列Q演算部6及び演算制御部8以外の他の構成要素(入力部1,初期化部4及び記憶部7)の動作は、第4の実施形態においても、第3の実施形態の構成と同様である。
以下、本発明の第4の実施形態において、第3の実施形態と異なる機能の構成のみの説明を行う。第4の実施形態の構成自体は、第3の実施形態と同様であるが各構成の機能が異なっている。
行列R演算部5は、設定された数値iにより、記憶部7に記憶されている対応するi列目の列ベクトルL(i:T,i)のデータを読み出すとともに、スカラーli、k を算出し、以下の(7)式により、新たな列ベクトルを算出して、記憶部7の読み出した位置に上書きを行い、列ベクトルのデータの変更を行う。
ここで、行ベクトルL(i:T,i)は、i列目の列ベクトルにおけるi番目の行成分からT番目までの行成分までの部分行列を示し、スカラーli、k は行列Lのi行,k列目の要素の複素共役を示している。ここで、R=Lであるため、行列Rの行ベクトルを最上部から順に最下部の行を順次計算することに相当する。
すなわち、行列R演算部5は、列ベクトルL(i:T,i)に対して、スカラーli、k を乗算し、乗算結果をこの行ベクトルから減算して、この減算結果を新たな列ベクトルL(i:T,i)として、記憶部7に対して、読み出した位置に上書きする。
このとき、行列R演算部4は、kをインクリメントして、上記(7)式を、1≦k≦i−1の間で繰り返して行う。
また、行列R演算部5は、上記(8)式に示すように、最終的に得られた列ベクトルL(i;T,i)を記憶部7から読み出し、スカラーli、iの平方根である(li,i1/2により除算し、この得られた除算結果を最終的な列ベクトルL(i:T,i)として、記憶部7に記憶する。このスカラーli,iは、行列Lのi行番目,i列番目の要素を示している。
行列Q演算部6は、設定された数値iにより、記憶部7から行列Qのi番目の列ベクトルQ(:,i)を読み出し、上記(5)式に示すように、スカラーri,iにより除算し、除算結果を新たな列ベクトルQ(:,i)として、記憶部7において読み出した位置に書き込む。このスカラーは、行列Lにおけるi行,i列目の要素である。
また、行列Q演算部6は、記憶部7から列ベクトルQ(:,j)を読み出し、上記(6)式により、新たな列ベクトルQ(:,j)を算出し、記憶部7の読み出した位置に記憶する。ここで、スカラーri,jは、行列Rにおけるi行目,j列目の要素の複素共役である。
すなわち、行列Q演算部6は、列ベクトルQ(:,i)の要素に対して、スカラーli,jを乗算し、この乗算結果を列ベクトルQ(:,j)から減算し、この減算結果を新たな列ベクトルQ(:,j)として、記憶部7の読み出した位置に書き込み、データの更新を行う。
このとき、行列Q演算部6は、jを初期値i+1とし、処理を1回行う毎にインクリメントしつつ、上記(12)式を、i+1≦j≦Tの間で繰り返して行う。
演算制御部8は、行列R演算部5及び行列Q演算部6における演算処理の順序制御と、各演算部における演算処理の回数の制御、すなわち演算ループの制御とを行っている。
次に、図2及び図6参照して、第4の実施形態による数値分解システムの動作を説明する。図6は、第4の実施形態の数値分解システムのアルゴリズムにおける各部の処理を示したテーブルであり、(1)〜(14)の処理が順次行われる。ここで、入力部1,複素共役転置行列生成部2及び正方行列生成部3の動作は省略され、行列H及び正方行列Gが各々求められ、すでに記憶部7に記憶されているとする。
処理(1)における、初期化部4が行う処理(1)は、第3の実施形態と同様のため、説明を省略する。
次に、処理(2)において、演算制御部8は、正方行列である行列L’の列数及び行数の数値Tを抽出し、行列R演算回路5と行列Q演算回路6とにおける繰り返し演算回数をTとし、数値iを「1」に初期化して、処理(2)〜処理(7)までの、行列R演算回路5と行列Q演算回路6とにおける演算処理を、数値iが1≦i≦Tの間繰り返して行う。ここで、例えば、1回の処理が終了した後、処理(7)にて数値iをインクリメント(1を加算)し、処理(2)にて数値iが1≦i≦Tの範囲内であるか否かを検出し、範囲内であることを検出した場合、次の処理(3)へ処理を移し、一方、数値iが数値Tを超えたこと(範囲外であること)を検出すると、処理(2)〜処理(7)の演算ループ(行列分割の演算ループ)を終了し、処理を処理(8)へ進める。
また、行列R演算部5は、処理(8)において、R=LHの演算を行い、すなわち上述した求めた下三角行列Lに対して複素共役転置の処理を行い、上三角行列の行列Rを算出して、記憶部7に記憶する。
次の処理(3)〜処理(5)までは、第3の実施形態における処理(3)〜処理(5)各々と同様のため、説明を省略する。
次に、処理(7)において、演算制御部8は、数値iをインクリメント(1を加算)し、処理を処理(2)ヘ進める。
次に、処理(2)において、演算制御部8は、数値iが1≦i≦Tの範囲内であるか否かを検出し、範囲内であることを検出した場合、次の処理(3)へ処理を移し、一方、数値iが数値Tを超えたこと(範囲外であること)を検出すると、行列L’を行列Lとして記憶部7へ記憶するとともに、処理を処理(8)へ進める。
次に、処理(8)において、行列R演算部5は、R=LHの演算を行い、すなわち上述した求めた下三角行列Lに対して複素共役転置の処理を行い、上三角行列の行列Rを算出して、記憶部7に記憶するとともに、処理を処理(9)へ進める。
次に、処理(9)において、演算制御部8は、R行,T列の行列である行列Qの列数及の数値Tを抽出し、行列Q演算回路6における繰り返し演算回数をTとし、数値iを「1」に初期化して、処理(9)〜処理(14)までの、行列Q演算回路6における演算処理を、数値iが1≦i≦Tの間繰り返して行う。ここで、例えば、1回の処理が終了した後、処理(14)にて数値iをインクリメント(1を加算)し、処理(9)にて数値iが1≦i≦Tの範囲内であるか否かを検出し、範囲内であることを検出した場合、次の処理(10)へ処理を移し、一方、数値iが数値Tを超えたこと(範囲外であること)を検出すると、処理(9)〜処理(14)の演算ループ(行列Q生成の演算ループ)を終了し、その時点で記憶部7に記憶されている行列Qを、行列Hを分解した行列Qとして出力し、行列Hの分解処理を終了する。上記、処理(10),(11),(12),(13)各々は、それぞれ第3の実施形態における処理(7),(8),(9),(10)と同様のため、説明を省略する。しかしながら、処理(10)で用いる式は(5)式であり、処理(12)で用いる式は(6)式である。
上述した第1から第4の実施形態によれば、以下に示す効果がある。
・本発明の各実施形態におけるアルゴリズムは、所要処理演算量が従来アルゴリズム(Classical Gram-Schmidt QR分解法,Modified Gram-Schmidt QR分解法,Householder QR分解法,Given QR分解法など)に比較して少なくなる。
・本発明の各実施形態におけるアルゴリズムは、QR分解法のための回路を小さい規模で実現できる。すなわち、回路規模は所要演算量に比例するため、従来例に比較して演算量が少なくなるため、行列のQR分解の所要回路規模も従来に比較して小さくなり、従来装置に比較して小型化を実現できる。
・本発明の各実施形態におけるアルゴリズムは、上述したように回路規模を小さくすることが可能のため、従来に比較して消費電力を少なくすることができる。また、演算量が少なくなることにより、回路動作時間も減少させることができ、消費電力を従来に比較して減少することができ、バッテリ等で動作するQR分解演算機能を有する携帯型の装置の使用時間を延ばすことができる。
・上述した各効果により、従来例に比較して、QR分解演算機能の装置への実装が簡易に行える。
・上述した各効果により、小型化、低消費電力化、低製造コスト化等が、従来例に比して向上しているため、経済的な大量生産を行うことができる。
次に、上述した各実施形態のアルゴリズムにおける式及び行列において用いた用語の定義を以下に示す。
行列及びスカラーは、その度毎に定義しているため省略し、以下、行列A、この行列Aの要素(スカラー)をaとして説明する。
またはA(i,:)…行列Aのi番目の行ベクトル
またはA(:,j)…行列Aのj番目の列ベクトル
ij…行列Aのi番目行,j番目列の要素
A(n:m,i:j)…行列Aのn番目行〜m番目行、i番目列〜j番目列の範囲の部分行列
…行列Aの複素共役転置行列
…行列Aの転置行列
‖b‖…ベクトルbの2次ノルム
…スカラーaの複素共役
|a|…スカラーaの絶対値
a:=a…aの値の更新処理を示す
なお、図1における数値分解システムの機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによりQR分解の処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータシステム」は、ホームページ提供環境(あるいは表示環境)を備えたWWWシステムも含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(RAM)のように、一定時間プログラムを保持しているものも含むものとする。
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。
本発明の第1〜第4の実施形態において用いられるQR分解のアルゴリズムを説明する概念図である。 本発明の第1〜第4の実施形態による数値分解システムの構成例を示すブロック図である。 本発明の第1の実施形態におけるQR分解のアルゴリズムを説明する、処理の順番を示すテーブルである。 本発明の第2の実施形態におけるQR分解のアルゴリズムを説明する、処理の順番を示すテーブルである。 本発明の第3の実施形態におけるQR分解のアルゴリズムを説明する、処理の順番を示すテーブルである。 本発明の第4の実施形態におけるQR分解のアルゴリズムを説明する、処理の順番を示すテーブルである。 従来例において用いられるQR分解のアルゴリズムを説明する概念図である。
符号の説明
1…入力部
2…複素共役転置行列生成部
3…正方行列生成部
4…初期化部
5…行列R生成部
6…行列Q生成部
7…記憶部
8…演算制御部

Claims (4)

  1. 入力される行列Hを行列Qと上三角行列Rとに分解するQR分解を行う数値分解方法であって、
    入力部が、分析対象であるT列の行列H、及び前記行列の複素共役転置行列H を行列Hとを乗算して求めたT行T列の正方行列Gを記憶部に記憶し
    初期化手段が、前記記憶部から前記行列Hの各要素を読み出すとともに行列Qの各要素として記憶部に書き込みし、前記記憶部から前記正方行列Gの上三角部分の各要素を上三角行列Rの上三角部分の非ゼロである各要素として前記記憶部に書き込みする初期化過程と、
    行列R演算部が
    手順1として前記記憶部から前記上三角行列Rを読み出し、前記上三角行列Rの第i行(1<=i<=Tを満たす整数)の行ベクトルにおける非ゼロである各要素に対して、同列の第k行(1<=k<=i-1)の非ゼロである要素の複素共役値を算出して前記各要素から減算した値を新たな要素値として記憶部に書き込みする処理を、kを1からi-1について行い、
    手順2として前記手順1を行った後の上三角行列Rの第i行の行ベクトルを読み出し、前記第i行の行ベクトルにおける非ゼロである各要素に対して、対角成分の要素の平方根で除算した値を、新たな要素値として記憶部に書き込みを行う
    行列R演算過程と、
    行列Q演算部が
    手順3として前記記憶部から前記行列Qの第i列を読み出し、前記第i列の列ベクトルの各要素に対して、対角成分の要素の値で除算した値を、新たな要素値として記憶部に書き込みし、
    手順4として前記手順3を行った後の行列Qを読み出し、第i列の要素に第j列(j>=i+1)の第i行の要素を乗じた値を、第j列の各要素から減算した値を、新たな各要素値として記憶部に書き込みし、前記書き込み処理をj>=i+1を満たす全ての列について行う
    行列Q演算過程と、
    演算処理部が
    iの値を1からTとして順次前記行列R演算過程と前記行列Q演算過程とを実行する制御を行い、前記実行後の前記行列Q及び上三角行列Rを、記憶部から読み出して出力する演算処理過程と
    を有することを特徴とする行列における数値分解方法。
  2. 入力される行列Hを行列Qと上三角行列Rとに分解するQR分解を行う数値分解方法であって、
    入力部が、分析対象であるT列の行列H、及び前記行列の複素共役転置行列H を行列Hとを乗算して求めたT行T列の正方行列Gを記憶部に記憶し、
    初期化手段が、前記記憶部から前記行列Hの各要素を読み出すとともに行列Qの各要素として記憶部に書き込みし、前記記憶部から前記正方行列Gの上三角部分の各要素を上三角行列Rの上三角部分の非ゼロである各要素として前記記憶部に書き込みする初期化過程と、
    行列R演算部が
    手順1として前記記憶部から前記上三角行列Rを読み出し、前記上三角行列Rの第i行(1<=i<=Tを満たす整数)の行ベクトルにおける非ゼロである各要素に対して、同列の第k行(1<=k<=i-1)の非ゼロである要素の複素共役値を算出して前記各要素から減算した値を新たな要素値として記憶部に書き込みする処理を、kを1からi-1について行い、
    手順2として前記手順1を行った後の上三角行列Rの第i行の行ベクトルを読み出し、前記第i行の行ベクトルにおける非ゼロである各要素に対して、対角成分の要素の平方根で除算した値を、新たな要素値として記憶部に書き込みを行う
    行列R演算過程と、
    行列Q演算部が
    手順3として前記記憶部から前記行列Qの第i列を読み出し、前記第i列の列ベクトルの各要素に対して、対角成分の要素の値で除算した値を、新たな要素値として記憶部に書き込みし、
    手順4として前記手順3を行った後の行列Qを読み出し、第i列の要素に第j列(j>=i+1)の第i行の要素を乗じた値を、第j列の各要素から減算した値を、新たな各要素値として記憶部に書き込みし、前記書き込み処理をj>=i+1を満たす全ての列について行う
    行列Q演算過程と、
    演算処理部が
    iの値を1からTとして順次前記行列R演算過程を実行しする制御を行い、
    iの値を1からTとして順次前記行列Q演算過程を実行する制御を行い、
    前記実行後の前記行列Q 及び上三角行列Rを、記憶部から読み出して出力する演算処理過程と
    を有することを特徴とする行列における数値分解方法。
  3. 入力される行列Hを行列Qと上三角行列Rとに分解するQR分解を行う数値分解方法であって、
    入力部が、分析対象であるT列の行列H、及び前記行列の複素共役転置行列H を行列Hとを乗算して求めたT行T列の正方行列Gを記憶部に記憶し
    初期化手段が、前記記憶部から行列Hの各要素を読み出すとともに行列Qの各要素として記憶部に書き込みし、前記記憶部から前記正方行列Gの下三角部分の各要素を下三角行列Lの下三角部分の非ゼロである各要素として前記記憶部に書き込みする初期化過程と、
    行列R演算部が
    手順1として前記記憶部から前記下三角行列Lを読み出し、前記下三角行列Lの第i列(1<=i<=Tを満たす整数)の列ベクトルにおける非ゼロである各要素に対して、同行の第k列(1<=k<=i-1)の非ゼロである要素の複素共役値を算出して前記各要素から減算した値を新たな要素値として記憶部に書き込みする処理を、kを1からi-1について行い、
    手順2として前記手順1を行った後の下三角行列Lの第i列の列ベクトルを読み出し、前記第i列の列ベクトルにおける非ゼロである各要素に対して、対角成分の要素の平方根で除算した値を、新たな要素値として記憶部に書き込みを行う
    行列L演算過程と、
    行列Q演算部が
    手順3として前記記憶部から前記行列Qの第i列を読み出し、前記第i列の列ベクトルの各要素に対して、対角成分の要素の値で除算した値を、新たな要素値として記憶部に書き込みし、
    手順4として前記手順3を行った後の行列Qを読み出し、第i列の要素に第j列(j>=i+1)の第i行の要素を乗じた値を、第j列の各要素から減算した値を、新たな各要素値として記憶部に書き込みし、前記書き込み処理をj>=i+1を満たす全ての列について行う
    行列Q 演算過程と、
    演算処理部が
    iの値を1からTとして順次前記行列R演算過程と前記行列Q演算過程とを実行する制御を行い、前記実行後の前記行列Q及び下三角行列Lを記憶部から読み出して出力する演算処理過程と
    行列複素共役転置演算部が前記下三角行列Lに対して複素共役転置演算を行い、前記上三角行列Rを求める行列複素共役転置演算過程と
    を有することを特徴とする行列における数値分解方法。
  4. 入力される行列Hを行列Qと上三角行列Rとに分解するQR分解を行う数値分解方法であって、
    入力部が、分析対象であるT列の行列H、及び前記行列の複素共役転置行列H を行列Hとを乗算して求めたT行T列の正方行列Gを記憶部に記憶し、
    初期化手段が、前記記憶部から前記行列Hの各要素を読み出すとともに行列Qの各要素として記憶部に書き込みし、前記記憶部から前記正方行列Gの下三角部分の各要素を下三角行列Lの下三角部分の非ゼロである各要素として前記記憶部に書き込みする初期化過程と、
    行列R演算部が
    手順1として前記記憶部から前記下三角行列Lを読み出し、前記下三角行列Lの第i列(1<=i<=Tを満たす整数)の列ベクトルにおける非ゼロである各要素に対して、同行の第k列(1<=k<=i-1)の非ゼロである要素の複素共役値を算出して前記各要素から減算した値を新たな要素値として記憶部に書き込みする処理を、kを1からi-1について行い、
    手順2として前記手順1を行った後の下三角行列Lの第i列の列ベクトルを読み出し、前記第i列の列ベクトルにおける非ゼロである各要素に対して、対角成分の要素の平方根で除算した値を、新たな要素値として記憶部に書き込みを行う
    行列L演算過程と、
    行列複素共役転置演算部が前記下三角行列Lに対して複素共役転置演算を行い、前記上三角行列Rを求める行列複素共役転置演算過程と
    行列Q演算部が
    手順3として前記記憶部から前記行列Qの第i列を読み出し、前記第i列の列ベクトルの各要素に対して、対角成分の要素の値で除算した値を、新たな要素値として記憶部に書き込みし、
    手順4として前記手順3を行った後の行列Qを読み出し、第i列の要素に第j列(j>=i+1)の第i行の要素を乗じた値を、第j列の各要素から減算した値を、新たな各要素値として記憶部に書き込みし、前記書き込み処理をj>=i+1を満たす全ての列について行う
    行列Q演算過程と、
    演算処理部が
    iの値を1からTとして順次前記行列R演算過程を実行する制御を行い、
    行列複素共役転置演算過程を実行する制御を行い、
    iの値を1からTとして順次前記行列Q演算過程を実行する制御を行い、
    前記実行後の前記行列Q 及び上三角行列Rを、記憶部から読み出して出力する演算処理過程と
    を有することを特徴とする行列における数値分解方法。
JP2006086017A 2006-03-27 2006-03-27 行列における数値分解方法 Expired - Fee Related JP4313803B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006086017A JP4313803B2 (ja) 2006-03-27 2006-03-27 行列における数値分解方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006086017A JP4313803B2 (ja) 2006-03-27 2006-03-27 行列における数値分解方法

Publications (2)

Publication Number Publication Date
JP2007264788A JP2007264788A (ja) 2007-10-11
JP4313803B2 true JP4313803B2 (ja) 2009-08-12

Family

ID=38637751

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006086017A Expired - Fee Related JP4313803B2 (ja) 2006-03-27 2006-03-27 行列における数値分解方法

Country Status (1)

Country Link
JP (1) JP4313803B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008129861A (ja) * 2006-11-21 2008-06-05 Nippon Telegr & Teleph Corp <Ntt> 行列における数値分解方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008129861A (ja) * 2006-11-21 2008-06-05 Nippon Telegr & Teleph Corp <Ntt> 行列における数値分解方法
JP4531738B2 (ja) * 2006-11-21 2010-08-25 日本電信電話株式会社 行列における数値分解方法

Also Published As

Publication number Publication date
JP2007264788A (ja) 2007-10-11

Similar Documents

Publication Publication Date Title
JP6987860B2 (ja) ハードウェアにおけるカーネルストライドの実行
Jidling et al. Linearly constrained Gaussian processes
Wang et al. IK-SVD: dictionary learning for spatial big data via incremental atom update
JP4952979B2 (ja) 信号分離装置、信号分離方法、ならびに、プログラム
JP6953287B2 (ja) 音源探査装置、音源探査方法およびそのプログラム
JP7271244B2 (ja) Cnn処理装置、cnn処理方法、およびプログラム
JP2011076068A (ja) 複数の独立したプロセスによって作り出された信号のスペクトログラムの次元を削減するための方法およびシステム
Soubeyrand et al. Parameter estimation for reaction-diffusion models of biological invasions
JP2015521748A (ja) 入力信号を変換する方法
Sampson et al. Ensemble Kalman filter for nonconservative moving mesh solvers with a joint physics and mesh location update
JP5068228B2 (ja) 非負値行列分解の数値計算方法、非負値行列分解の数値計算装置、プログラムおよび記憶媒体
Krishnan et al. A wavelet-based dynamic mode decomposition for modeling mechanical systems from partial observations
JP5405641B2 (ja) 挙動解析システム、挙動解析方法及び挙動解析プログラム
JP4313803B2 (ja) 行列における数値分解方法
WO2020262587A1 (ja) 機械学習装置、機械学習プログラム、及び機械学習方法
JP4531738B2 (ja) 行列における数値分解方法
Goyal et al. An adaptive meshfree diffusion wavelet method for partial differential equations on the sphere
JP6104469B2 (ja) 行列生成装置及び行列生成方法及び行列生成プログラム
Hadar High-order Hidden Markov Models-estimation and implementation
Chen et al. Scalable Gaussian process analysis for implicit physics-based covariance models
JP7349811B2 (ja) 訓練装置、生成装置及びグラフ生成方法
JP5325072B2 (ja) 行列分解装置、行列分解方法及びプログラム
JP7047665B2 (ja) 学習装置、学習方法及び学習プログラム
JP2005115497A (ja) 連立一次方程式反復求解計算機、及び、連立一次方程式反復求解計算方法
JP4954945B2 (ja) 三次元形状推定装置及びコンピュータプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080125

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20081211

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081219

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090217

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090507

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090515

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120522

Year of fee payment: 3

R151 Written notification of patent or utility model registration

Ref document number: 4313803

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120522

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130522

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140522

Year of fee payment: 5

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees