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

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

Info

Publication number
JP4531738B2
JP4531738B2 JP2006314369A JP2006314369A JP4531738B2 JP 4531738 B2 JP4531738 B2 JP 4531738B2 JP 2006314369 A JP2006314369 A JP 2006314369A JP 2006314369 A JP2006314369 A JP 2006314369A JP 4531738 B2 JP4531738 B2 JP 4531738B2
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
JP2006314369A
Other languages
English (en)
Other versions
JP2008129861A (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 JP2006314369A priority Critical patent/JP4531738B2/ja
Publication of JP2008129861A publication Critical patent/JP2008129861A/ja
Application granted granted Critical
Publication of JP4531738B2 publication Critical patent/JP4531738B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

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

Claims (4)

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

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006314369A JP4531738B2 (ja) 2006-11-21 2006-11-21 行列における数値分解方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006314369A JP4531738B2 (ja) 2006-11-21 2006-11-21 行列における数値分解方法

Publications (2)

Publication Number Publication Date
JP2008129861A JP2008129861A (ja) 2008-06-05
JP4531738B2 true JP4531738B2 (ja) 2010-08-25

Family

ID=39555608

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006314369A Expired - Fee Related JP4531738B2 (ja) 2006-11-21 2006-11-21 行列における数値分解方法

Country Status (1)

Country Link
JP (1) JP4531738B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111651138B (zh) * 2020-05-28 2023-11-03 Oppo广东移动通信有限公司 一种集成电路、信号处理方法及装置、存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003273837A (ja) * 2002-03-12 2003-09-26 Toshiba Corp 受信装置、送受信装置、送信装置および送信信号分類装置
WO2005109680A1 (en) * 2004-04-22 2005-11-17 Qualcomm Incorporated Iterative eigenvector computation for a mimo communication system
JP2006284180A (ja) * 2005-03-31 2006-10-19 Denso It Laboratory Inc 到来波の方向推定装置
JP2007049267A (ja) * 2005-08-08 2007-02-22 Nippon Telegr & Teleph Corp <Ntt> 無線通信システムの受信装置、送信装置の送信した無線信号の検出方法並びにそのプログラムと記録媒体
JP4313803B2 (ja) * 2006-03-27 2009-08-12 日本電信電話株式会社 行列における数値分解方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003273837A (ja) * 2002-03-12 2003-09-26 Toshiba Corp 受信装置、送受信装置、送信装置および送信信号分類装置
WO2005109680A1 (en) * 2004-04-22 2005-11-17 Qualcomm Incorporated Iterative eigenvector computation for a mimo communication system
JP2006284180A (ja) * 2005-03-31 2006-10-19 Denso It Laboratory Inc 到来波の方向推定装置
JP2007049267A (ja) * 2005-08-08 2007-02-22 Nippon Telegr & Teleph Corp <Ntt> 無線通信システムの受信装置、送信装置の送信した無線信号の検出方法並びにそのプログラムと記録媒体
JP4313803B2 (ja) * 2006-03-27 2009-08-12 日本電信電話株式会社 行列における数値分解方法

Also Published As

Publication number Publication date
JP2008129861A (ja) 2008-06-05

Similar Documents

Publication Publication Date Title
Jidling et al. Linearly constrained Gaussian processes
Wang et al. IK-SVD: dictionary learning for spatial big data via incremental atom update
JP4952979B2 (ja) 信号分離装置、信号分離方法、ならびに、プログラム
JP2018026134A (ja) ゼロ係数スキップ畳み込みニューラルネットワークエンジン
CN112534448A (zh) 多量子位控制
JP2009037597A (ja) 入力画像をフィルタリングして出力画像を作成する方法
Soubeyrand et al. Parameter estimation for reaction-diffusion models of biological invasions
JP6953287B2 (ja) 音源探査装置、音源探査方法およびそのプログラム
JP2015521748A (ja) 入力信号を変換する方法
JP7271244B2 (ja) Cnn処理装置、cnn処理方法、およびプログラム
Berry et al. Forecasting turbulent modes with nonparametric diffusion models: Learning from noisy data
Sampson et al. Ensemble Kalman filter for nonconservative moving mesh solvers with a joint physics and mesh location update
JP5068228B2 (ja) 非負値行列分解の数値計算方法、非負値行列分解の数値計算装置、プログラムおよび記憶媒体
JP5405641B2 (ja) 挙動解析システム、挙動解析方法及び挙動解析プログラム
Krishnan et al. A wavelet-based dynamic mode decomposition for modeling mechanical systems from partial observations
JP4531738B2 (ja) 行列における数値分解方法
JP4313803B2 (ja) 行列における数値分解方法
JP6567478B2 (ja) 音源強調学習装置、音源強調装置、音源強調学習方法、プログラム、信号処理学習装置
de Frias et al. A multiscale mass scaling approach for explicit time integration using proper orthogonal decomposition
WO2016002020A1 (ja) 行列生成装置及び行列生成方法及び行列生成プログラム
JP7349811B2 (ja) 訓練装置、生成装置及びグラフ生成方法
JP3865247B2 (ja) 連立一次方程式反復求解計算機、及び、連立一次方程式反復求解計算方法
WO2020261509A1 (ja) 機械学習装置、機械学習プログラム、及び機械学習方法
JP7204545B2 (ja) 音響信号処理装置、音響信号処理方法、およびプログラム
WO2023157184A1 (ja) 情報処理装置、情報処理方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090123

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100309

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100316

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100517

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: 20100601

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: 20100609

R151 Written notification of patent or utility model registration

Ref document number: 4531738

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: 20130618

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20140618

Year of fee payment: 4

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