JP2008258774A - 符号化装置および符号化プログラム - Google Patents

符号化装置および符号化プログラム Download PDF

Info

Publication number
JP2008258774A
JP2008258774A JP2007096691A JP2007096691A JP2008258774A JP 2008258774 A JP2008258774 A JP 2008258774A JP 2007096691 A JP2007096691 A JP 2007096691A JP 2007096691 A JP2007096691 A JP 2007096691A JP 2008258774 A JP2008258774 A JP 2008258774A
Authority
JP
Japan
Prior art keywords
matrix
storage unit
data representing
intermediate result
parity
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.)
Granted
Application number
JP2007096691A
Other languages
English (en)
Other versions
JP4821684B2 (ja
Inventor
Takashi Maebatake
貴 前畠
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.)
Sumitomo Electric Industries Ltd
Original Assignee
Sumitomo Electric Industries Ltd
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 Sumitomo Electric Industries Ltd filed Critical Sumitomo Electric Industries Ltd
Priority to JP2007096691A priority Critical patent/JP4821684B2/ja
Publication of JP2008258774A publication Critical patent/JP2008258774A/ja
Application granted granted Critical
Publication of JP4821684B2 publication Critical patent/JP4821684B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Error Detection And Correction (AREA)

Abstract

【課題】従来よりも少ない計算量でパリティを計算することができる符号化装置および符号化プログラムを提供する。
【解決手段】行列記憶部18は、行列Ui、i(i=1〜m)、Aのデータを記憶する。行列積計算部は、要素数kの情報ベクトルXから式(Y≡U12・・・Um-1mmm-1・・・L21AX)で表わされるパリティ生成式にしたがって2を法とする演算を行なうことによって、要素数mのパリティベクトルYを生成する。パリティ検査行列Hは、H(X,Y)T=0を満たし、行列Aは、パリティ検査行列Hの第1列目〜第k列目からなり、行列Bは、パリティ検査行列Hの第(k+1)列目〜第n列目からなり、行列Li(i=1〜m)は、行列BをLU分解した下三角行列Lの基本下三角行列であり、行列Ui(i=1〜m)は、行列BをLU分解した上三角行列Uの基本上三角行列である。
【選択図】図2

Description

本発明は、符号化装置および符号化プログラムに関し、特に低密度パリティ検査符号を生成する符号化装置および符号化プログラムに関する。
データの通信システムを構築する場合には、高速通信、低消費電力、高通信品質(低ビット誤り率)等が要求される。受信符号の誤りを検出して訂正する誤り訂正技術は、これらの要求を満たす1つの技術として、無線、有線および記録システム等において幅広く利用されている。
近年、この誤り訂正技術の1つとして、低密度パリティ検査(LDPC:Low-Density Parity-Check)符号と、sum-product復号法とが注目されている。このLDPC符号を利用する復号操作は、非特許文献1において議論されている。この非特許文献1においては、符号化率1/2のイレギュラーLDPC符号を利用して白色ガウス通信路のシャノン(Shannon)限界まで0.004dBという復号特性が得られることが示されている。イレギュラーLDPC符号は、パリティ検査行列の行重み(行において1が立つ数)および列重み(列において1が立つ数)が、一定ではない符号を示す。行重みおよび列重みが各行および各列において一定のLDPC符号は、レギュラーLDPC符号と呼ばれる。
このLDPCの符号化処理、つまりパリティを計算する処理の処理負荷を軽減するための手法が検討されている。たとえば、非特許文献2には、近似三角行列を利用したエンコード手法が開示されている。また、非特許文献3には、三角分解を用いたエンコード手法が開示されている。これらのエンコード手法では、下三角行列および上三角行列を含む方程式を解くことによって、パリティを得ることができる。
S. Y. Chung et al.,"On the Design of Low-Density Parity-Check Codes within 0.0045dB of the Shannon Limit", IEEE COMUNICATIONS LETTERS, VOL.5, No.2, Feb. 2001, pp.58-60 Thomas J. Richardson et al.,"Efficient Encoding of Low-Density Parity-Check Codes", IEEE TRANSACTIONS ON INFORMATION THEORY, VOL.47, No.2, Feb. 2001, pp.638-656 楫勇一、「三角分解を用いたLDPC符号化法の計算量について」、The 27th Symposium on Information Theory and Its Applications (SITA2004) Gero, Gifu, Japan, Dec 14-17, 2004
しかしながら、非特許文献2および非特許文献3のエンコード手法では、方程式の解法に後退代入などが用いられているため、計算量が多くなる。
それゆえに、本発明の目的は、従来よりも少ない計算量でパリティを計算することができる符号化装置および符号化プログラムを提供することである。
本発明のある局面に係る符号化装置は、要素数kの情報ベクトルXから式(A1)で表わされるパリティ生成式にしたがって2を法とする演算を行なうことによって、要素数mのパリティベクトルYを生成する符号化装置であって、
Y≡U12・・・Um-1mmm-1・・・L21AX ・・・(A1)
ただし、(X,Y)Tは、ベクトル(X,Y)の転置を表わし、パリティ検査行列Hは、H(X,Y)T≡0を満たすm行n列の行列であり、行列Aは、パリティ検査行列Hの第1列目〜第k列目からなり、行列Bは、パリティ検査行列Hの第(k+1)列目〜第n列目からなり、n=k+mであり、行列Li(i=1〜m)は、行列BをLU分解した下三角行列Lの基本下三角行列であって、第i列目が下三角行列Lの第i列目と一致し、その他の列は非対角項が0、対角項が1である行列であり、行列Ui(i=1〜m)は、行列BをLU分解した上三角行列Uの基本上三角行列であって、第i行目が上三角行列Uの第i行目と一致し、その他の行は非対角項が0、対角項が1である行列であり、符号化装置は、パリティ生成式に含まれる複数個の行列を表わすデータを記憶する行列記憶部と、パリティ生成式に含まれる複数回の行列乗算の中間結果を表わすデータを記憶する中間結果記憶部と、パリティベクトルYを算出するために、パリティ生成式に含まれる複数回の行列乗算を実行する行列積計算部とを備え、行列積計算部は、情報ベクトルX、行列記憶部内の行列を表わすデータ、または中間結果記憶部内の中間結果を表わすデータを用いて、パリティ生成式に含まれる各行列乗算を実行して、パリティ生成式に含まれる複数回の行列乗算が終了するまでの間は、該計算結果を表わすデータを中間結果を表わすデータとして中間結果記憶部内に記憶させ、パリティ生成式に含まれる複数回の行列乗算が終了したら、パリティ生成式に含まれる複数回の行列乗算の終了後に得られるベクトルをパリティベクトルYとして出力する。
好ましくは、符号化装置は、パリティベクトルYを生成する前に、パリティ生成式に含まれる行列を生成する符号化装置であって、中間結果記憶部は、さらに、パリティ生成式に含まれる行列を生成する処理の中間結果を表わすデータを記憶し、符号化装置は、さらに、パリティ検査行列Hを行列Aと行列Bとに分解して、行列Aを表わすデータを行列記憶部に記憶させる検査行列分解部と、行列Bを下三角行列Lと上三角行列Uの積にLU分解して、下三角行列Lを表わすデータおよび上三角行列Uを表わすデータを中間結果記憶部に記憶させるLU分解部と、中間結果記憶部から上三角行列Uおよび下三角行列Lを表わすデータを読み出して、上三角行列Uをm個の基本上三角行列Ui(i=1〜m)の積に分解し、下三角行列Lをm個の基本下三角行列Li(i=1〜m)の積に分解し、分解された行列Ui(i=1〜m)および行列Li(i=1〜m)を表わすデータを行列記憶部に記憶させる基本行列分解部とを備える。
本発明の別の局面に係る符号化装置は、要素数kの情報ベクトルXから式(A2)で表わされるパリティ生成式にしたがって実数演算を行なうことによって、要素数mのパリティベクトルYを生成する符号化装置であって、
Y=−U1 -12 -1・・・Um-1 -1m -1m -1m-1 -1・・・L2 -11 -1AX ・・・(A2)
ただし、(X,Y)Tは、ベクトル(X,Y)の転置を表わし、パリティ検査行列Hは、H(X,Y)T=0を満たすm行n列の行列であり、行列Aは、パリティ検査行列Hの第1列目〜第k列目からなり、行列Bは、パリティ検査行列Hの第(k+1)列目〜第n列目からなり、n=k+mであり、行列Li -1(i=1〜m)は行列Liの逆行列であり、行列Liは行列BをLU分解した下三角行列Lの基本下三角行列であって、第i列目が下三角行列Lの第i列目と一致し、その他の列は非対角項が0、対角項が1である行列であり、行列Ui -1(i=1〜m)は行列Uiの逆行列であり、行列Uiは、行列BをLU分解した上三角行列Uの基本上三角行列であって、第i行目が上三角行列Uの第i行目と一致し、その他の行は非対角項が0、対角項が1である行列であり、符号化装置は、パリティ生成式に含まれる複数個の行列を表わすデータを記憶する行列記憶部と、パリティ生成式に含まれる複数回の行列乗算の中間結果を表わすデータを記憶する中間結果記憶部と、パリティベクトルYを算出するために、パリティ生成式に含まれる複数回の行列乗算を実行する行列積計算部と、行列積計算部から出力されるベクトルの符号を反転してパリティベクトルYとして出力する符号反転部とを備え、行列積計算部は、情報ベクトルX、行列記憶部内の行列を表わすデータ、または中間結果記憶部内の中間結果を表わすデータを用いて、パリティ生成式に含まれる各行列乗算を実行して、パリティ生成式に含まれる複数回の行列乗算が終了するまでの間は、該計算結果を表わすデータを中間結果を表わすデータとして中間結果記憶部内に記憶させ、パリティ生成式に含まれる複数回の行列乗算が終了したら、パリティ生成式に含まれる複数回の行列乗算の終了後に得られるベクトルを符号反転部に出力する。
好ましくは、符号化装置は、パリティベクトルYを生成する前に、パリティ生成式に含まれる行列を生成する符号化装置であって、中間結果記憶部は、さらに、パリティ生成式に含まれる行列を生成する処理の中間結果を表わすデータを記憶し、符号化装置は、さらに、パリティ検査行列Hを行列Aと行列Bとに分解して、行列Aを表わすデータを行列記憶部に記憶させる検査行列分解部と、行列Bを下三角行列Lと上三角行列Uの積にLU分解して、下三角行列Lを表わすデータおよび上三角行列Uを表わすデータを中間結果記憶部に記憶させるLU分解部と、中間結果記憶部から上三角行列Uおよび下三角行列Lを表わすデータを読み出して、上三角行列Uをm個の基本上三角行列Ui(i=1〜m)の積に分解し、下三角行列Lをm個の基本下三角行列Li(i=1〜m)の積に分解し、分解された行列Ui(i=1〜m)および行列Li(i=1〜m)を表わすデータを中間結果記憶部に記憶させる基本行列分解部と、中間結果記憶部から行列Ui(i=1〜m)および行列Li(i=1〜m)を表わすデータを読み出して、行列Ui(i=1〜m)および行列Li(i=1〜m)の非対角項の要素の符号を反転することによって、逆行列Ui -1(i=1〜m)および逆行列Li -1(i=1〜m)を算出し、逆行列Ui -1(i=1〜m)および逆行列Li -1(i=1〜m)を表わすデータを行列記憶部に記憶させる逆行列計算部とを備える。
本発明の別の局面に係る符号化装置は、要素数kの情報ベクトルXから、u≧1かつv≧1のときには式(A3−1)、u≧1かつv=0のときには式(A3−2)、u=0かつv≧1のときには式(A3−3)で表わされるパリティ生成式にしたがって2を法とする演算を行なうことによって、要素数mのパリティベクトルYを生成する符号化装置であって、
Y≡E(v)U′1U′2・・・U′m-1U′mL′mL′m-1・・・L′2L′1(u)X ・・・(A3−1)
Y≡U′1U′2・・・U′m-1U′mL′mL′m-1・・・L′2L′1(u)X ・・・(A3−2)
Y≡E(v)U′1U′2・・・U′m-1U′mL′mL′m-1・・・L′2L′1AX ・・・(A3−3)
ただし、(X,Y)Tは、ベクトル(X,Y)の転置を表わし、パリティ検査行列Hは、H(X,Y)T≡0を満たすm行n列の行列であり、行列Aは、パリティ検査行列Hの第1列目〜第k列目からなり、行列Bは、パリティ検査行列Hの第(k+1)列目〜第n列目からなり、n=k+mであり、u≧1かつv≧1の場合には、行列B′は、行列Bに対して、u回の行の入れ替え、およびv回の列の入れ替えを行なったものであり、行列A(u)は、行列Aに対して、行列Bに対するu回の行の入れ替えと同様の入れ替えを行なったものであり、行列E(v)は、単位行列Eに対して、行列Bに対するv回の列の入れ替えと同様の入れ替えを行なったものであり、u≧1かつv=0の場合には、行列B′は、行列Bに対して、u回の行の入れ替えを行なったものであり、行列A(u)は、行列Aに対して、行列Bに対するu回の行の入れ替えと同様の入れ替えを行なったものであり、u=0かつv≧1の場合には、行列B′は、行列Bに対して、v回の列の入れ替えを行なったものであり、行列E(v)は、単位行列Eに対して、行列Bに対するv回の列の入れ替えと同様の入れ替えを行なったものであり、行列L′i(i=1〜m)は、行列B′をLU分解した下三角行列L′の基本下三角行列であって、第i列目が下三角行列L′の第i列目と一致し、その他の列は非対角項が0、対角項が1である行列であり、行列U′i(i=1〜m)は、行列B′をLU分解した上三角行列U′の基本上三角行列であって、第i行目が上三角行列U′の第i行目と一致し、その他の行は非対角項が0、対角項が1である行列であり、符号化装置は、パリティ生成式に含まれる複数個の行列を表わすデータを記憶する行列記憶部と、パリティ生成式に含まれる複数回の行列乗算の中間結果を表わすデータを記憶する中間結果記憶部と、パリティベクトルYを算出するために、パリティ生成式に含まれる複数回の行列乗算を実行する行列積計算部とを備え、行列積計算部は、情報ベクトルX、行列記憶部内の行列を表わすデータ、または中間結果記憶部内の中間結果を表わすデータを用いて、パリティ生成式に含まれる各行列乗算を実行して、パリティ生成式に含まれる複数回の行列乗算が終了するまでの間は、該計算結果を表わすデータを中間結果を表わすデータとして中間結果記憶部内に記憶させ、パリティ生成式に含まれる複数回の行列乗算が終了したら、パリティ生成式に含まれる複数回の行列乗算の終了後に得られるベクトルをパリティベクトルYとして出力する。
好ましくは、符号化装置は、パリティベクトルYを生成する前に、パリティ生成式に含まれる行列を生成する符号化装置であって、中間結果記憶部は、さらに、パリティ生成式に含まれる行列を生成する処理の中間結果を表わすデータを記憶し、符号化装置は、さらに、パリティ検査行列Hを行列Aと行列Bに分解して、u=0かつv≧1のときには、行列Aを表わすデータを行列記憶部に記憶させる検査行列分解部と、u≧1かつv≧1の場合、行列Bのオーダリングを行ない、行列Bに対してu回の行の入れ替えおよびv回の列の入れ替えを行なった行列B′を生成し、行列Aに対して行列Bに対するu回の行の入れ替えと同様の入れ替えを行なった行列A(u)を生成して行列記憶部に記憶させ、単位行列Eに対して行列Bに対するv回の列の入れ替えと同様の入れ替えを行なった行列E(v)を生成して行列記憶部に記憶させ、u≧1かつv=0の場合、行列Bのオーダリングを行ない、行列Bに対してu回の行の入れ替えを行なった行列B′を生成し、行列Aに対して行列Bに対するu回の行の入れ替えと同様の入れ替えを行なった行列A(u)を生成して行列記憶部に記憶させ、u=0かつv≧1の場合、行列Bのオーダリングを行ない、行列Bに対してv回の列の入れ替えを行なった行列B′を生成し、単位行列Eに対して行列Bに対するv回の列の入れ替えと同様の入れ替えを行なった行列E(v)を生成して行列記憶部に記憶させるオーダリング部と、行列B′を下三角行列L′と上三角行列U′の積にLU分解して、下三角行列L′を表わすデータおよび上三角行列U′を表わすデータを中間結果記憶部に記憶させるLU分解部と、中間結果記憶部から上三角行列U′および下三角行列L′を表わすデータを読み出して、上三角行列U′をm個の基本上三角行列U′i(i=1〜m)の積に分解し、下三角行列L′をm個の基本下三角行列L′i(i=1〜m)の積に分解し、分解された行列U′i(i=1〜m)および行列′Li(i=1〜m)を表わすデータを行列記憶部に記憶させる基本行列分解部とを備える。
本発明のある局面に係る符号化装置は、要素数kの情報ベクトルXから、u≧1かつv≧1のときには式(A4−1)、u≧1かつv=0のときには式(A4−2)、u=0かつv≧1のときには式(A4−3)で表わされるパリティ生成式にしたがって2を法とする演算を行なうことによって、要素数mのパリティベクトルYを生成する符号化装置であって、
Y=−E(v)U′1 -1U′2 -1・・・U′m-1 -1U′m -1L′m -1L′m-1 -1・・・L′2 -1L′1 -1(u)X ・・・(A4−1)
Y=−U′1 -1U′2 -1・・・U′m-1 -1U′m -1L′m -1L′m-1 -1・・・L′2 -1L′1 -1(V)X ・・・(A4−2)
Y=−E(v)U′1 -1U′2 -1・・・U′m-1 -1U′m -1L′m -1L′m-1 -1・・・L′2 -1L′1 -1AX ・・・(A4−3)
ただし、パリティ検査行列Hは、H(X,Y)T=0を満たすm行n列の行列であり、行列Aは、パリティ検査行列Hの第1列目〜第k列目からなり、行列Bは、パリティ検査行列Hの第(k+1)列目〜第n列目からなり、n=k+mであり、u≧1かつv≧1の場合には、行列B′は、行列Bに対して、u回の行の入れ替え、およびv回の列の入れ替えを行なったものであり、行列A(u)は、行列Aに対して、行列Bに対するu回の行の入れ替えと同様の入れ替えを行なったものであり、行列E(v)は、単位行列Eに対して、行列Bに対するv回の列の入れ替えと同様の入れ替えを行なったものであり、u≧1かつv=0の場合には、行列B′は、行列Bに対して、u回の行の入れ替えを行なったものであり、行列A(u)は、行列Aに対して、行列Bに対するu回の行の入れ替えと同様の入れ替えを行なったものであり、u=0かつv≧1の場合には、行列B′は、行列Bに対して、v回の列の入れ替えを行なったものであり、行列E(v)は、単位行列Eに対して、行列Bに対するv回の列の入れ替えと同様の入れ替えを行なったものであり、行列L′i -1(i=1〜m)は行列L′iの逆行列であり、行列L′iは、行列B′をLU分解した下三角行列L′の基本下三角行列であって、第i列目が下三角行列L′の第i列目と一致し、その他の列は非対角項が0、対角項が1である行列であり、行列U′i -1(i=1〜m)は行列U′iの逆行列であり、行列U′iは、行列B′をLU分解した上三角行列U′の基本上三角行列であって、第i行目が上三角行列U′の第i行目と一致し、その他の行は非対角項が0、対角項が1である行列であり、符号化装置は、パリティ生成式に含まれる複数個の行列を表わすデータを記憶する行列記憶部と、パリティ生成式に含まれる複数回の行列乗算の中間結果を表わすデータを記憶する中間結果記憶部と、パリティベクトルYを算出するために、パリティ生成式に含まれる複数回の行列乗算を実行する行列積計算部と、行列積計算部から出力されるベクトルの符号を反転してパリティベクトルYとして出力する符号反転部とを備え、行列積計算部は、情報ベクトルX、行列記憶部内の行列を表わすデータ、または中間結果記憶部内の中間結果を表わすデータを用いて、パリティ生成式に含まれる各行列乗算を実行して、パリティ生成式に含まれる複数回の行列乗算が終了するまでの間は、該計算結果を表わすデータを中間結果を表わすデータとして中間結果記憶部内に記憶させ、パリティ生成式に含まれる複数回の行列乗算が終了したら、パリティ生成式に含まれる複数回の行列乗算の終了後に得られるベクトルを符号反転部に出力する含まれる複数回の行列乗算の終了後に得られるベクトルを符号反転部に出力する。
好ましくは、符号化装置は、パリティベクトルYを生成する前に、パリティ生成式に含まれる行列を生成する符号化装置であって、中間結果記憶部は、さらに、パリティ生成式に含まれる行列を生成する処理の中間結果を表わすデータを記憶し、符号化装置は、さらに、パリティ検査行列Hを行列Aと行列Bに分解して、u=0かつv≧1のときには、行列Aを表わすデータを行列記憶部に記憶させる検査行列分解部と、u≧1かつv≧1の場合、行列Bのオーダリングを行ない、行列Bに対してu回の行の入れ替えおよびv回の列の入れ替えを行なった行列B′を生成し、行列Aに対して行列Bに対するu回の行の入れ替えと同様の入れ替えを行なった行列A(u)を生成して行列記憶部に記憶させ、単位行列Eに対して行列Bに対するv回の列の入れ替えと同様の入れ替えを行なった行列E(v)を生成して行列記憶部に記憶させ、u≧1かつv=0の場合、行列Bのオーダリングを行ない、行列Bに対してu回の行の入れ替えを行なった行列B′を生成し、行列Aに対して行列Bに対するu回の行の入れ替えと同様の入れ替えを行なった行列A(u)を生成して行列記憶部に記憶させ、u=0かつv≧1の場合、行列Bのオーダリングを行ない、行列Bに対してv回の列の入れ替えを行なった行列B′を生成し、単位行列Eに対して行列Bに対するv回の列の入れ替えと同様の入れ替えを行なった行列E(v)を生成して行列記憶部に記憶させるオーダリング部と、行列B′を下三角行列L′と上三角行列U′の積にLU分解して、下三角行列L′を表わすデータおよび上三角行列U′を表わすデータを中間結果記憶部に記憶させるLU分解部と、中間結果記憶部から上三角行列U′および下三角行列L′を表わすデータを読み出して、上三角行列U′をm個の基本上三角行列U′i(i=1〜m)の積に分解し、下三角行列L′をm個の基本下三角行列L′i(i=1〜m)の積に分解し、分解された行列U′i(i=1〜m)および行列′Li(i=1〜m)を表わすデータを中間結果記憶部に記憶させる基本行列分解部と、中間結果記憶部から行列U′i(i=1〜m)および行列L′i(i=1〜m)を表わすデータを読み出して、行列U′i(i=1〜m)および行列L′i(i=1〜m)の非対角項の要素の符号を反転することによって、逆行列U′i -1(i=1〜m)および逆行列L′i -1(i=1〜m)を算出し、逆行列U′i -1(i=1〜m)および逆行列L′i -1(i=1〜m)を表わすデータを行列記憶部に記憶させる逆行列計算部とを備える。
本発明の別の局面に係る符号化装置は、要素数kの情報ベクトルXから、式(A5)に含まれる少なくとも1セットの隣接する2個以上の行列が、2個以上の行列の乗算結果である行列Cで置換されたパリティ生成式にしたがって2を法とする演算を行なうことによって、要素数mのパリティベクトルYを生成する符号化装置であって、
Y≡U12・・・Um-1mmm-1・・・L21AX ・・・(A5)
ただし、(X,Y)Tは、ベクトル(X,Y)の転置を表わし、パリティ検査行列Hは、H(X,Y)T≡0を満たすm行n列の行列であり、行列Aは、パリティ検査行列Hの第1列目〜第k列目からなり、行列Bは、パリティ検査行列Hの第(k+1)列目〜第n列目からなり、n=k+mであり、行列Li(i=1〜m)は、行列BをLU分解した下三角行列Lの基本下三角行列であって、第i列目が下三角行列Lの第i列目と一致し、その他の列は非対角項が0、対角項が1である行列であり、行列Ui(i=1〜m)は、行列BをLU分解した上三角行列Uの基本上三角行列であって、第i行目が上三角行列Uの第i行目と一致し、その他の行は非対角項が0、対角項が1である行列であり、符号化装置は、パリティ生成式に含まれる複数個の行列を表わすデータを記憶する行列記憶部と、パリティ生成式に含まれる複数回の行列乗算の中間結果を表わすデータを記憶する中間結果記憶部と、パリティベクトルYを算出するために、パリティ生成式に含まれる複数回の行列乗算を実行する行列積計算部とを備え、行列積計算部は、情報ベクトルX、行列記憶部内の行列を表わすデータ、または中間結果記憶部内の中間結果を表わすデータを用いて、パリティ生成式に含まれる各行列乗算を実行して、パリティ生成式に含まれる複数回の行列乗算が終了するまでの間は、該計算結果を表わすデータを中間結果を表わすデータとして中間結果記憶部内に記憶させ、パリティ生成式に含まれる複数回の行列乗算が終了したら、パリティ生成式に含まれる複数回の行列乗算の終了後に得られるベクトルをパリティベクトルYとして出力する。
好ましくは、パリティ生成式に含まれるすべての行列の非対角項の非零要素数の和は、式(A5)に含まれるすべての行列の非対角項の非零要素数の和以下である。
好ましくは、符号化装置は、パリティベクトルYを生成する前に、パリティ生成式に含まれる行列を生成する符号化装置であって、中間結果記憶部は、さらに、パリティ生成式に含まれる行列を生成する処理の中間結果を表わすデータを記憶し、行列積計算部は、さらに、式(A5)に含まれる隣接する2個以上の行列の乗算を実行して、乗算結果である行列Cを表わすデータを出力し、符号化装置は、さらに、パリティ検査行列Hを行列Aと行列Bに分解して、行列Aを表わすデータを行列記憶部に記憶させる検査行列分解部と、行列Bを下三角行列Lと上三角行列Uの積にLU分解して、下三角行列Lを表わすデータおよび上三角行列Uを表わすデータを中間結果記憶部に記憶させるLU分解部と、中間結果記憶部から上三角行列Uおよび下三角行列Lを表わすデータを読み出して、上三角行列Uをm個の基本上三角行列Ui(i=1〜m)の積に分解し、下三角行列Lをm個の基本下三角行列Li(i=1〜m)の積に分解し、分解された行列Ui(i=1〜m)および行列Li(i=1〜m)を表わすデータを中間結果記憶部に記憶させる基本行列分解部と、乗算結果である行列Cの非零要素数と式(A5)に含まれる行列のうち隣接する2個以上の行列を除いた行列の非対角項の非零要素数の和が、式(A5)に含まれるすべての行列の非対角項の非零要素数の和以下である場合に、中間結果記憶部に記憶されている式(A5)に含まれる行列のうち隣接する2個以上の行列を除いた行列を表わすデータと、行列Cを表わすデータとを行列記憶部に記憶する行列乗算数削減部とを備える。
本発明の別の局面に係る符号化装置は、要素数kの情報ベクトルXから、式(A6)に含まれる少なくとも1セットの隣接する2個以上の行列が、2個以上の行列の乗算結果である行列Cで置換されたパリティ生成式にしたがって実数演算を行なうことによって、要素数mのパリティベクトルYを生成する符号化装置であって、
Y=−U1 -12 -1・・・Um-1 -1m -1m -1m-1 -1・・・L2 -11 -1AX ・・・(A6)
ただし、(X,Y)Tは、ベクトル(X,Y)の転置を表わし、パリティ検査行列Hは、H(X,Y)T=0を満たすm行n列の行列であり、行列Aは、パリティ検査行列Hの第1列目〜第k列目からなり、行列Bは、パリティ検査行列Hの第(k+1)列目〜第n列目からなり、n=k+mであり、行列Li -1(i=1〜m)は行列Liの逆行列であり、行列Liは行列BをLU分解した下三角行列Lの基本下三角行列であって、第i列目が下三角行列Lの第i列目と一致し、その他の列は非対角項が0、対角項が1である行列であり、行列Ui -1(i=1〜m)は行列Uiの逆行列であり、行列Uiは、行列BをLU分解した上三角行列Uの基本上三角行列であって、第i行目が上三角行列Uの第i行目と一致し、その他の行は非対角項が0、対角項が1である行列であり、符号化装置は、パリティ生成式に含まれる複数個の行列を表わすデータを記憶する行列記憶部と、パリティ生成式に含まれる複数回の行列乗算の中間結果を表わすデータを記憶する中間結果記憶部と、パリティベクトルYを算出するために、パリティ生成式に含まれる複数回の行列乗算を実行する行列積計算部と、行列積計算部から出力されるベクトルの符号を反転してパリティベクトルYとして出力する符号反転部とを備え、行列積計算部は、情報ベクトルX、行列記憶部内の行列を表わすデータ、または中間結果記憶部内の中間結果を表わすデータを用いて、パリティ生成式に含まれる各行列乗算を実行して、パリティ生成式に含まれる複数回の行列乗算が終了するまでの間は、該計算結果を表わすデータを中間結果を表わすデータとして中間結果記憶部内に記憶させ、パリティ生成式に含まれる複数回の行列乗算が終了したら、パリティ生成式に含まれる複数回の行列乗算の終了後に得られるベクトルを符号反転部に出力する。
好ましくは、パリティ生成式に含まれるすべての行列の非対角項の非零要素数の和は、式(A6)に含まれるすべての行列の非対角項の非零要素数の和以下である。
好ましくは、符号化装置は、パリティベクトルYを生成する前に、パリティ生成式に含まれる行列を生成する符号化装置であって、中間結果記憶部は、さらに、パリティ生成式に含まれる行列を生成する処理の中間結果を表わすデータを記憶し、行列積計算部は、さらに、式(A6)に含まれる隣接する2個以上の行列の乗算を実行して、乗算結果である行列Cを表わすデータを出力し、符号化装置は、さらに、パリティ検査行列Hを行列Aと行列Bに分解して、行列Aを表わすデータを行列記憶部に記憶させる検査行列分解部と、行列Bを下三角行列Lと上三角行列Uの積にLU分解して、下三角行列Lを表わすデータおよび上三角行列Uを表わすデータを中間結果記憶部に記憶させるLU分解部と、中間結果記憶部から上三角行列Uおよび下三角行列Lを表わすデータを読み出して、上三角行列Uをm個の基本上三角行列Ui(i=1〜m)の積に分解し、下三角行列Lをm個の基本下三角行列Li(i=1〜m)の積に分解し、分解された行列Ui(i=1〜m)および行列Li(i=1〜m)を表わすデータを中間結果記憶部に記憶させる基本行列分解部と、中間結果記憶部から行列Ui(i=1〜m)および行列Li(i=1〜m)を表わすデータを読み出して、行列Ui(i=1〜m)および行列Li(i=1〜m)の非対角項の要素の符号を反転することによって、逆行列Ui -1(i=1〜m)および逆行列Li -1(i=1〜m)を算出し、逆行列Ui -1(i=1〜m)および逆行列Li -1(i=1〜m)を表わすデータを中間結果記憶部に記憶させる逆行列計算部と、乗算結果である行列Cの非零要素数と式(A6)に含まれる行列のうち隣接する2個以上の行列を除いた行列の非対角項の非零要素数の和が、式(A6)に含まれるすべての行列の非対角項の非零要素数の和以下である場合に、中間結果記憶部に記憶されている式(A6)に含まれる行列のうち隣接する2個以上の行列を除いた行列を表わすデータと、行列Cを表わすデータとを行列記憶部に記憶する行列乗算数削減部とを備える。
本発明の別の局面に係る符号化装置は、要素数kの情報ベクトルXから、u≧1かつv≧1のときには式(A7−1)、u≧1かつv=0のときには式(A7−2)、u=0かつv≧1のときには式(A7−3)に含まれる少なくとも1セットの隣接する2個以上の行列が、2個以上の行列の乗算結果である行列Cで置換されたパリティ生成式にしたがって2を法とする演算を行なうことによって、要素数mのパリティベクトルYを生成する符号化装置であって、
Y≡E(v)U′1U′2・・・U′m-1U′mL′mL′m-1・・・L′2L′1(u)X ・・・(A7−1)
Y≡U′1U′2・・・U′m-1U′mL′mL′m-1・・・L′2L′1(u)X ・・・(A7−2)
Y≡E(v)U′1U′2・・・U′m-1U′mL′mL′m-1・・・L′2L′1AX ・・・(A7−3)
ただし、(X,Y)Tは、ベクトル(X,Y)の転置を表わし、パリティ検査行列Hは、H(X,Y)T≡0を満たすm行n列の行列であり、行列Aは、パリティ検査行列Hの第1列目〜第k列目からなり、行列Bは、パリティ検査行列Hの第(k+1)列目〜第n列目からなり、n=k+mであり、u≧1かつv≧1の場合には、行列B′は、行列Bに対して、u回の行の入れ替え、およびv回の列の入れ替えを行なったものであり、行列A(u)は、行列Aに対して、行列Bに対するu回の行の入れ替えと同様の入れ替えを行なったものであり、行列E(v)は、単位行列Eに対して、行列Bに対するv回の列の入れ替えと同様の入れ替えを行なったものであり、u≧1かつv=0の場合には、行列B′は、行列Bに対して、u回の行の入れ替えを行なったものであり、行列A(u)は、行列Aに対して、行列Bに対するu回の行の入れ替えと同様の入れ替えを行なったものであり、u=0かつv≧1の場合には、行列B′は、行列Bに対して、v回の列の入れ替えを行なったものであり、行列E(v)は、単位行列Eに対して、行列Bに対するv回の列の入れ替えと同様の入れ替えを行なったものであり、行列L′i(i=1〜m)は、行列B′をLU分解した下三角行列L′の基本下三角行列であって、第i列目が下三角行列L′の第i列目と一致し、その他の列は非対角項が0、対角項が1である行列であり、行列U′i(i=1〜m)は、行列B′をLU分解した上三角行列U′の基本上三角行列であって、第i行目が上三角行列U′の第i行目と一致し、その他の行は非対角項が0、対角項が1である行列であり、符号化装置は、パリティ生成式に含まれる複数個の行列を表わすデータを記憶する行列記憶部と、パリティ生成式に含まれる複数回の行列乗算の中間結果を表わすデータを記憶する中間結果記憶部と、パリティベクトルYを算出するために、パリティ生成式に含まれる複数回の行列乗算を実行する行列積計算部とを備え、行列積計算部は、情報ベクトルX、行列記憶部内の行列を表わすデータ、または中間結果記憶部内の中間結果を表わすデータを用いて、パリティ生成式に含まれる各行列乗算を実行して、パリティ生成式に含まれる複数回の行列乗算が終了するまでの間は、該計算結果を表わすデータを中間結果を表わすデータとして中間結果記憶部内に記憶させ、パリティ生成式に含まれる複数回の行列乗算が終了したら、パリティ生成式に含まれる複数回の行列乗算の終了後に得られるベクトルをパリティベクトルYとして出力する。
好ましくは、パリティ生成式に含まれるすべての行列の非対角項の非零要素数の和は、式(A7−1)、(A7−2)、または(A7−3)に含まれるすべての行列の非対角項の非零要素数の和以下である。
好ましくは、符号化装置は、パリティベクトルYを生成する前に、パリティ生成式に含まれる行列を生成する符号化装置であって、中間結果記憶部は、さらに、パリティ生成式に含まれる行列を生成する処理の中間結果を表わすデータを記憶し、行列積計算部は、さらに、式(A7−1)、(A7−2)、または(A7−3)に含まれる隣接する2個以上の行列の乗算を実行して、乗算結果である行列Cを表わすデータを出力し、符号化装置は、さらに、パリティ検査行列Hを行列Aと行列Bに分解して、行列Aおよび行列Bを表わすデータを中間結果記憶部に記憶させる検査行列分解部と、u≧1かつv≧1の場合、中間結果記憶部から行列Aおよび行列Bを表わすデータを読み出して、行列Bのオーダリングを行ない、行列Bに対してu回の行の入れ替えおよびv回の列の入れ替えを行なった行列B′を生成し、行列Aに対して行列Bに対するu回の行の入れ替えと同様の入れ替えを行なった行列A(u)を生成して中間結果記憶部に記憶させ、単位行列Eに対して行列Bに対するv回の列の入れ替えと同様の入れ替えを行なった行列E(v)を生成して中間結果記憶部に記憶させ、u≧1かつv=0の場合、中間結果記憶部から行列Aおよび行列Bを表わすデータを読み出して、行列Bのオーダリングを行ない、行列Bに対してu回の行の入れ替えを行なった行列B′を生成し、行列Aに対して行列Bに対するu回の行の入れ替えと同様の入れ替えを行なった行列A(u)を生成して中間結果記憶部に記憶させ、u=0かつv≧1の場合、中間結果記憶部から行列Bを表わすデータを読み出して、行列Bのオーダリングを行ない、行列Bに対してv回の列の入れ替えを行なった行列B′を生成し、単位行列Eに対して行列Bに対するv回の列の入れ替えと同様の入れ替えを行なった行列E(v)を生成して中間結果記憶部に記憶させるオーダリング部と、行列B′を下三角行列L′と上三角行列U′の積にLU分解して、下三角行列L′を表わすデータおよび上三角行列U′を表わすデータを中間結果記憶部に記憶させるLU分解部と、中間結果記憶部から上三角行列U′および下三角行列L′を表わすデータを読み出して、上三角行列U′をm個の基本上三角行列U′i(i=1〜m)の積に分解し、下三角行列L′をm個の基本下三角行列L′i(i=1〜m)の積に分解し、分解された行列U′i(i=1〜m)および行列′Li(i=1〜m)を表わすデータを中間結果記憶部に記憶させる基本行列分解部と、乗算結果である行列Cの非零要素数と式(A7−1)、(A7−2)、または(A7−3)に含まれる行列のうち隣接する2個以上の行列を除いた行列の非対角項の非零要素数の和が、式(A7−1)、(A7−2)、または(A7−3)に含まれるすべての行列の非対角項の非零要素数の和以下である場合に、中間結果記憶部に記憶されている式(A7−1)、(A7−2)、または(A7−3)に含まれる行列のうち隣接する2個以上の行列を除いた行列を表わすデータと、行列Cを表わすデータとを行列記憶部に記憶する行列乗算数削減部とを備える。
本発明の別の局面に係る符号化装置は、要素数kの情報ベクトルXから、u≧1かつv≧1のときには式(A8−1)、u≧1かつv=0のときには式(A8−2)、u=0かつv≧1のときには式(A8−3)に含まれる少なくとも1セットの隣接する2個以上の行列が、2個以上の行列の乗算結果である行列Cで置換されたパリティ生成式にしたがって実数演算を行なうことによって、要素数mのパリティベクトルYを生成する符号化装置であって、
Y=−E(v)U′1 -1U′2 -1・・・U′m-1 -1U′m -1L′m -1L′m-1 -1・・・L′2 -1L′1 -1(u)X ・・・(A8−1)
Y=−U′1 -1U′2 -1・・・U′m-1 -1U′m -1L′m -1L′m-1 -1・・・L′2 -1L′1 -1(V)X ・・・(A8−2)
Y=−E(v)U′1 -1U′2 -1・・・U′m-1 -1U′m -1L′m -1L′m-1 -1・・・L′2 -1L′1 -1AX ・・・(A8−3)
ただし、(X,Y)Tは、ベクトル(X,Y)の転置を表わし、パリティ検査行列Hは、H(X,Y)T=0を満たすm行n列の行列であり、行列Aは、パリティ検査行列Hの第1列目〜第k列目からなり、行列Bは、パリティ検査行列Hの第(k+1)列目〜第n列目からなり、n=k+mであり、u≧1かつv≧1の場合には、行列B′は、行列Bに対して、u回の行の入れ替え、およびv回の列の入れ替えを行なったものであり、行列A(u)は、行列Aに対して、行列Bに対するu回の行の入れ替えと同様の入れ替えを行なったものであり、行列E(v)は、単位行列Eに対して、行列Bに対するv回の列の入れ替えと同様の入れ替えを行なったものであり、u≧1かつv=0の場合には、行列B′は、行列Bに対して、u回の行の入れ替えを行なったものであり、行列A(u)は、行列Aに対して、行列Bに対するu回の行の入れ替えと同様の入れ替えを行なったものであり、u=0かつv≧1の場合には、行列B′は、行列Bに対して、v回の列の入れ替えを行なったものであり、行列E(v)は、単位行列Eに対して、行列Bに対するv回の列の入れ替えと同様の入れ替えを行なったものであり、行列L′i -1(i=1〜m)は行列L′iの逆行列であり、行列L′iは、行列B′をLU分解した下三角行列L′の基本下三角行列であって、第i列目が下三角行列L′の第i列目と一致し、その他の列は非対角項が0、対角項が1である行列であり、行列U′i -1(i=1〜m)は行列U′iの逆行列であり、行列U′iは、行列B′をLU分解した上三角行列U′の基本上三角行列であって、第i行目が上三角行列U′の第i行目と一致し、その他の行は非対角項が0、対角項が1である行列であり、符号化装置は、パリティ生成式に含まれる複数個の行列を表わすデータを記憶する行列記憶部と、パリティ生成式に含まれる複数回の行列乗算の中間結果を表わすデータを記憶する中間結果記憶部と、パリティベクトルYを算出するために、パリティ生成式に含まれる複数回の行列乗算を実行する行列積計算部と、行列積計算部から出力されるベクトルの符号を反転してパリティベクトルYとして出力する符号反転部とを備え、行列積計算部は、情報ベクトルX、行列記憶部内の行列を表わすデータ、または中間結果記憶部内の中間結果を表わすデータを用いて、パリティ生成式に含まれる各行列乗算を実行して、パリティ生成式に含まれる複数回の行列乗算が終了するまでの間は、該計算結果を表わすデータを中間結果を表わすデータとして中間結果記憶部内に記憶させ、パリティ生成式に含まれる複数回の行列乗算が終了したら、パリティ生成式に含まれる複数回の行列乗算の終了後に得られるベクトルを符号反転部に出力する。
好ましくは、パリティ生成式に含まれるすべての行列の非対角項の非零要素数の和は、式(A8−1)、(A8−2)、または(A8−3)に含まれるすべての行列の非対角項の非零要素数の和以下である。
好ましくは、符号化装置は、パリティベクトルYを生成する前に、パリティ生成式に含まれる行列を生成する符号化装置であって、中間結果記憶部は、さらに、パリティ生成式に含まれる行列を生成する処理の中間結果を表わすデータを記憶し、行列積計算部は、さらに、式(A8−1)、(A8−2)、または(A8−3)に含まれる隣接する2個以上の行列の乗算を実行して、乗算結果である行列Cを表わすデータを出力し、符号化装置は、さらに、パリティ検査行列Hを行列Aと行列Bに分解して、行列Aおよび行列Bを表わすデータを中間結果記憶部に記憶させる検査行列分解部と、u≧1かつv≧1の場合、中間結果記憶部から行列Aおよび行列Bを表わすデータを読み出して、行列Bのオーダリングを行ない、行列Bに対してu回の行の入れ替えおよびv回の列の入れ替えを行なった行列B′を生成し、行列Aに対して行列Bに対するu回の行の入れ替えと同様の入れ替えを行なった行列A(u)を生成して中間結果記憶部に記憶させ、単位行列Eに対して行列Bに対するv回の列の入れ替えと同様の入れ替えを行なった行列E(v)を生成して中間結果記憶部に記憶させ、u≧1かつv=0の場合、中間結果記憶部から行列Aおよび行列Bを表わすデータを読み出して、行列Bのオーダリングを行ない、行列Bに対してu回の行の入れ替えを行なった行列B′を生成し、行列Aに対して行列Bに対するu回の行の入れ替えと同様の入れ替えを行なった行列A(u)を生成して中間結果記憶部に記憶させ、u=0かつv≧1の場合、中間結果記憶部から行列Bを表わすデータを読み出して、行列Bのオーダリングを行ない、行列Bに対してv回の列の入れ替えを行なった行列B′を生成し、単位行列Eに対して行列Bに対するv回の列の入れ替えと同様の入れ替えを行なった行列E(v)を生成して中間結果記憶部に記憶させるオーダリング部と、行列B′を下三角行列L′と上三角行列U′の積にLU分解して、下三角行列L′を表わすデータおよび上三角行列U′を表わすデータを中間結果記憶部に記憶させるLU分解部と、中間結果記憶部から上三角行列U′および下三角行列L′を表わすデータを読み出して、上三角行列U′をm個の基本上三角行列U′i(i=1〜m)の積に分解し、下三角行列L′をm個の基本下三角行列L′i(i=1〜m)の積に分解し、分解された行列U′i(i=1〜m)および行列′Li(i=1〜m)を表わすデータを中間結果記憶部に記憶させる基本行列分解部と、中間結果記憶部から行列U′i(i=1〜m)および行列L′i(i=1〜m)を表わすデータを読み出して、行列U′i(i=1〜m)および行列L′i(i=1〜m)の非対角項の要素の符号を反転することによって、逆行列U′i -1(i=1〜m)および逆行列L′i -1(i=1〜m)を算出し、逆行列U′i -1(i=1〜m)および逆行列L′i -1(i=1〜m)を表わすデータを中間結果記憶部に記憶させる逆行列計算部と、乗算結果である行列Cの非零要素数と式(A8−1)、(A8−2)、または(A8−3)に含まれる行列のうち隣接する2個以上の行列を除いた行列の非対角項の非零要素数の和が、式(A8−1)、(A8−2)、または(A8−3)に含まれるすべての行列の非対角項の非零要素数の和以下である場合に、中間結果記憶部に記憶されている式(A8−1)、(A8−2)、または(A8−3)に含まれる行列のうち隣接する2個以上の行列を除いた行列を表わすデータと、行列Cを表わすデータとを行列記憶部に記憶する行列乗算数削減部とを備える。
好ましくは、行列積計算部は、パリティ生成式に含まれる複数回の行列乗算のうち、パリティ生成式の右側にある行列乗算から順次実行する。
好ましくは、行列積計算部は、パリティ生成式に含まれる複数回の行列乗算のうち2個以上の行列乗算を並行して実行する。
本発明の別の局面に係る符号化プログラムは、要素数kの情報ベクトルXから式(A9)で表わされるパリティ生成式にしたがって2を法とする演算を行なうことによって、要素数mのパリティベクトルYを生成する符号化プログラムであって、
Y≡U12・・・Um-1mmm-1・・・L21AX ・・・(A9)
ただし、(X,Y)Tは、ベクトル(X,Y)の転置を表わし、パリティ検査行列Hは、H(X,Y)T≡0を満たすm行n列の行列であり、行列Aは、パリティ検査行列Hの第1列目〜第k列目からなり、行列Bは、パリティ検査行列Hの第(k+1)列目〜第n列目からなり、n=k+mであり、行列Li(i=1〜m)は、行列BをLU分解した下三角行列Lの基本下三角行列であって、第i列目が下三角行列Lの第i列目と一致し、その他の列は非対角項が0、対角項が1である行列であり、行列Ui(i=1〜m)は、行列BをLU分解した上三角行列Uの基本上三角行列であって、第i行目が上三角行列Uの第i行目と一致し、その他の行は非対角項が0、対角項が1である行列であり、符号化プログラムは、コンピュータを、パリティ生成式に含まれる複数個の行列を表わすデータを記憶する行列記憶部と、パリティ生成式に含まれる複数回の行列乗算の中間結果を表わすデータを記憶する中間結果記憶部と、パリティベクトルYを算出するために、パリティ生成式に含まれる複数回の行列乗算を実行する行列積計算部として機能させ、行列積計算部は、情報ベクトルX、行列記憶部内の行列を表わすデータ、または中間結果記憶部内の中間結果を表わすデータを用いて、パリティ生成式に含まれる各行列乗算を実行して、パリティ生成式に含まれる複数回の行列乗算が終了するまでの間は、該計算結果を表わすデータを中間結果を表わすデータとして中間結果記憶部内に記憶させ、パリティ生成式に含まれる複数回の行列乗算が終了したら、パリティ生成式に含まれる複数回の行列乗算の終了後に得られるベクトルをパリティベクトルYとして出力する。
好ましくは、 符号化プログラムは、パリティベクトルYを生成する前に、パリティ生成式に含まれる行列を生成する符号化プログラムであって、中間結果記憶部は、さらに、パリティ生成式に含まれる行列を生成する処理の中間結果を表わすデータを記憶し、符号化プログラムは、コンピュータを、さらに、パリティ検査行列Hを行列Aと行列Bに分解して、行列Aを表わすデータを行列記憶部に記憶させる検査行列分解部と、行列Bを下三角行列Lと上三角行列Uの積にLU分解して、下三角行列Lを表わすデータおよび上三角行列Uを表わすデータを中間結果記憶部に記憶させるLU分解部と、中間結果記憶部から上三角行列Uおよび下三角行列Lを表わすデータを読み出して、上三角行列Uをm個の基本上三角行列Ui(i=1〜m)の積に分解し、下三角行列Lをm個の基本下三角行列Li(i=1〜m)の積に分解し、分解された行列Ui(i=1〜m)および行列Li(i=1〜m)を表わすデータを行列記憶部に記憶させる基本行列分解部として機能させる。
本発明によれば、従来よりも少ない計算量でパリティを計算することができる。
(全体構成)
以下、本発明に係る実施の形態について図面を参照して説明する。
図1は、本発明の実施形態の通信システムの構成の一例を示す図である。
図1の通信システムにおいて、送信装置1は、符号化器2と変調器3とを備え、受信装置4は、復調器6と誤り訂正復号化器7とを備える。
符号化器2は、kビットの情報ビットからなる情報ベクトルXに対し、mビットのパリティビットからなるパリティベクトルYを付加して、n(=(k+m))ビットのLDPC符号(低密度パリティ検査符号)Zを生成する。パリティベクトルYの生成のために用いられるパリティ検査行列H(m行、n列)においては、行数mが冗長ビット数に対応し、列数nが符号ビット数に対応する。
変調器3は、通信路7の構成に応じて、LDPC符号Zに対して、振幅変調、位相変調、コード変調、周波数変調または直行周波数分割多重変調などの変調を行なう。
復調器6は、通信路7を介して受信した変調信号に対して、この通信路7における送信形態に応じて復調処理を行なうことによって、nビットの多値量子化(Lを多値数とすると、L≧2)されたデジタル符号を出力する。たとえば、振幅変調、位相変調、コード変調、周波数変調および直行周波数分割多重変調等の場合、復調器において、振幅復調、位相復調、コード復調、および周波数復調等の処理が行なわれる。
誤り訂正復号化器5は、復調器から出力されるnビットの符号にパリティ検査行列Hを適用して、kビットの情報ビットからなる情報ベクトルXを復元する。
[第1の実施形態]
第1の実施形態の符号化器は、2を法とする演算を行なう。
(符号化アルゴリズム)
符号化器は、k個の情報ビットx1、x2、・・・、xkからなる情報ベクトルXを受けて、2を法とする演算を行なうことによって、以下の式を満たすようなm個のパリティビットy1、y2、・・・、ymからなるパリティベクトルYを生成する。
H(X,Y)T≡0 ・・・(B1)
ここで、Hはパリティ検査行列(以下、検査行列とも言う)であり、m行n列(=k+m)の行列である。
(X,Y)Tは、情報ベクトルとパリティベクトルからなるベクトルの転置を表わす。
式(B1)は、2を法とする演算の場合には、次のように変形される。
BY≡AX ・・・(B2)
ここで、行列Aは、検査行列Hの第1列目〜第k列目からなるm行k列の行列である。行列Bは、検査行列Hの第(k+1)列目〜第n列目からなるm行m列の行列である。
行列BをLU分解すると、式(B2)は以下の式に変形される。
LUY≡AX ・・・(B3)
ここで、Lは下三角行列であり、Uは上三角行列である。
式(B3)より、列ベクトルYは、以下の式で表わされる。
Y≡U-1-1AX ・・・(B4)
上三角行列Uは、以下の式のように、基本上三角行列Ui(i=1〜m)の積に分解される。
U≡Umm-1・・・U21 ・・・(B5)
式(B5)より、逆行列U-1は、以下の式で表わされる。
-1≡U1 -12 -1・・・Um-1 -1m -1 ・・・(B6)
下三角行列Lは、以下の式のように、基本下三角行列Li(i=1〜m)の積に分解される。
L≡L12・・・Lm-1m ・・・(B7)
式(B7)より、逆行列L-1は、以下の式で表わされる。
-1≡Lm -1m-1 -1・・・L2 -11 -1 ・・・(B8)
式(B6)および式(B8)によって、式(B4)は以下の式に変形される。
Y≡(U1 -12 -1・・・Um-1 -1m -1)(Lm -1m-1 -1・・・L2 -11 -1)AX ・・・(B9)
ところで、2を法とする演算の場合には、基本上三角行列Ui(i=1〜m)、基本下三角行列Li(i=1〜m)は、以下のような性質を有する。
i≡(Ui-1 ・・・(B10)
i≡(Li-1 ・・・(B11)
式(B10)および式(B11)によって、式(B9)は以下の式に変形される。
Y≡U12・・・Um-1mmm-1・・・L21AX ・・・(B12)
式(B12)で算出されるパリティベクトルYと、情報ベクトルXを用いて、符号化ベクトルZは、以下の式で表わされる。
Z≡(X,Y) ・・・(B13)
ここで、符号化ベクトルZの第1ビット〜第kビットは、情報ベクトルXのビットであり、符号化ベクトルZの第(k+1)ビット〜第nビットは、パリティベクトルYのビットである。
(構成)
図2は、第1の実施形態の符号化器の構成を表わす図である。
図2を参照して、この符号化器2aは、検査行列分解部10と、LU分解部14と、基本行列分解部16と、中間結果記憶部12と、行列記憶部18と、行列積計算部11と、配列部20と、行列積計算制御部121とを備える。
検査行列分解部10は、検査行列Hを行列A、Bに分解して、行列Aを表わすデータを行列記憶部18に記憶させ、行列Bを表わすデータを中間結果記憶部12に記憶させる。情報ベクトルXの次元をk、パリティベクトルYの次元をmとし、k+m=nとしたときに、検査行列Hは、m×nの行列である。検査行列分解部10は、検査行列Hから第1列目〜第k列目を抜き出して、行列Aとし、第(k+1)列目から第n列目までを抜き出して、行列Bとする。Aは、m×kの行列であり、Bは、m×mの行列である。
LU分解部14は、加算器13および乗算器15を備える。LU分解部14は、Crout(クラウト)のアルゴリズムにしたがって、行列BをLU分解して、下三角行列Lと、上三角行列Uとを生成する。
基本行列分解部16は、上三角行列Uを式(B5)のように、基本上三角行列Ui(i=1〜m)の積に分解する。また、基本行列分解部16は、下三角行列Lを式(B7)のように、基本下三角行列Li(i=1〜m)の積に分解する。
基本上三角行列Uiは、第i行が上三角行列Uの第i行であり、第i行以外の行は、対角項の要素が1で、非対角項の要素が0であるような行列である。
たとえば、上三角行列Uが式(1)で表わされる場合には、基本上三角行列U1、U2、U3は、それぞれ、式(2)、式(3)、式(4)で表わされる。
Figure 2008258774
基本下三角行列Liは、第i列が下三角行列Lの第i列であり、第i列以外の列は、対角項の要素が1であり、非対角項の要素が0であるような行列である。
たとえば、下三角行列Lが式(5)で表わされる場合には、基本下三角行列L1、L2、L3は、それぞれ、式(6)、式(7)、式(8)で表わされる。
Figure 2008258774
行列記憶部18は、基本上三角行列U1、U2、・・・、Umを表わすデータ、基本下三角行列Lm、Lm-1、・・・、L1を表わすデータ、および行列Aを表わすデータを記憶する。
行列積計算部11は、加算器17および乗算器19を備える。行列積計算部11は、パリティベクトルYを算出するために、式(B12)に含まれる(2m+1)回の行列乗算を行列積計算制御部121に指示された順序で実行する。行列積計算部11は、入力される情報ベクトルX、行列記憶部18内の行列U1、U2、・・・、Um、Lm、Lm-1、・・・、L1、Aを表わすデータ、および中間結果記憶部12内の中間結果を表わすデータのうちの2つを用いて各行列乗算を実行する。行列積計算部11は、式(B12)に含まれる(2m+1)回の行列乗算が終了するまでの間は、計算結果を表わすデータを中間結果を表わすデータとして中間結果記憶部12に記憶させる。
行列積計算制御部121は、パリティベクトルYを算出するために、行列記憶部18にデータが記憶されている行列の順序が先頭からA、L1、L2、・・・、Lm-1、Lm、Um、Um-1、・・・、U2、U1の順となるように行列間の順序を設定し、この順序で行列乗算を行なうように行列積計算部11を制御する。また、行列積計算制御部121は、式(B12)に含まれる(2m+1)回の行列乗算の終了後に、行列積計算部11から計算結果であるパリティベクトルYを出力させる。
中間結果記憶部12は、式(B12)に含まれる行列を生成する処理(行列分解処理)における中間結果を表わすデータを記憶する。また、中間結果記憶部12は、パリティベクトルYの生成処理時に、式(B12)に含まれる(2m+1)回の行列乗算の中間結果を表わすデータを記憶する。
配列部20は、kビットの情報ベクトルXと、算出されたmビットのパリティべクトルYからなるnビットの符号化ベクトルZを生成して、出力する。
(行列分解処理)
図3は、第1の実施形態の行列分解処理のフローチャートである。
図3を参照して、検査行列分解部10は、検査行列Hを行列A、Bに分解する。検査行列分解部10は、行列Aを表わすデータを行列記憶部18に記憶させ、行列Bを表わすデータを中間結果記憶部12に記憶させる(ステップS101)。
次に、LU分解部14は、中間結果記憶部12から行列Bを表わすデータを読み出して、行列BをLU分解して、下三角行列Lを表わすデータと、上三角行列Uを表わすデータとを中間結果記憶部12に記憶させる(ステップS102)。
次に、基本行列分解部16は、中間結果記憶部12から上三角行列Uを表わすデータを読み出して、上三角行列Uを基本上三角行列U1、U2、・・・、Umの積に分解して、基本上三角行列U1、U2、・・・、Umを表わすデータを行列記憶部18に記憶させる。また、基本行列分解部16は、中間結果記憶部12から下三角行列Lを表わすデータを読み出して、下三角行列Lを基本下三角行列L1、L2、・・・、Lmの積に分解して、基本下三角行列L1、L2、・・・、Lmを表わすデータを行列記憶部18に記憶させる(ステップS103)。
(符号化ベクトル生成処理)
図4は、第1の実施形態の符号化ベクトル生成処理のフローチャートである。
図4を参照して、行列積計算制御部121は、行列記憶部18にデータが記憶されている行列の順序が先頭からA、L1、L2、・・・、Lm-1、Lm、Um、Um-1、・・・、U2、U1の順となるように行列間の順序を設定する(ステップS201)。
次に、行列積計算制御部121は、制御変数iを1に設定する(ステップS202)。
行列積計算制御部121は、行列積計算部11を指示して、行列記憶部18から第i(=1)順位の行列Aを表わすデータを読み出させて、行列Aと、入力された情報ベクトルXとの積AXを計算させる。行列積計算部11は、乗算結果であるベクトルを中間結果Rとし、中間結果Rを表わすデータを中間結果記憶部12に記憶させる(ステップS203)。
次に、行列積計算制御部121は、制御変数iをインクリメントする(ステップS204)。
行列積計算制御部121は、制御変数iが(2m+1)未満の場合には(ステップS205でYES)、行列積計算部11を指示して、行列記憶部18から第i順位の行列(これをMatiとする)を表わすデータを読み出させるとともに、中間結果記憶部12に記憶されている中間結果Rを表わすデータとを読出させて、行列Matiと中間結果Rとの積Mati×Rを計算させる。行列積計算部11は、乗算結果であるベクトルを新たな中間結果Rとし、中間結果記憶部12内の中間結果Rを表わすデータを更新する(ステップS206)。その後、ステップS204からの処理が繰返される。
制御変数iが(2m+1)となった場合には(ステップS205でNO)、行列積計算制御部121は、行列積計算部11を指示して、行列記憶部18から第i順位の行列(Mati)を表わすデータを読み出させるとともに、中間結果記憶部12に記憶されている中間結果Rを表わすデータとを読出させて、行列Matiと中間結果Rとの積Mati×Rを計算させる。行列積計算部11は、乗算結果であるベクトルをパリティべクトルYとして出力する(ステップS207)。
その後、配列部20は、kビットの情報ベクトルXとmビットのパリティべクトルYからなるnビットの符号化ベクトルZを生成して、出力する(ステップS208)。
(第1の実施形態の効果)
以上のように、第1の実施形態によれば、符号化ベクトル生成処理時において、後退代入を行わずに、式(B12)に従ってパリティベクトルYを算出するので、少ない計算量で情報ベクトルXの符号化を行なうことができる。特に、基本上三角行列Ui(i=1〜m)および基本下三角行列Li(i=1〜m)は非零要素数が少ない行列のため、式(B12)の演算の計算量が少ない。また、式(B12)の右側にある行列乗算から順次実行してパリティベクトルYを算出するので、各行列乗算の結果はベクトルとなり、中間結果を記憶するための容量を小さくすることができる。
また、行列分解処理時において、行列Bの逆行列を計算するという計算量の多い演算を行なうことなく、行列BのLU分解、LU分解された上三角行列の基本上三角行列の積への分解、LU分解された下三角行列の基本下三角行列の積への分解を行なえばよいので、少ない計算量でパリティベクトルYを生成するのに必要な行列を算出することができる。
[第1の実施形態の変形例1]
第1の実施形態の変形例1の符号化器は、実数演算を行なう。
(符号化アルゴリズム)
符号化器は、k個の情報ビットx1、x2、・・・、xkからなる情報ベクトルXを受けて、実数演算を行なうことによって、以下の式を満たすようなm個のパリティビットy1、y2、・・・、ymからなるパリティベクトルYを生成する。
H(X,Y)T=0 ・・・(C1)
ここで、Hはパリティ検査行列(以下、検査行列とも言う)であり、m行n列(=k+m)の行列である。
(X,Y)Tは、情報ベクトルとパリティベクトルからなるベクトルの転置を表わす。
式(C1)は、実数演算の場合には、次のように変形される。
BY=−AX ・・・(C2)
ここで、行列Aは、検査行列Hの第1列目〜第k列目からなるm行k列の行列である。行列Bは、検査行列Hの第(k+1)列目〜第n列目からなるm行m列の行列である。
行列BをLU分解すると、式(C2)は以下の式に変形される。
LUY=−AX ・・・(C3)
ここで、Lは下三角行列であり、Uは上三角行列である。
式(C3)より、列ベクトルYは、以下の式で表わされる。
Y=−U-1-1AX ・・・(C4)
上三角行列Uは、以下の式のように、基本上三角行列Ui(i=1〜m)の積に分解される。
U=Umm-1・・・U21 ・・・(C5)
式(C5)より、逆行列U-1は、以下の式で表わされる。
-1=U1 -12 -1・・・Um-1 -1m -1 ・・・(C6)
ここで、Ui -1は、対角項の要素が1であり、かつ非対角項の要素はUiの要素の符号を反転したものである。
下三角行列Lは、以下の式のように、基本下三角行列Li(i=1〜m)の積に分解される。
L=L12・・・Lm-1m ・・・(C7)
式(C7)より、逆行列L-1は、以下の式で表わされる。
-1=Lm -1m-1 -1・・・L2 -11 -1 ・・・(C8)
ここで、Li -1は、対角項の要素が1であり、かつ非対角項の要素はLiの要素の符号を反転したものである。
式(C6)および式(C8)によって、式(C4)は以下の式に変形される。
Y=−U1 -12 -1・・・Um-1 -1m -1m -1m-1 -1・・・L2 -11 -1AX ・・・(C9)
式(C9)で算出されるパリティベクトルYと、情報ベクトルXを用いて、符号化ベクトルZは、以下の式で表わされる。
Z=(X,Y) ・・・(C10)
ここで、符号化ベクトルZの第1ビット〜第kビットは、情報ベクトルXのビットであり、符号化ベクトルZの第(k+1)ビット〜第nビットは、パリティベクトルYのビットである。
(構成)
図5は、第1の実施形態の変形例1の符号化器の構成を表わす図である。
図5を参照して、この符号化器2bは、第1の実施形態と同様の、検査行列分解部10と、LU分解部14と、基本行列分解部16と、配列部20とを備える。これらについては説明を繰返さない。
また、符号化器2bは、行列記憶部28と、逆行列計算部23と、行列積計算部21と、中間結果記憶部22と、符号反転部99と、行列積計算制御部122とを備える。
逆行列計算部23は、中間結果記憶部22から基本上三角行列U1、U2、・・・、Umおよび基本下三角行列L1、L2、・・・、Lmを表わすデータを読み出して、行列U1、U2、・・・、Um、L1、L2、・・・、Lmの非対角項の要素の符号を反転することによって、行列U1、U2、・・・、Um、L1、L2、・・・、Lmの逆行列U1 -1、U2 -1、・・・、Um -1、L1 -1、L2 -1、・・・、Lm -1を算出し、逆行列U1 -1、U2 -1、・・・、Um -1、L1 -1、L2 -1、・・・、Lm -1を表わすデータを行列記憶部28に記憶させる。
たとえば、行列U4が式(9)で表わされる場合には、逆行列U4 -1は、式(10)で表わされる。
Figure 2008258774
たとえば、行列L4が式(11)で表わされる場合には、逆行列L4 -1は、式(12)で表わされる。
Figure 2008258774
行列記憶部28は、基本上三角行列の逆行列U1 -1、U2 -1、・・・、Um -1を表わすデータ、基本下三角行列の逆行列Lm -1、Lm-1 -1、・・・、L1 -1を表わすデータ、および行列Aを表わすデータを記憶する。
行列積計算部21は、加算器27および乗算器29を備える。行列積計算部21は、パリティベクトルYを算出するために、式(C9)に含まれる(2m+1)回の行列乗算を行列積計算制御部122に指示された順序で実行する。行列積計算部21は、入力される情報ベクトルX、行列記憶部28内の行列U1 -1、U2 -1、・・・、Um -1、Lm -1、Lm-1 -1、・・・、L1 -1、Aを表わすデータ、および中間結果記憶部22内の中間結果を表わすデータのうちの2つを用いて各行列乗算を実行する。行列積計算部21は、式(C9)に含まれる(2m+1)回の行列乗算が終了するまでの間は、計算結果を表わすデータを中間結果を表わすデータとして中間結果記憶部22に記憶させる。
行列積計算制御部122は、パリティベクトルYを算出するために、行列記憶部28にデータが記憶されている行列の順序が先頭からA、L1 -1、L2 -1、・・・、Lm-1 -1、Lm -1、Um -1、Um-1 -1、・・・、U2 -1、U1 -1の順となるように行列間の順序を設定し、この順序で行列乗算を行なうように行列積計算部21を制御する。また、行列積計算制御部122は、式(C9)に含まれる(2m+1)回の行列乗算の終了後に、行列積計算部21から計算結果であるベクトルY′(=U1 -12 -1・・・Um-1 -1m -1m -1m-1 -1・・・L2 -11 -1AX)を符号反転部99へ出力させる。
中間結果記憶部22は、式(C9)に含まれる行列を生成する処理(行列分解処理)における中間結果を表わすデータを記憶する。また、中間結果記憶部22は、パリティベクトルYの生成処理時に、式(C9)に含まれる(2m+1)回の行列乗算の中間結果を表わすデータを記憶する。
符号反転部99は、ベクトルY′の符号を反転して(つまり、ベクトルの各要素の符号を反転して)、それをパリティベクトルYとして出力する。
(行列分解処理)
図6は、第1の実施形態の変形例1の行列分解処理のフローチャートである。
図6を参照して、検査行列分解部10は、検査行列Hを行列A、Bに分解する。検査行列分解部10は、行列Aを表わすデータを行列記憶部28に記憶させ、行列Bを表わすデータを中間結果記憶部22に記憶させる(ステップS301)。
次に、LU分解部14は、中間結果記憶部22から行列Bを表わすデータを読み出して、行列BをLU分解して、下三角行列Lを表わすデータと、上三角行列Uを表わすデータとを中間結果記憶部22に記憶させる(ステップS302)。
次に、基本行列分解部16は、中間結果記憶部22から上三角行列Uを表わすデータを読み出して、上三角行列Uを基本上三角行列U1、U2、・・・、Umの積に分解して、基本上三角行列U1、U2、・・・、Umを表わすデータを中間結果記憶部22に記憶させる。また、基本行列分解部16は、中間結果記憶部22から下三角行列Lを表わすデータを読み出して、下三角行列Lを基本下三角行列L1、L2、・・・、Lmの積に分解して、基本下三角行列L1、L2、・・・、Lmを表わすデータを中間結果記憶部22に記憶させる(ステップS303)。
逆行列計算部23は、中間結果記憶部22から基本上三角行列U1、U2、・・・、Umおよび基本下三角行列L1、L2、・・・、Lmを表わすデータを読み出して、行列U1、U2、・・・、Um、L1、L2、・・・、Lmの非対角項の要素の符号を反転することによって、行列U1、U2、・・・、Um、L1、L2、・・・、Lmの逆行列U1 -1、U2 -1、・・・、Um -1、L1 -1、L2 -1、・・・、Lm -1を算出し、逆行列U1 -1、U2 -1、・・・、Um -1、L1 -1、L2 -1、・・・、Lm -1を表わすデータを行列記憶部28に記憶させる(ステップS304)。
(符号化ベクトル生成処理)
図7は、第1の実施形態の変形例1の符号化ベクトル生成処理のフローチャートである。
図7を参照して、行列積計算制御部122は、行列記憶部28にデータが記憶されている行列の順序が先頭からA、L1 -1、L2 -1、・・・、Lm-1 -1、Lm -1、Um -1、Um-1 -1、・・・、U2 -1、U1 -1の順となるように行列間の順序を設定する(ステップS401)。
次に、行列積計算制御部122は、制御変数iを1に設定する(ステップS402)。
行列積計算制御部122は、行列積計算部21を指示して、行列記憶部28から第i(=1)順位の行列Aを表わすデータを読み出させて、行列Aと、入力された情報ベクトルXとの積AXを計算させる。行列積計算部21は、乗算結果であるベクトルを中間結果Rとし、中間結果Rを表わすデータを中間結果記憶部22に記憶させる(ステップS403)。
次に、行列積計算制御部122は、制御変数iをインクリメントする(ステップS404)。
行列積計算制御部122は、制御変数iが(2m+1)未満の場合には(ステップS405でYES)、行列積計算部21を指示して、行列記憶部28から第i順位の行列(これをMatiとする)を表わすデータを読み出させるとともに、中間結果記憶部22に記憶されている中間結果Rを表わすデータとを読出させて、行列Matiと中間結果Rとの積Mati×Rを計算させる。行列積計算部21は、乗算結果であるベクトルを新たな中間結果Rとし、中間結果記憶部22内の中間結果Rを表わすデータを更新する(ステップS406)。その後、ステップS404からの処理が繰返される。
制御変数iが(2m+1)となった場合には(ステップS405でNO)、行列積計算制御部122は、行列積計算部21を指示して、行列記憶部28から第i順位の行列(Mati)を表わすデータを読み出させるとともに、中間結果記憶部22に記憶されている中間結果Rを表わすデータとを読出させて、行列Matiと中間結果Rとの積Mati×Rを計算させる。行列積計算部21は、乗算結果であるベクトルY′を符号反転部99に出力する。符号反転部99は、ベクトルY′の符号を反転したものをパリティべクトルYとして出力する(ステップS407)。
その後、配列部20は、kビットの情報ベクトルXとmビットのパリティべクトルYからなるnビットの符号化ベクトルZを生成して、出力する(ステップS408)。
(第1の実施形態の変形例1の効果)
以上のように、第1の実施形態の変形例1によれば、符号化ベクトル生成処理時において、後退代入を行わずに、式(C9)に従ってパリティベクトルYを算出するので、少ない計算量で情報ベクトルXの符号化を行なうことができる。特に、基本上三角行列の逆行列Ui -1(i=1〜m)および基本下三角行列の逆行列Li -1(i=1〜m)は非零要素数が少ない行列のため、式(C9)の演算の計算量が少ない。また、式(C9)の右側にある行列乗算から順次実行してパリティベクトルYを算出するので、各行列乗算の結果はベクトルとなり、中間結果を記憶するための容量を小さくすることができる。
また、行列分解処理時において、行列Bの逆行列を計算するという計算量の多い演算を行なうことなく、行列BのLU分解、LU分解された上三角行列の基本上三角行列の積への分解、LU分解された下三角行列の基本下三角行列の積への分解、基本上三角行列および基本下三角行列の非対角項の符号の反転を行なえばよいので、少ない計算量でパリティベクトルYを生成するのに必要な行列を算出することができる。
[第2の実施形態]
第2の実施形態の符号化器は、2を法とする演算を行なう。
(符号化アルゴリズム)
符号化器は、k個の情報ビットx1、x2、・・・、xkからなる情報ベクトルXを受けて、2を法とする演算を行なうことによって、以下の式を満たすようなm個のパリティビットy1、y2、・・・、ymからなるパリティベクトルYを生成する。
H(X,Y)T≡0 ・・・(D1)
ここで、Hはパリティ検査行列(以下、検査行列とも言う)であり、m行n列(=k+m)の行列である。
(X,Y)Tは、情報ベクトルとパリティベクトルからなるベクトルの転置を表わす。
式(D1)は、2を法とする演算の場合には、次のように変形される。
BY≡AX ・・・(D2)
ここで、行列Aは、検査行列Hの第1列目〜第k列目からなるm行k列の行列である。行列Bは、検査行列Hの第(k+1)列目〜第n列目からなるm行m列の行列である。
行列Bに対して、以下のようにオーダリングを行なうとする。
まず、行列Bの2つの行を交換するとすると、式(D2)は以下のように変形される。
1BY≡P1AX ・・・(D3)
ここで、P1は、第1回目の行の入れ替えを表わす変換行列である。i行とj行を変換する場合には、P1は、単位行列Eのi行とj行を入れ替えた行列となる。
さらに、行列Bの2つの列を交換すると、式(D3)は以下のように変形される。
1BQ11 -1Y≡P1AX ・・・(D4)
ここで、Q1は、第1回目の列の入れ替えを表わす変換行列である。i列とj列を変換する場合には、Q1は、単位行列Eのi列とj列を入れ替えた行列となる。
以下のように新たな行列を定義する。
(1)≡P1BQ1 ・・・(D5)
(1)≡P1A ・・・(D6)
式(D5)および式(D6)により、式(D4)は以下の式で表わされる。
(1)1 -1Y≡A(1)X ・・・(D7)
さらに、行列B(1)の2つの行を交換するとすると、式(D7)は以下のように変形される。
2(1)1 -1Y≡P2(1)X ・・・(D8)
ここで、P2は、第2回目の行の入れ替えを表わす変換行列である。
さらに、行列B(1)の2つの列を交換すると、式(D8)は以下のように変形される。
2(1)22 -11 -1Y≡P2(1)X ・・・(D9)
ここで、Q2は、第2回目の列の入れ替えを表わす変換行列である。
以下のように新たな行列を定義する。
(2)≡P2(1)2 ・・・(D10)
(2)≡P2(1) ・・・(D11)
式(D10)および式(D11)により、式(D9)は以下の式で表わされる。
(2)2 -11 -1Y≡A(2)X ・・・(D12)
同様にして、行列Bに対して、第u回(u≧1)だけ行の入れ替えおよび第v(v≧1)だげ列の入れ替えを行なう。第s回目(1≦s≦u)の行の入れ替えを表わす行列をPs、第s回目(1≦s≦v)の列の入れ替えを表わす行列をQsとして、以下のように新たな行列を定義する。
B′≡Pu・・・P21BQ12・・・Qv ・・・(D13)
(u)≡Pu・・・P21A ・・・(D14)
(v)≡Q12・・・Qv ・・・(D15)
式(D13)、式(D14)および式(D15)により、以下の式が成り立つ。
B′E(v)-1Y≡A(u)X ・・・(D16)
行列B′をLU分解すると、式(D16)は以下の式に変形される。
L′U′E(v)-1Y≡A(u)X ・・・(D17)
ここで、L′は下三角行列であり、U′は上三角行列である。
式(D17)より、列ベクトルYは、以下の式で表わされる。
Y≡E(v)U′-1L′-1(u)X ・・・(D18)
上三角行列U′は、以下の式のように、基本上三角行列U′i(i=1〜m)の積に分解される。
U′≡U′mU′m-1・・・U′2U′1 ・・・(D19)
式(D19)より、逆行列U′-1は、以下の式で表わされる。
U′-1≡U′1 -1U′2 -1・・・U′m-1 -1U′m -1 ・・・(D20)
下三角行列L′は、以下の式のように、基本下三角行列L′i(i=1〜m)の積に分解される。
L′≡L′1L′2・・・L′m-1L′m ・・・(D21)
式(D21)より、逆行列L′-1は、以下の式で表わされる。
L′-1≡L′m -1L′m-1 -1・・・L′2 -1L′1 -1 ・・・(D22)
式(D20)および式(D22)によって、式(D18)は以下の式に変形される。
Y≡E(v)(U′1 -1U′2 -1・・・U′m-1 -1U′m -1)(L′m -1L′m-1 -1・・・L′2 -1L′1 -1)A(u)X ・・・(D23)
ところで、2を法とする演算の場合には、基本上三角行列U′i(i=1〜m)、基本下三角行列L′i(i=1〜m)は、以下のような性質を有する。
U′i≡(U′i-1 ・・・(D24)
L′i≡(L′i-1 ・・・(D25)
式(D24)および式(D25)によって、式(D23)は以下の式に変形される。
Y≡E(v)U′1U′2・・・U′m-1U′mL′mL′m-1・・・L′2L′1(u)X ・・・(D26)
式(D26)で算出されるパリティベクトルYと、情報ベクトルXを用いて、符号化ベクトルZは、以下の式で表わされる。
Z≡(X,Y) ・・・(D27)
ここで、符号化ベクトルZの第1ビット〜第kビットは、情報ベクトルXのビットであり、符号化ベクトルZの第(k+1)ビット〜第nビットは、パリティベクトルYのビットである。
(構成)
図8は、第2の実施形態の符号化器の構成を表わす図である。
図8を参照して、この符号化器2cは、検査行列分解部30と、オーダリング部40と、LU分解部34と、基本行列分解部36と、中間結果記憶部32と、行列記憶部38と、行列積計算部31と、配列部20と、行列積計算制御部123とを備える。
検査行列分解部30は、検査行列Hを行列A、Bに分解して、行列Aを表わすデータおよび行列Bを表わすデータを中間結果記憶部32に記憶させる。
オーダリング部40は、LU分解によって得られる上三角行列、下三角行列の非零要素数が少なくなるように、行列Bに対して、第u回(u≧1)の行の入れ替えおよび第v回(v≧1)の列の入れ替えを行なって、行列B′を生成する。オーダリングの手法としては、たとえば、最小次数順序法を用いることができる。また、オーダリング部40は、行列Aに対して、行列Bに対するu回の行の入れ替えと同様の入れ替えを行なって行列A(u)を生成し、単位行列Eに対して、行列Bに対するv回の列の入れ替えと同様の入れ替えを行なって、行列E(v)を生成する。
LU分解部34は、加算器33およ乗算器35を備える。LU分解部34は、Crout(クラウト)のアルゴリズムにしたがって、行列B′をLU分解して、下三角行列L′と、上三角行列U′とを生成する。
基本行列分解部36は、上三角行列U′を式(D19)のように、基本上三角行列U′i(i=1〜m)の積に分解する。また、基本行列分解部36は、下三角行列L′を式(D21)のように、基本下三角行列L′i(i=1〜m)の積に分解する。
行列記憶部38は、基本上三角行列U′1、U′2、・・・、U′mを表わすデータ、基本下三角行列L′m、L′m-1、・・・、L′1を表わすデータ、および行列A(u)、E(v)を表わすデータを記憶する。
行列積計算部31は、加算器37および乗算器39を備える。行列積計算部31は、パリティベクトルYを算出するために、式(D26)に含まれる(2m+2)回の行列乗算を行列積計算制御部123に指示された順序で実行する。行列積計算部31は、入力される情報ベクトルX、行列記憶部38内の行列U′1、U′2、・・・、U′m、L′m、L′m-1、・・・、L′1、A(u)、E(v)を表わすデータ、および中間結果記憶部32内の中間結果を表わすデータのうちの2つを用いて各行列乗算を実行する。行列積計算部31は、式(D26)に含まれる(2m+2)回の行列乗算が終了するまでの間は、計算結果を表わすデータを中間結果を表わすデータとして中間結果記憶部32に記憶させる。
行列積計算制御部123は、パリティベクトルYを算出するために、行列記憶部38にデータが記憶されている行列の順序が先頭からA(u)、L′1、L′2、・・・、L′m、U′m、U′m-1、・・・、U′1、E(v)の順となるように行列間の順序を設定し、この順序で行列乗算を行なうように行列積計算部31を制御する。また、行列積計算制御部123は、式(D26)に含まれる(2m+2)回の行列乗算の終了後に、行列積計算部31から計算結果であるパリティベクトルYを出力させる。
中間結果記憶部32は、式(D26)に含まれる行列を生成する処理(行列分解処理)における中間結果を表わすデータを記憶する。また、中間結果記憶部32は、パリティベクトルYの生成処理時に、式(D26)に含まれる(2m+2)回の行列乗算の中間結果を表わすデータを記憶する。
配列部20は、kビットの情報ベクトルXと、算出されたmビットのパリティべクトルYからなるnビットの符号化ベクトルZを生成して、出力する。
(行列分解処理)
図9は、第2の実施形態の行列分解処理のフローチャートである。
図9を参照して、検査行列分解部30は、検査行列Hを行列A、Bに分解する。検査行列分解部30は、行列Aを表わすデータおよび行列Bを表わすデータを中間結果記憶部32に記憶させる(ステップS501)。
オーダリング部40は、行列Bに対して、第u回(u≧1)の行の入れ替えおよび第v回(v≧1)の列の入れ替えを行なう。オーダリング部40は、第s回目(1≦s≦u)の行の入れ替えを表わす行列をPs、第s回目(1≦s≦v)の列の入れ替えを表わす行列をQsとして、以下のように新たな行列を生成する。
B′≡Pu・・・P21BQ12・・・Qv ・・・(D13)
(u)≡Pu・・・P21A ・・・(D14)
(v)≡Q12・・・Qv ・・・(D15)
つまり、行列B′は、行列Bに対して、u回(u≧1)の行の入れ替え、およびv回(v≧1)の列の入れ替えを行なったものである。行列A(u)は、行列Aに対して、行列Bに対するu回の行の入れ替えと同様の入れ替えを行なったものである。行列E(v)は、単位行列Eに対して、行列Bに対するv回の列の入れ替えと同様の入れ替えを行なったものである。オーダリング部40は、行列A(u)、E(v)を表わすデータを行列記憶部38に記憶させ、行列B′を表わすデータを中間結果記憶部32に記憶させる(ステップS502)。
次に、LU分解部34は、中間結果記憶部32から行列B′を表わすデータを読み出して、行列B′をLU分解して、下三角行列L′を表わすデータと、上三角行列U′を表わすデータとを中間結果記憶部32に記憶させる(ステップS503)。
次に、基本行列分解部36は、中間結果記憶部32から上三角行列U′を表わすデータを読み出して、上三角行列U′を基本上三角行列U′1、U′2、・・・、U′mの積に分解して、基本上三角行列U′1、U′2、・・・、U′mを表わすデータを行列記憶部38に記憶させる。また、基本行列分解部36は、中間結果記憶部32から下三角行列L′を表わすデータを読み出して、下三角行列Lを基本下三角行列L′1、L′2、・・・、L′mの積に分解して、基本下三角行列L′1、L′2、・・・、L′mを表わすデータを行列記憶部38に記憶させる(ステップS504)。
(符号化ベクトル生成処理)
図10は、第2の実施形態の符号化ベクトル生成処理のフローチャートである。
図10を参照して、行列積計算制御部123は、行列記憶部38にデータが記憶されている行列の順序が先頭からA(u)、L′1、L′2、・・・、L′m、U′m、U′m-1、・・・、U′1、E(v)の順となるように行列間の順序を設定する(ステップS601)。
次に、行列積計算制御部123は、制御変数iを1に設定する(ステップS602)。
行列積計算制御部123は、行列積計算部31を指示して、行列記憶部38から第i(=1)順位の行列A(u)を表わすデータを読み出させて、行列A(u)と、入力された情報ベクトルXとの積A(u)Xを計算させる。行列積計算部31は、乗算結果であるベクトルを中間結果Rとし、中間結果Rを表わすデータを中間結果記憶部32に記憶させる(ステップS603)。
次に、行列積計算制御部123は、制御変数iをインクリメントする(ステップS604)。
行列積計算制御部123は、制御変数iが(2m+2)未満の場合には(ステップS605でYES)、行列積計算部31を指示して、行列記憶部38から第i順位の行列(これをMatiとする)を表わすデータを読み出させるとともに、中間結果記憶部32に記憶されている中間結果Rを表わすデータとを読出させて、行列Matiと中間結果Rとの積Mati×Rを計算させる。行列積計算部31は、乗算結果であるベクトルを新たな中間結果Rとし、中間結果記憶部32内の中間結果Rを表わすデータを更新する(ステップS606)。その後、ステップS604からの処理が繰返される。
制御変数iが(2m+2)となった場合には(ステップS605でNO)、行列積計算制御部123は、行列積計算部31を指示して、行列記憶部38から第i順位の行列(Mati)を表わすデータを読み出させるとともに、中間結果記憶部32に記憶されている中間結果Rを表わすデータとを読出させて、行列Matiと中間結果Rとの積Mati×Rを計算させる。行列積計算部31は、乗算結果であるベクトルをパリティべクトルYとして出力する(ステップS607)。
その後、配列部20は、kビットの情報ベクトルXとmビットのパリティべクトルYからなるnビットの符号化ベクトルZを生成して、出力する(ステップS608)。
(第2の実施形態の効果)
以上のように、第2の実施形態によれば、符号化ベクトル生成処理時において、後退代入を行わずに、式(D26)に従ってパリティベクトルYを算出するので、少ない計算量で情報ベクトルXの符号化を行なうことができる。特に、行列Bがオーダリングされるため、基本上三角行列U′i(i=1〜m)および基本下三角行列L′i(i=1〜m)は、第1の実施形態の基本上三角行列Ui(i=1〜m)および基本下三角行列Li(i=1〜m)よりもさらに非零要素数が少ない行列となり、式(D26)の演算の計算量を式(B12)よりもさらに少なくできる。また、式(D26)の右側にある行列乗算から順次実行してパリティベクトルYを算出するので、各行列乗算の結果はベクトルとなり、中間結果を記憶するための容量を小さくすることができる。
また、行列分解処理時において、行列Bの逆行列を計算するという計算量の多い演算を行なうことなく、行列Bのオーダリングによる行列B′、A(u)、E(v)の生成、行列B′のLU分解、LU分解された上三角行列の基本上三角行列の積への分解、LU分解された下三角行列の基本下三角行列の積への分解を行なえばよいので、少ない計算量でパリティベクトルYを生成するのに必要な行列を算出することができる。
[第2の実施形態の変形例1]
第2の実施形態の変形例1の符号化器は、実数演算を行なう。
(符号化アルゴリズム)
符号化器は、k個の情報ビットx1、x2、・・・、xkからなる情報ベクトルXを受けて、実数演算を行なうことによって、以下の式を満たすようなm個のパリティビットy1、y2、・・・、ymからなるパリティベクトルYを生成する。
H(X,Y)T=0 ・・・(E1)
ここで、Hはパリティ検査行列(以下、検査行列とも言う)であり、m行n列(=k+m)の行列である。
(X,Y)Tは、情報ベクトルとパリティベクトルからなるベクトルの転置を表わす。
式(E1)は、実数演算の場合には、次のように変形される。
BY=−AX ・・・(E2)
ここで、行列Aは、検査行列Hの第1列目〜第k列目からなるm行k列の行列である。行列Bは、検査行列Hの第(k+1)列目〜第n列目からなるm行m列の行列である。
行列Bに対して、以下のようにオーダリングを行なうとする。
まず、行列Bの2つの行を交換するとすると、式(E2)は以下のように変形される。
1BY=P1AX ・・・(E3)
ここで、P1は、第1回目の行の入れ替えを表わす変換行列である。i行とj行を変換する場合には、P1は、単位行列Eのi行とj行を入れ替えた行列となる。
さらに、行列Bの2つの列を交換すると、式(E3)は以下のように変形される。
1BQ11 -1Y=−P1AX ・・・(E4)
ここで、Q1は、第1回目の列の入れ替えを表わす変換行列である。i列とj列を変換する場合には、Q1は、単位行列Eのi列とj列を入れ替えた行列となる。
以下のように新たな行列を定義する。
(1)=P1BQ1 ・・・(E5)
(1)=P1A ・・・(E6)
式(E5)および式(E6)により、式(E4)は以下の式で表わされる。
(1)1 -1Y=−A(1)X ・・・(E7)
さらに、行列B(1)の2つの行を交換するとすると、式(E7)は以下のように変形される。
2(1)1 -1Y=−P2(1)X ・・・(E8)
ここで、P2は、第2回目の行の入れ替えを表わす変換行列である。
さらに、行列B(1)の2つの列を交換すると、式(E8)は以下のように変形される。
2(1)22 -11 -1Y=−P2(1)X ・・・(E9)
ここで、Q2は、第2回目の列の入れ替えを表わす変換行列である。
以下のように新たな行列を定義する。
(2)=P2(1)2 ・・・(E10)
(2)=P2(1) ・・・(E11)
式(E10)および式(E11)により、式(E9)は以下の式で表わされる。
(2)2 -11 -1Y=−A(2)X ・・・(E12)
同様にして、行列Bに対して、第u回(u≧1)だけ行の入れ替えおよび第v(v≧1)だげ列の入れ替えを行なう。第s回目(1≦s≦u)の行の入れ替えを表わす行列をPs、第s回目(1≦s≦v)の列の入れ替えを表わす行列をQsとして、以下のように新たな行列を定義する。
B′=Pu・・・P21BQ12・・・Qv ・・・(E13)
(u)=Pu・・・P21A ・・・(E14)
(v)=Q12・・・Qv ・・・(E15)
式(E13)、式(E14)および式(E15)により、以下の式が成り立つ。
B′E(v)-1Y=−A(u)X ・・・(E16)
行列B′をLU分解すると、式(E16)は以下の式に変形される。
L′U′QV -1・・・Q2 -11 -1Y=A(u)X ・・・(E17)
ここで、L′は下三角行列であり、U′は上三角行列である。
式(E17)より、列ベクトルYは、以下の式で表わされる。
Y=−E(v)U′-1L′-1(u)X ・・・(E18)
上三角行列U′は、以下の式のように、基本上三角行列U′i(i=1〜m)の積に分解される。
U′=U′mU′m-1・・・U′2U′1 ・・・(E19)
ここで、逆行列U′i -1は、対角項の要素が1であり、かつ非対角項の要素はU′iの要素の符号を反転したものである。
式(E19)より、U′-1は、以下の式で表わされる。
U′-1=U′1 -1U′2 -1・・・U′m-1 -1U′m -1 ・・・(E20)
下三角行列Lは、以下の式のように、基本下三角行列Li(i=1〜m)の積に分解される。
L′=L′1L′2・・・L′m-1L′m ・・・(E21)
ここで、逆行列L′i -1は、対角項の要素が1であり、かつ非対角項の要素はL′iの要素の符号を反転したものである。
式(E21)より、L′-1は、以下の式で表わされる。
L′-1=L′m -1L′m-1 -1・・・L′2 -1L′1 -1 ・・・(E22)
式(E20)および式(E22)によって、式(E18)は以下の式に変形される。
Y=−E(v)U′1 -1U′2 -1・・・U′m-1 -1U′m -1L′m -1L′m-1 -1・・・L′2 -1L′1 -1(u)X ・・・(E23)
式(E23)で算出されるパリティベクトルYと、情報ベクトルXを用いて、符号化ベクトルZは、以下の式で表わされる。
Z=(X,Y) ・・・(E24)
ここで、符号化ベクトルZの第1ビット〜第kビットは、情報ベクトルXのビットであり、符号化ベクトルZの第(k+1)ビット〜第nビットは、パリティベクトルYのビットである。
(構成)
図11は、第2の実施形態の変形例1の符号化器の構成を表わす図である。
図11を参照して、この符号化器2dは、第2の実施形態と同様の、検査行列分解部30と、オーダリング部40と、LU分解部34と、基本行列分解部36と、配列部20とを備える。これらについては説明を繰返さない。
また、符号化器2dは、行列記憶部48と、逆行列計算部43と、行列積計算部41と、中間結果記憶部42と、符号反転部99と、行列積計算制御部124とを備える。
逆行列計算部43は、中間結果記憶部42から基本上三角行列U′1、U′2、・・・、U′mおよび基本下三角行列L′1、L′2、・・・、L′mを表わすデータを読み出して、行列U′1、U′2、・・・、U′m、L′1、L′2、・・・、L′mの非対角項の要素の符号を反転することによって、行列U′1、U′2、・・・、U′m、L′1、L′2、・・・、L′mの逆行列U′1 -1、U′2 -1、・・・、U′m -1、L′1 -1、L′2 -1、・・・、L′m -1を算出し、逆行列U′1 -1、U′2 -1、・・・、U′m -1、L′1 -1、L′2 -1、・・・、L′m -1を表わすデータを行列記憶部48に記憶させる。
行列記憶部48は、基本上三角行列の逆行列U′1 -1、U′2 -1、・・・、U′m -1を表わすデータ、基本下三角行列の逆行列L′m -1、L′m-1 -1、・・・、L′1 -1を表わすデータ、および行列A(u)、E(v)を表わすデータを記憶する。
行列積計算部41は、加算器47および乗算器49を備える。行列積計算部41は、パリティベクトルYを算出するために、式(E23)に含まれる(2m+2)回の行列乗算を行列積計算制御部124に指示された順序で実行する。行列積計算部41は、入力される情報ベクトルX、行列記憶部48内の行列U′1 -1、U′2 -1、・・・、U′m -1、L′m -1、L′m-1 -1、・・・、L′1 -1、A(u)、E(v)を表わすデータ、および中間結果記憶部42内の中間結果を表わすデータのうちの2つを用いて各行列乗算を実行する。行列積計算部41は、式(E23)に含まれる(2m+2)回の行列乗算が終了するまでの間は、計算結果を表わすデータを中間結果を表わすデータとして中間結果記憶部42に記憶させる。
行列積計算制御部124は、パリティベクトルYを算出するために、行列記憶部48にデータが記憶されている行列の順序が先頭からA(u)、L′1 -1、L′2 -1、・・・、L′m-1 -1、L′m -1、U′m -1、U′m-1 -1、・・・、U′2 -1、U′1 -1、E(v)の順となるように行列間の順序を設定し、この順序で行列乗算を行なうように行列積計算部41を制御する。また、行列積計算制御部124は、式(E23)に含まれる(2m+2)回の行列乗算の終了後に、行列積計算部41から計算結果であるベクトルY′(=E(v)U′1 -1U′2 -1・・・U′m-1 -1U′m -1L′m -1L′m-1 -1・・・L′2 -1L′1 -1(u))を符号反転部99へ出力させる。
中間結果記憶部42は、式(E23)に含まれる行列を生成する処理(行列分解処理)における中間結果を表わすデータを記憶する。また、中間結果記憶部42は、パリティベクトルYの生成処理時に、式(E23)に含まれる(2m+2)回の行列乗算の中間結果を表わすデータを記憶する。
符号反転部99は、ベクトルY′の符号を反転して(つまり、ベクトルの各要素の符号を反転して)、それをパリティベクトルYとして出力する。
(行列分解処理)
図12は、第2の実施形態の変形例1の行列分解処理のフローチャートである。
図12を参照して、検査行列分解部30は、検査行列Hを行列A、Bに分解する。検査行列分解部30は、行列Aを表わすデータおよび行列Bを表わすデータを中間結果記憶部42に記憶させる(ステップS701)。
オーダリング部40は、行列Bに対して、第u回(u≧1)の行の入れ替えおよび第v回(v≧1)の列の入れ替えを行なう。オーダリング部40は、第s回目(1≦s≦u)の行の入れ替えを表わす行列をPs、第s回目(1≦s≦v)の列の入れ替えを表わす行列をQsとして、以下のように新たな行列を生成する。
B′=Pu・・・P21BQ12・・・Qv ・・・(D13)
(u)=Pu・・・P21A ・・・(D14)
(v)=Q12・・・Qv ・・・(D15)
つまり、行列B′は、行列Bに対して、u回(u≧1)の行の入れ替え、およびv回(v≧1)の列の入れ替えを行なったものである。行列A(u)は、行列Aに対して、行列Bに対するu回の行の入れ替えと同様の入れ替えを行なったものである。行列E(v)は、単位行列Eに対して、行列Bに対するv回の列の入れ替えと同様の入れ替えを行なったものである。オーダリング部40は、行列A(u)、E(v)を表わすデータを行列記憶部48に記憶させ、行列B′を表わすデータを中間結果記憶部42に記憶させる(ステップS702)。
次に、LU分解部34は、中間結果記憶部42から行列B′を表わすデータを読み出して、行列B′をLU分解して、下三角行列L′を表わすデータと、上三角行列U′を表わすデータとを中間結果記憶部42に記憶させる(ステップS703)。
次に、基本行列分解部36は、中間結果記憶部42から上三角行列U′を表わすデータを読み出して、上三角行列U′を基本上三角行列U′1、U′2、・・・、U′mの積に分解して、基本上三角行列U′1、U′2、・・・、U′mを表わすデータを中間結果記憶部42に記憶させる。また、基本行列分解部36は、中間結果記憶部42から下三角行列L′を表わすデータを読み出して、下三角行列Lを基本下三角行列L′1、L′2、・・・、L′mの積に分解して、基本下三角行列L′1、L′2、・・・、L′mを表わすデータを中間結果記憶部42に記憶させる(ステップS704)。
逆行列計算部43は、中間結果記憶部42から基本上三角行列U′1、U′2、・・・、U′mおよび基本下三角行列L′1、L′2、・・・、L′mを表わすデータを読み出して、行列U′1、U′2、・・・、U′m、L′1、L′2、・・・、L′mの非対角項の要素の符号を反転することによって、行列U′1、U′2、・・・、U′m、L′1、L′2、・・・、L′mの逆行列U′1 -1、U′2 -1、・・・、U′m -1、L′1 -1、L′2 -1、・・・、L′m -1を算出し、逆行列U′1 -1、U′2 -1、・・・、U′m -1、L′1 -1、L′2 -1、・・・、L′m -1を表わすデータを行列記憶部48に記憶させる(ステップS705)。
(符号化ベクトル生成処理)
図13は、第2の実施形態の変形例1の符号化ベクトル生成処理のフローチャートである。
図13を参照して、行列積計算制御部124は、行列記憶部48にデータが記憶されている行列の順序が先頭からA(u)、L′1 -1、L′2 -1、・・・、L′m -1、U′m -1、U′m-1 -1、・・・、U′1 -1、E(v)の順となるように行列間の順序を設定する(ステップS801)。
次に、行列積計算制御部124は、制御変数iを1に設定する(ステップS802)。
行列積計算制御部124は、行列積計算部41を指示して、行列記憶部48から第i(=1)順位の行列A(u)を表わすデータを読み出させて、行列A(u)と、入力された情報ベクトルXとの積A(u)Xを計算させる。行列積計算部41は、乗算結果であるベクトルを中間結果Rとし、中間結果Rを表わすデータを中間結果記憶部42に記憶させる(ステップS803)。
次に、行列積計算制御部124は、制御変数iをインクリメントする(ステップS804)。
行列積計算制御部124は、制御変数iが(2m+2)未満の場合には(ステップS805でYES)、行列積計算部41を指示して、行列記憶部48から第i順位の行列(これをMatiとする)を表わすデータを読み出させるとともに、中間結果記憶部42に記憶されている中間結果Rを表わすデータとを読出させて、行列Matiと中間結果Rとの積Mati×Rを計算させる。行列積計算部41は、乗算結果であるベクトルを新たな中間結果Rとし、中間結果記憶部42内の中間結果Rを表わすデータを更新する(ステップS806)。その後、ステップS804からの処理が繰返される。
制御変数iが(2m+2)となった場合には(ステップS805でNO)、行列積計算制御部124は、行列積計算部41を指示して、行列記憶部48から第i順位の行列(Mati)を表わすデータを読み出させるとともに、中間結果記憶部42に記憶されている中間結果Rを表わすデータとを読出させて、行列Matiと中間結果Rとの積Mati×Rを計算させる。行列積計算部41は、乗算結果であるベクトルY′を符号反転部99に出力する。符号反転部99は、ベクトルY′の符号を反転したものをパリティべクトルYとして出力する(ステップ807)。
その後、配列部20は、kビットの情報ベクトルXとmビットのパリティべクトルYからなるnビットの符号化ベクトルZを生成して、出力する(ステップS808)。
(第2の実施形態の変形例1の効果)
以上のように、第2の実施形態の変形例1によれば、符号化ベクトル生成処理時において、後退代入を行わずに、式(E23)に従ってパリティベクトルYを算出するので、少ない計算量で情報ベクトルXの符号化を行なうことができる。特に、行列Bがオーダリングされるため、基本上三角行列の逆行列U′i -1(i=1〜m)および基本下三角行列の逆行列L′i -1(i=1〜m)は、第1の実施形態の変形例1の基本上三角行列の逆行列Ui -1(i=1〜m)および基本下三角行列の逆行列Li -1(i=1〜m)よりもさらに非零要素数が少ない行列となり、式(E23)の演算の計算量を式(C9)よりもさらに少なくできる。また、式(E23)の右側にある行列乗算から順次実行してパリティベクトルYを算出するので、各行列乗算の結果はベクトルとなり、中間結果を記憶するための容量を小さくすることができる。
また、行列分解処理時において、行列Bの逆行列を計算するという計算量の多い演算を行なうことなく、行列Bのオーダリングによる行列B′、A(u)、E(v)の生成、行列B′のLU分解、LU分解された上三角行列の基本上三角行列の積への分解、LU分解された下三角行列の基本下三角行列の積への分解、基本上三角行列および基本下三角行列の非対角項の符号の反転を行なえばよいので、少ない計算量でパリティベクトルYを生成するのに必要な行列を算出することができる。
[第3の実施形態]
第3の実施形態の符号化器は、2を法とする演算を行なう。
(符号化アルゴリズム)
符号化器は、k個の情報ビットx1、x2、・・・、xkからなる情報ベクトルXを受けて、2を法とする演算を行なうことによって、以下の式を満たすようなm個のパリティビットy1、y2、・・・、ymからなるパリティベクトルYを生成する。
H(X,Y)T=0 ・・・(F1)
ここで、Hはパリティ検査行列(以下、検査行列とも言う)であり、m行n列(=k+m)の行列である。
(X,Y)Tは、情報ベクトルとパリティベクトルからなるベクトルの転置を表わす。
式(F1)は、2を法とする演算の場合には、次のように変形される。
BY≡AX ・・・(F2)
ここで、行列Aは、検査行列Hの第1列目〜第k列目からなるm行k列の行列である。行列Bは、検査行列Hの第(k+1)列目〜第n列目からなるm行m列の行列である。
行列BをLU分解すると、式(F2)は以下の式に変形される。
LUY≡AX ・・・(F3)
ここで、Lは下三角行列であり、Uは上三角行列である。
式(F3)より、列ベクトルYは、以下の式で表わされる。
Y≡U-1-1AX ・・・(F4)
上三角行列Uは、以下の式のように、基本上三角行列Ui(i=1〜m)の積に分解される。
U≡Umm-1・・・U21 ・・・(F5)
式(F5)より、逆行列U-1は、以下の式で表わされる。
-1≡U1 -12 -1・・・Um-1 -1m -1 ・・・(F6)
下三角行列Lは、以下の式のように、基本下三角行列Li(i=1〜m)の積に分解される。
L≡L12・・・Lm-1m ・・・(F7)
式(F7)より、逆行列L-1は、以下の式で表わされる。
-1≡Lm -1m-1 -1・・・L2 -11 -1 ・・・(F8)
式(F6)および式(F8)によって、式(F4)は以下の式に変形される。
Y≡(U1 -12 -1・・・Um-1 -1m -1)(Lm -1m-1 -1・・・L2 -11 -1)AX ・・・(F9)
ところで、2を法とする演算の場合には、基本上三角行列Ui(i=1〜m)、基本下三角行列Li(i=1〜m)は、以下のような性質を有する。
i≡(Ui-1 ・・・(F10)
i≡(Li-1 ・・・(F11)
式(F10)および式(F11)によって、式(F9)は以下の式に変形される。
Y≡U12・・・Um-1mmm-1・・・L21AX ・・・(F12)
式(F12)は、(2×m+2)個の行列の乗算であるが、一定の条件を満足する場合には、いくつかの行列の積を1つの行列で表わすことができるとする。以下の式のように、U1〜Utのt個の行列の積を1つの行列Cで表わすことができるとする。
(U12・・・Ut)≡C ・・・(F13)
この場合、一定の条件とは、行列U1、U2、・・・、Utの非対角項の非零要素の個数の和が行列Cの非対角項の非零要素の個数以上であるものとする。
式(F13)より、式(F12)は以下の式で表わされる。
Y≡CUt+1・・・Um-1mmm-1・・・L21AX ・・・(F14)
式(F14)で算出されるパリティベクトルYと、情報ベクトルXを用いて、符号化ベクトルZは、以下の式で表わされる。
Z≡(X,Y) ・・・(F15)
ここで、符号化ベクトルZの第1ビット〜第kビットは、情報ベクトルXのビットであり、符号化ベクトルZの第(k+1)ビット〜第nビットは、パリティベクトルYのビットである。
(構成)
図14は、第3の実施形態の符号化器の構成を表わす図である。
図14を参照して、この符号化器2eは、第1の実施形態と同様の、検査行列分解部30と、LU分解部14と、基本行列分解部16と、配列部20とを備える。これらについては説明を繰返さない。
また、符号化器2eは、中間結果記憶部52と、行列記憶部58と、行列積計算部51と、行列積計算制御部125と、行列乗算数削減部55とを備える。なお、以下では、(t+1)<mとして説明する。
中間結果記憶部52は、式(F14)に含まれる行列を生成する処理(行列分解処理)における中間結果を表わすデータを記憶する。また、中間結果記憶部52は、パリティベクトルYの生成処理時に、式(F14)に含まれる(2m−t+2)回の行列乗算の中間結果を表わすデータを記憶する。
行列記憶部58は、基本上三角行列Ut+1、Ut+2、・・・、Umを表わすデータ、基本下三角行列Lm、Lm-1、・・・、L1を表わすデータ、および行列Aを表わすデータを記憶する。
行列積計算部51は、加算器57および乗算器59を備える。行列積計算部51は、パリティベクトルYを算出するために、式(F14)に含まれる(2m−t+2)回の行列乗算を行列積計算制御部125に指示された順序で実行する。行列積計算部51は、入力される情報ベクトルX、行列記憶部58内の行列A、L1、L2、・・・、Lm-1、Lm、Um、Um-1、・・・、Ut+1、Cを表わすデータ、および中間結果記憶部52内の中間結果を表わすデータのうちの2つを用いて各行列乗算を実行する。行列積計算部51は、式(F14)に含まれる(2m−t+2)回の行列乗算が終了するまでの間は、計算結果を表わすデータを中間結果を表わすデータとして中間結果記憶部52に記憶させる。また、行列積計算部51は、式(F12)に含まれる行列乗算の個数を削減する処理を実行するときに、行列乗算数削減部55から指示された行列乗算を実行する。
行列乗算数削減部55は、式(F12)に含まれる行列乗算の個数を削減する処理を行なうときに、中間結果記憶部52にデータが記憶されている行列の順序が先頭からU1、U2、・・・、Um-1、Um、Lm、Lm-1、・・・、L2、L1、Aの順となるように行列間の順序を設定し、この順序で行列乗算を行なうように行列積計算部51を制御する。行列乗算数削減部55は、各乗算において、乗算の対象となる2つの行列の非対角項の非零要素数と、乗算結果である1つの行列Cの非対角項の非零要素数とを比較し、後者と前者の差が所定の閾値a(a>0)以下のときは、乗算対象の2つの行列を1つの行列Cで置換する。このようにして行列Cで置換された場合は、行列Cと次の行列との乗算が行なわれる。
一方、行列乗算数削減部55は、後者と前者の差が所定の閾値aを超えるときには、乗算対象の2つの行列を1つの行列Cで置換することを行なわずに、行列A、L1、L2、・・・、Lm-1、Lm、Um、Um-1、・・・、U1の非対角項の非零要素数の総和と、行列A、L1、L2、・・・、Lm-1、Lm、Um、Um-1、・・・、U1のうちの置換が行なわれた行列を除いた行列と行列Cの非対角項の非零要素数の総和とを比較し、後者の値が前者の値以下の場合には、行列A、L1、L2、・・・、Lm-1、Lm、Um、Um-1、・・・、U1のうちの置換された行列を除いた行列と行列Cとを行列記憶部58に記憶させる。第t順位までの行列が置換された場合には、行列C、Ut+1、・・・、Um-1、Um、Lm、Lm-1、・・・、L2、L1、Aが行列記憶部58に記憶される。
行列積計算制御部125は、パリティベクトルYを算出するために、行列記憶部58にデータが記憶されている行列の順序が先頭からA、L1、L2、・・・、Lm-1、Lm、Um、Um-1、・・・、Ut+1、Cの順となるように行列間の順序を設定し、この順序で行列乗算を行なうように行列積計算部51を制御する。また、行列積計算制御部125は、式(F14)に含まれる(2m−t+2)回の行列乗算の終了後に、行列積計算部51から計算結果であるパリティベクトルYを出力させる。
(行列分解処理)
図15は、第3の実施形態の行列分解処理のフローチャートである。
図15を参照して、まず、第1の実施形態のステップS101〜ステップS103が検査行列分解部30、行列記憶部58、中間結果記憶部52、LU分解部14、および基本行列分解部16によって実行される。ただし、生成された行列U1、U2、・・・、Um-1、Um、Lm、Lm-1、・・・、L2、L1、Aは、第1の実施形態のように行列記憶部58にではなく、中間結果記憶部52に記憶される。(ステップS901)。
次に、行列乗算数削減部55は、中間結果記憶部52にデータが記憶されている行列について、先頭からU1、U2、・・・、Um-1、Um、Lm、Lm-1、・・・、L2、L1、Aの順となるように順序を設定する(ステップS902)。
次に、行列乗算数削減部55は、制御変数tを1に設定する(ステップS903)。
次に、行列乗算数削減部55は、行列記憶部58から第t(=1)順位の行列U1を表わすデータを読み出して、行列U1を行列Cとして、行列Cを表わすデータを中間結果記憶部52に記憶する(ステップS904)。
行列数積削減部は、中間結果記憶部52から行列Cを表わすデータを読み出して、行列Cの非零要素数SC0をカウントし、非零要素数SC0を中間結果記憶部52に記憶させる(ステップS905)。
次に、行列乗算数削減部55は、第(t+1)順位の行列を表わすデータを読み出して、その行列を行列matとする(ステップS906)。
次に、行列乗算数削減部55は、行列matの非対角項の非零要素数SC1をカウントし、非零要素数SC1と中間結果記憶部52内の行列Cの非零要素数SC0との和SC2を算出して、非零要素数の和SC2を中間結果記憶部52に記憶させる(ステップS907)。
次に、行列積計算部51は、行列Cと行列Matとの積C×Matを計算して、計算結果を行列Dとする(ステップS908)。
次に、行列乗算数削減部55は、行列Dの非対角項の非零要素数SC3をカウントし、非零要素数SC3を中間結果記憶部52に記憶させる(ステップS909)。
行列乗算数削減部55は、中間結果記憶部52から非零要素数の和SC2および非零要素数SC3とを読み出して、SC3とSC2との差が閾値a以下であるかを判断する(ステップS910)。
行列乗算数削減部55は、SC3とSC2との差が閾値a以下である場合には(ステップS910でYES)、制御変数tをインクリメントし(ステップS911)、中間結果記憶部52内の行列Cを行列Dで更新し(ステップS912)、さらに中間結果記憶部52内の非零要素数SC0を非零要素数SC3を更新し、ステップS906からの処理が繰返させる。
一方、行列乗算数削減部55は、SC3とSC2との差が閾値aを超え(ステップS910でNO)、かつ制御変数tが2以上の場合には(ステップS914でYES)、行列記憶部58にデータが記憶されている行列U1、U2、・・・、Um-1、Um、Lm、Lm-1、・・・、L2、L1、Aのそれぞれについて非対角項の非零要素数をカウントし、それらの非零要素数の総和SC4を中間結果記憶部52に記憶させる(ステップS915)。
次に、行列乗算数削減部55は、行列U1、U2、・・・、Um-1、Um、Lm、Lm-1、・・・、L2、L1、Aのうちの第(t+1)順位以降の行列のそれぞれについて非対角項の非零要素数をカウントし、それらの非零要素数の総和SC5と中間結果記憶部52内の行列Cの非零要素数SC0との総和SC6を算出して、非零要素数の総和SC6を中間結果記憶部52に記憶させる(ステップS916)。
行列乗算数削減部55は、中間結果記憶部52から非零要素数の総和SC4および非零要素数の総和SC6とを読み出して、SC6がSC4以下であるかを判断する(ステップS917)。
行列乗算数削減部55は、SC6がSC4以下である場合には(ステップS917でYES)、中間結果記憶部52内の行列U1、U2、・・・、Um-1、Um、Lm、Lm-1、・・・、L2、L1、Aのうちの第1順位から第t順位までの行列を除いた行列Ut+1、Ut+2、・・・、Um-1、Um、Lm、Lm-1、・・・、L2、L1、Aと、行列Cとを行列記憶部58に記憶させる(ステップS918)。
(符号化ベクトル生成処理)
図16は、第3の実施形態の符号化ベクトル生成処理のフローチャートである。
図16を参照して、行列積計算制御部125は、行列記憶部58にデータが記憶されている行列の順序が先頭からA、L1、L2、・・・、Lm-1、Lm、Um、Um-1、・・・、Ut+1、Cの順となるように行列間の順序を設定する(ステップS1001)。
次に、行列積計算制御部125は、制御変数iを1に設定する(ステップS1002)。
行列積計算制御部125は、行列積計算部51を指示して、行列記憶部58から第i(=1)順位の行列Aを表わすデータを読み出させて、行列Aと、入力された情報ベクトルXとの積AXを計算させる。行列積計算部51は、乗算結果であるベクトルを中間結果Rとし、中間結果Rを表わすデータを中間結果記憶部52に記憶させる(ステップS1003)。
次に、行列積計算制御部125は、制御変数iをインクリメントする(ステップS1004)。
行列積計算制御部125は、制御変数iが(2m−t+2)未満の場合には(ステップS1005でYES)、行列積計算部51を指示して、行列記憶部58から第i順位の行列(これをMatiとする)を表わすデータを読み出させるとともに、中間結果記憶部52に記憶されている中間結果Rを表わすデータとを読出させて、行列Matiと中間結果Rとの積Mati×Rを計算させる。行列積計算部51は、乗算結果であるベクトルを新たな中間結果Rとし、中間結果記憶部52内の中間結果Rを表わすデータを更新する(ステップS1006)。その後、ステップS1004からの処理が繰返される。
制御変数iが(2m−t+2)となった場合には(ステップS1005でNO)、行列積計算制御部125は、行列積計算部51を指示して、行列記憶部58から第i順位の行列(Mati)を表わすデータを読み出させるとともに、中間結果記憶部52に記憶されている中間結果Rを表わすデータとを読出させて、行列Matiと中間結果Rとの積Mati×Rを計算させる。行列積計算部51は、乗算結果であるベクトルをパリティべクトルYとして出力する(ステップS1007)。
その後、配列部20は、kビットの情報ベクトルXとmビットのパリティべクトルYからなるnビットの符号化ベクトルZを生成して、出力する(ステップS1008)。
(第3の実施形態の効果)
以上のように、第3の実施形態によれば、符号化ベクトル生成処理時において、後退代入を行わずに、式(F14)に従ってパリティベクトルYを算出するので、少ない計算量で情報ベクトルXの符号化を行なうことができる。特に、基本上三角行列Ui(i=t+1〜m)および基本下三角行列Li(i=1〜m)は非零要素数が少ない行列のため、式(F14)の計算量は少ない。式(F14)では、第1の実施形態の式(B12)のU1〜Utが1つの行列Cで表わされ、しかも行列Cの非対角項の非零要素数が行列U1〜Utの非対角項の非零要素数の和以下であるため、式(F14)の演算は、第1の実施形態の式(B12)の演算よりもさらに計算量が少ない。また、式(F14)の右側にある行列乗算から順次実行してパリティベクトルYを算出するので、各行列乗算の結果はベクトルとなり、中間結果を記憶するための容量を小さくすることができる。
また、行列分解処理時において、行列Bの逆行列を計算するという計算量の多い演算を行なうことなく、行列BのLU分解、LU分解された上三角行列の基本上三角行列の積への分解、LU分解された下三角行列の基本下三角行列の積への分解、行列乗算数の削減処理を行なえばよいので、少ない計算量でパリティベクトルYを生成するのに必要な行列を算出することができる。
[第3の実施形態の変形例1]
第3の実施形態の変形例1の符号化器は、実数演算を行なう。
(符号化アルゴリズム)
符号化器は、k個の情報ビットx1、x2、・・・、xkからなる情報ベクトルXを受けて、実数演算を行なうことによって、以下の式を満たすようなm個のパリティビットy1、y2、・・・、ymからなるパリティベクトルYを生成する。
H(X,Y)T=0 ・・・(G1)
ここで、Hはパリティ検査行列(以下、検査行列とも言う)であり、m行n列(=k+m)の行列である。
(X,Y)Tは、情報ベクトルとパリティベクトルからなるベクトルの転置を表わす。
式(G1)は、実数演算の場合には、次のように変形される。
BY=−AX ・・・(G2)
ここで、行列Aは、検査行列Hの第1列目〜第k列目からなるm行k列の行列である。行列Bは、検査行列Hの第(k+1)列目〜第n列目からなるm行m列の行列である。
行列BをLU分解すると、式(G2)は以下の式に変形される。
LUY=−AX ・・・(G3)
ここで、Lは下三角行列であり、Uは上三角行列である。
式(G3)より、列ベクトルYは、以下の式で表わされる。
Y=−U-1-1AX ・・・(G4)
上三角行列Uは、以下の式のように、基本上三角行列Ui(i=1〜m)の積に分解される。
U=Umm-1・・・U21 ・・・(G5)
式(G5)より、U-1は、以下の式で表わされる。
-1=U1 -12 -1・・・Um-1 -1m -1 ・・・(G6)
ここで、Ui -1は、対角項の要素が1であり、かつ非対角項の要素はUiの要素の符号を反転したものである。
下三角行列Lは、以下の式のように、基本下三角行列Li(i=1〜m)の積に分解される。
L=L12・・・Lm-1m ・・・(G7)
式(G7)より、L-1は、以下の式で表わされる。
-1=Lm -1m-1 -1・・・L2 -11 -1 ・・・(G8)
ここで、Li -1は、対角項の要素が1であり、かつ非対角項の要素はLiの要素の符号を反転したものである。
式(G6)および式(G8)によって、式(G4)は以下の式に変形される。
Y=−U1 -12 -1・・・Um-1 -1m -1m -1m-1 -1・・・L2 -11 -1AX ・・・(G9)
式(G9)は、(2×m+2)個の行列の乗算であるが、一定の条件を満足する場合には、いくつかの行列の積を1つの行列で表わすことができるとする。以下の式のように、U1 -1〜Ut -1のt個の行列の積を1つの行列Cで表わすことができるとする。
(U1 -12 -1・・・Ut -1)≡C ・・・(G10)
この場合、一定の条件とは、行列U1 -1、U2 -1、・・・、Ut -1の非対角項の非零要素の個数の和が行列Cの非対角項の非零要素の個数以上であるものとする。
式(G10)より、式(G9)は以下の式で表わされる。
Y=−CUt+1 -1・・・Um-1 -1m -1m -1m-1 -1・・・L2 -11 -1AX ・・・(G11)
式(G11)で算出されるパリティベクトルYと、情報ベクトルXを用いて、符号化ベクトルZは、以下の式で表わされる。
Z=(X,Y) ・・・(G12)
ここで、符号化ベクトルZの第1ビット〜第kビットは、情報ベクトルXのビットであり、符号化ベクトルZの第(k+1)ビット〜第nビットは、パリティベクトルYのビットである。
(構成)
図17は、第3の実施形態の変形例1の符号化器の構成を表わす図である。
図17を参照して、この符号化器2fは、第1の実施形態の変形例1と同様の、検査行列分解部30と、LU分解部14と、基本行列分解部16と、逆行列計算部23と、配列部20とを備える。これらについては説明を繰返さない。
また、符号化器2fは、中間結果記憶部62と、行列記憶部68と、行列積計算部61と、行列積計算制御部126と、行列乗算数削減部65とを備える。なお、以下では、(t+1)<mとして説明する。
中間結果記憶部62は、式(G11)に含まれる行列を生成する処理(行列分解処理)における中間結果を表わすデータを記憶する。また、中間結果記憶部62は、パリティベクトルYの生成処理時に、式(G11)に含まれる(2m−t+2)回の行列乗算の中間結果を表わすデータを記憶する。
行列記憶部68は、基本上三角行列の逆行列Ut+1 -1、Ut+2 -1、・・・、Um -1を表わすデータ、基本下三角行列の逆行列Lm -1、Lm-1 -1、・・・、L1 -1を表わすデータ、および行列Aを表わすデータを記憶する。
行列積計算部61は、加算器67および乗算器69を備える。行列積計算部61は、パリティベクトルYを算出するために、式(G11)に含まれる(2m−t+2)回の行列乗算を行列積計算制御部126に指示された順序で実行する。行列積計算部61は、入力される情報ベクトルX、行列記憶部68内の行列A、L1 -1、L2 -1、・・・、Lm-1 -1、Lm -1、Um -1、Um-1 -1、・・・、Ut+1 -1、Cを表わすデータ、および中間結果記憶部62内の中間結果を表わすデータのうちの2つを用いて各行列乗算を実行する。行列積計算部61は、式(G11)に含まれる(2m−t+2)回の行列乗算が終了するまでの間は、計算結果を表わすデータを中間結果を表わすデータとして中間結果記憶部62に記憶させる。また、行列積計算部61は、式(G9)に含まれる行列乗算の個数を削減する処理を実行するときに、行列乗算数削減部65から指示された行列乗算を実行する。
行列乗算数削減部65は、式(G9)に含まれる行列乗算の個数を削減する処理を行なうときに、中間結果記憶部62にデータが記憶されている行列の順序が先頭からU1 -1、U2 -1、・・・、Um-1 -1、Um -1、Lm -1、Lm-1 -1、・・・、L2 -1、L1 -1、Aの順となるように行列間の順序を設定し、この順序で行列乗算を行なうように行列積計算部61を制御する。行列乗算数削減部65は、各乗算において、乗算の対象となる2つの行列の非対角項の非零要素数と、乗算結果である1つの行列Cの非対角項の非零要素数とを比較し、後者と前者の差が所定の閾値a(a>0)以下のときは、乗算対象の2つの行列を1つの行列Cで置換する。このようにして行列Cで置換された場合は、行列Cと次の行列との乗算が行なわれる。
一方、行列乗算数削減部65は、後者と前者の差が所定の閾値aを超えるときには、乗算対象の2つの行列を1つの行列Cで置換することを行なわずに、行列A、L1 -1、L2 -1、・・・、Lm-1 -1、Lm -1、Um -1、Um-1 -1、・・・、U1 -1の非対角項の非零要素数の総和と、行列A、L1 -1、L2 -1、・・・、Lm-1 -1、Lm -1、Um -1、Um-1 -1、・・・、U1 -1のうちの置換が行なわれた行列を除いた行列と行列Cの非対角項の非零要素数の総和とを比較し、後者の値が前者の値以下の場合には、行列A、L1 -1、L2 -1、・・・、Lm-1 -1、Lm -1、Um -1、Um-1 -1、・・・、U1 -1のうちの置換された行列を除いた行列と行列Cとを行列記憶部68に記憶させる。第t順位までの行列が置換された場合には、行列C、Ut+1 -1、・・・、Um-1 -1、Um -1、Lm -1、Lm-1 -1、・・・、L2 -1、L1 -1、Aが行列記憶部68に記憶される。
行列積計算制御部126は、パリティベクトルYを算出するために、行列記憶部68にデータが記憶されている行列の順序が先頭からA、L1 -1、L2 -1、・・・、Lm-1 -1、Lm -1、Um -1、Um-1 -1、・・・、Ut+1 -1、Cの順となるように行列間の順序を設定し、この順序で行列乗算を行なうように行列積計算部61を制御する。また、行列積計算制御部126は、式(G11)に含まれる(2m−t+2)回の行列乗算の終了後に、行列積計算部61から計算結果であるベクトルY′(=CUt+1 -1・・・Um-1 -1m -1m -1m-1 -1・・・L2 -11 -1AX)を符号反転部99へ出力させる。
(行列分解処理)
図18は、第3の実施形態の変形例1の行列分解処理のフローチャートである。
図18を参照して、まず、第1の実施形態の変形例1のステップS201〜ステップS204が検査行列分解部30、行列記憶部68、中間結果記憶部62、LU分解部14、基本行列分解部16、および逆行列計算部23によって実行される。ただし、生成された行列U1 -1、U2 -1、・・・、Um-1 -1、Um -1、Lm -1、Lm-1 -1、・・・、L2 -1、L1 -1、Aは、第1の実施形態の変形例1のように行列記憶部68にではなく、中間結果記憶部62に記憶される。(ステップS1101)。
次に、行列乗算数削減部65は、中間結果記憶部62にデータが記憶されている行列について、先頭からU1 -1、U2 -1、・・・、Um-1 -1、Um -1、Lm -1、Lm-1 -1、・・・、L2 -1、L1 -1、Aの順となるように順序を設定する(ステップS1102)。
次に、行列乗算数削減部65は、制御変数tを1に設定する(ステップS1103)。
次に、行列乗算数削減部65は、行列記憶部68から第t(=1)順位の行列U1 -1を表わすデータを読み出して、行列U1 -1を行列Cとして、行列Cを表わすデータを中間結果記憶部62に記憶する(ステップS1104)。
行列数積削減部は、中間結果記憶部62から行列Cを表わすデータを読み出して、行列Cの非零要素数SC0をカウントし、非零要素数SC0を中間結果記憶部62に記憶させる(ステップS1105)。
次に、行列乗算数削減部65は、第(t+1)順位の行列を表わすデータを読み出して、その行列を行列matとする(ステップS1106)。
次に、行列乗算数削減部65は、行列matの非対角項の非零要素数SC1をカウントし、非零要素数SC1と中間結果記憶部62内の行列Cの非零要素数SC0との和SC2を算出して、非零要素数の和SC2を中間結果記憶部62に記憶させる(ステップS1107)。
次に、行列積計算部61は、行列Cと行列Matとの積C×Matを計算して、計算結果を行列Dとする(ステップS1108)。
次に、行列乗算数削減部65は、行列Dの非対角項の非零要素数SC3をカウントし、非零要素数SC3を中間結果記憶部62に記憶させる(ステップS1109)。
行列乗算数削減部65は、中間結果記憶部62から非零要素数の和SC2および非零要素数SC3とを読み出して、SC3とSC2との差が閾値a以下であるかを判断する(ステップS1110)。
行列乗算数削減部65は、SC3とSC2との差が閾値a以下である場合には(ステップS1110でYES)、制御変数tをインクリメントし(ステップS1111)、中間結果記憶部62内の行列Cを行列Dで更新し(ステップS1112)、さらに中間結果記憶部62内の非零要素数SC0を非零要素数SC3を更新し、ステップS1106からの処理が繰返させる。
一方、行列乗算数削減部65は、SC3とSC2との差が閾値aを超え(ステップS1110でNO)、かつ制御変数tが2以上の場合には(ステップS1114でYES)、行列記憶部68にデータが記憶されている行列U1 -1、U2 -1、・・・、Um-1 -1、Um -1、Lm -1、Lm-1 -1、・・・、L2 -1、L1 -1、Aのそれぞれについて非対角項の非零要素数をカウントし、それらの非零要素数の総和SC4を中間結果記憶部62に記憶させる(ステップS1115)。
次に、行列乗算数削減部65は、行列U1 -1、U2 -1、・・・、Um-1 -1、Um -1、Lm -1、Lm-1 -1、・・・、L2 -1、L1 -1、Aのうちの第(t+1)順位以降の行列のそれぞれについて非対角項の非零要素数をカウントし、それらの非零要素数の総和SC5と中間結果記憶部62内の行列Cの非零要素数SC0との総和SC6を算出して、非零要素数の総和SC6を中間結果記憶部62に記憶させる(ステップS1116)。
行列乗算数削減部65は、中間結果記憶部62から非零要素数の総和SC4および非零要素数の総和SC6とを読み出して、SC6がSC4以下であるかを判断する(ステップS1117)。
行列乗算数削減部65は、SC6がSC4以下である場合には(ステップS1117でYES)、中間結果記憶部62内の行列U1 -1、U2 -1、・・・、Um-1 -1、Um -1、Lm -1、Lm-1 -1、・・・、L2 -1、L1 -1、Aのうちの第1順位から第t順位までの行列を除いた行列Ut+1 -1、Ut+2 -1、・・・、Um-1 -1、Um -1、Lm -1、Lm-1 -1、・・・、L2 -1、L1 -1、Aと、行列Cとを行列記憶部68に記憶させる(ステップS1118)。
(符号化ベクトル生成処理)
図19は、第3の実施形態の変形例1の符号化ベクトル生成処理のフローチャートである。
図19を参照して、行列積計算制御部126は、行列記憶部68にデータが記憶されている行列の順序が先頭からA、L1 -1、L2 -1、・・・、Lm-1 -1、Lm -1、Um -1、Um-1 -1、・・・、Ut+1 -1、Cの順となるように行列間の順序を設定する(ステップS1201)。
次に、行列積計算制御部126は、制御変数iを1に設定する(ステップS1202)。
行列積計算制御部126は、行列積計算部61を指示して、行列記憶部68から第i(=1)順位の行列Aを表わすデータを読み出させて、行列Aと、入力された情報ベクトルXとの積AXを計算させる。行列積計算部61は、乗算結果であるベクトルを中間結果Rとし、中間結果Rを表わすデータを中間結果記憶部62に記憶させる(ステップS1203)。
次に、行列積計算制御部126は、制御変数iをインクリメントする(ステップS1204)。
行列積計算制御部126は、制御変数iが(2m−t+2)未満の場合には(ステップS1205でYES)、行列積計算部61を指示して、行列記憶部68から第i順位の行列(これをMatiとする)を表わすデータを読み出させるとともに、中間結果記憶部62に記憶されている中間結果Rを表わすデータとを読出させて、行列Matiと中間結果Rとの積Mati×Rを計算させる。行列積計算部61は、乗算結果であるベクトルを新たな中間結果Rとし、中間結果記憶部62内の中間結果Rを表わすデータを更新する(ステップS1206)。その後、ステップS1204からの処理が繰返される。
制御変数iが(2m−t+2)となった場合には(ステップS1205でNO)、行列積計算制御部126は、行列積計算部61を指示して、行列記憶部68から第i順位の行列(Mati)を表わすデータを読み出させるとともに、中間結果記憶部62に記憶されている中間結果Rを表わすデータとを読出させて、行列Matiと中間結果Rとの積Mati×Rを計算させる。行列積計算部61は、乗算結果であるベクトルY′を符号反転部99に出力する。符号反転部99は、ベクトルY′の符号を反転したものをパリティべクトルYとして出力する(ステップS1207)。
その後、配列部20は、kビットの情報ベクトルXとmビットのパリティべクトルYからなるnビットの符号化ベクトルZを生成して、出力する(ステップS1208)。
(第3の実施形態の変形例1の効果)
以上のように、第3の実施形態の変形例1によれば、符号化ベクトル生成処理時において、後退代入を行わずに、式(G11)に従ってパリティベクトルYを算出するので、少ない計算量で情報ベクトルXの符号化を行なうことができる。特に、基本上三角行列の逆行列Ui -1(i=t+1〜m)および基本下三角行列の逆行列Li -1(i=1〜m)は非零要素数が少ない行列のため、式(G11)の計算量は少ない。式(G11)では、第1の実施形態の変形例1の式(C9)のU1 -1〜Ut -1が1つの行列Cで表わされ、しかも行列Cの非対角項の非零要素数が行列U1 -1〜Ut -1の非対角項の非零要素数の和以下であるため、式(G11)の演算は、第1の実施形態の変形例1の式(C9)の演算よりもさらに計算量が少ない。また、式(G11)の右側にある行列乗算から順次実行してパリティベクトルYを算出するので、各行列乗算の結果はベクトルとなり、中間結果を記憶するための容量を小さくすることができる。
また、行列分解処理時において、行列Bの逆行列を計算するという計算量の多い演算を行なうことなく、行列BのLU分解、LU分解された上三角行列の基本上三角行列の積への分解、LU分解された下三角行列の基本下三角行列の積への分解、基本上三角行列および基本下三角行列の非対角項の符号の反転、行列乗算数の削減処理を行なえばよいので、少ない計算量でパリティベクトルYを生成するのに必要な行列を算出することができる。
[第4の実施形態]
第4の実施形態の符号化器は、2を法とする演算を行なう。
(符号化アルゴリズム)
符号化器は、k個の情報ビットx1、x2、・・・、xkからなる情報ベクトルXを受けて、2を法とする演算を行なうことによって、以下の式を満たすようなm個のパリティビットy1、y2、・・・、ymからなるパリティベクトルYを生成する。
H(X,Y)T≡0 ・・・(H1)
ここで、Hはパリティ検査行列(以下、検査行列とも言う)であり、m行n列(=k+m)の行列である。
(X,Y)Tは、情報ベクトルとパリティベクトルからなるベクトルの転置を表わす。
式(H1)は、2を法とする演算の場合には、次のように変形される。
BY≡AX ・・・(H2)
ここで、行列Aは、検査行列Hの第1列目〜第k列目からなるm行k列の行列である。行列Bは、検査行列Hの第(k+1)列目〜第n列目からなるm行m列の行列である。
行列Bに対して、以下のようにオーダリングを行なうとする。
まず、行列Bの2つの行を交換するとすると、式(H2)は以下のように変形される。
1BY≡P1AX ・・・(H3)
ここで、P1は、第1回目の行の入れ替えを表わす変換行列である。i行とj行を変換する場合には、P1は、単位行列Eのi行とj行を入れ替えた行列となる。
さらに、行列Bの2つの列を交換すると、式(H3)は以下のように変形される。
1BQ11 -1Y≡P1AX ・・・(H4)
ここで、Q1は、第1回目の列の入れ替えを表わす変換行列である。i列とj列を変換する場合には、Q1は、単位行列Eのi列とj列を入れ替えた行列となる。
以下のように新たな行列を定義する。
(1)≡P1BQ1 ・・・(H5)
(1)≡P1A ・・・(H6)
式(H5)および式(H6)により、式(H4)は以下の式で表わされる。
(1)1 -1Y≡A(1)) ・・・(H7)
さらに、行列B(1)の2つの行を交換するとすると、式(H7)は以下のように変形される。
2(1)1 -1Y≡P2(1)X ・・・(H8)
ここで、P2は、第2回目の行の入れ替えを表わす変換行列である。
さらに、行列B(1)の2つの列を交換すると、式(H8)は以下のように変形される。
2(1)22 -11 -1Y≡P2(1)X ・・・(H9)
ここで、Q2は、第2回目の列の入れ替えを表わす変換行列である。
以下のように新たな行列を定義する。
(2)≡P2(1)2 ・・・(H10)
(2)≡P2(1) ・・・(H11)
式(H10)および式(H11)により、式(H9)は以下の式で表わされる。
(2)2 -11 -1Y≡A(2)X ・・・(H12)
同様にして、行列Bに対して、第u回(u≧1)だけ行の入れ替えおよび第v(v≧1)だげ列の入れ替えを行なう。第s回目(1≦s≦u)の行の入れ替えを表わす行列をPs、第s回目(1≦s≦v)の列の入れ替えを表わす行列をQsとして、以下のように新たな行列を定義する。
B′≡Pu・・・P21BQ12・・・Qv ・・・(H13)
(u)≡Pu・・・P21A ・・・(H14)
(v)≡Q12・・・Qv ・・・(H15)
式(H13)、式(H14)および式(H15)により、以下の式が成り立つ。
B′E(v)-1Y≡A(u)X ・・・(H16)
行列B′をLU分解すると、式(H16)は以下の式に変形される。
L′U′E(v)-1Y≡A(u)X ・・・(H17)
ここで、L′は下三角行列であり、U′は上三角行列である。
式(H17)より、列ベクトルYは、以下の式で表わされる。
Y≡E(v)U′-1L′-1(u))X ・・・(H18)
上三角行列U′は、以下の式のように、基本上三角行列U′i(i=1〜m)の積に分解される。
U′≡U′mU′m-1・・・U′2U′1 ・・・(H19)
式(H19)より、U′-1は、以下の式で表わされる。
U′-1≡U′1 -1U′2 -1・・・U′m-1 -1U′m -1 ・・・(H20)
下三角行列L′は、以下の式のように、基本下三角行列L′i(i=1〜m)の積に分解される。
L′≡L′1L′2・・・L′m-1L′m ・・・(H21)
式(H21)より、L′-1は、以下の式で表わされる。
L′-1≡L′m -1L′m-1 -1・・・L′2 -1L′1 -1 ・・・(H22)
式(H20)および式(H22)によって、式(H18)は以下の式に変形される。
Y≡E(v)(U′1 -1U′2 -1・・・U′m-1 -1U′m -1)(L′m -1L′m-1 -1・・・L′2 -1L′1 -1)A(u)X ・・・(H23)
ところで、2を法とする演算の場合には、基本上三角行列U′i(i=1〜m)、基本下三角行列L′i(i=1〜m)は、以下のような性質を有する。
U′i≡(U′i-1 ・・・(H24)
L′i≡(L′i-1 ・・・(H25)
式(H24)および式(H25)によって、式(H23)は以下の式に変形される。
Y≡E(v)U′1U′2・・・U′m-1U′mL′mL′m-1・・・L′2L′1(u)X ・・・(H26)
式(H26)は、(2×m+3)個の行列の乗算であるが、一定の条件を満足する場合には、いくつかの行列の積を1つの行列で表わすことができるとする。以下の式のように、E(v)、U′1〜U′t-1のt個の行列の積を1つの行列Cで表わすことができるとする。
(v)(U′1U′2・・・U′t-1)≡C ・・・(H27)
この場合、一定の条件とは、行列E(v)、U′1、U′2、・・・、U′t-1の非対角項の非零要素の個数の和が行列Cの非対角項の非零要素の個数以上であるものとする。
式(H27)より、式(H26)は以下の式で表わされる。
Y≡CU′t・・・U′m-1U′mL′mL′m-1・・・L′2L′1(u)X ・・・(H28)
式(H28)で算出されるパリティベクトルYと、情報ベクトルXを用いて、符号化ベクトルZは、以下の式で表わされる。
Z≡(X,Y) ・・・(H29)
ここで、符号化ベクトルZの第1ビット〜第kビットは、情報ベクトルXのビットであり、符号化ベクトルZの第(k+1)ビット〜第nビットは、パリティベクトルYのビットである。
(構成)
図20は、第4の実施形態の符号化器の構成を表わす図である。
図20を参照して、この符号化器2gは、第2の実施形態と同様の、検査行列分解部30と、オーダリング部40と、LU分解部34と、基本行列分解部36と、配列部20とを備える。これらについては説明を繰返さない。
また、符号化器2gは、中間結果記憶部72と、行列記憶部78と、行列積計算部71と、行列積計算制御部127と、行列乗算数削減部75とを備える。なお、以下では、t<mとして説明する。
中間結果記憶部72は、式(H28)に含まれる行列を生成する処理(行列分解処理)における中間結果を表わすデータを記憶する。また、中間結果記憶部72は、パリティベクトルYの生成処理時に、式(H28)に含まれる(2m−t+3)回の行列乗算の中間結果を表わすデータを記憶する。
行列記憶部78は、基本上三角行列U′t、U′t+1、・・・、U′mを表わすデータ、基本下三角行列L′m、L′m-1、・・・、L′1を表わすデータ、および行列C、A(u)を表わすデータを記憶する。
行列積計算部71は、加算器77および乗算器79を備える。行列積計算部71は、パリティベクトルYを算出するために、式(H28)に含まれる(2m−t+3)回の行列乗算を行列積計算制御部127に指示された順序で実行する。行列積計算部71は、入力される情報ベクトルX、行列記憶部78内の行列A(u)、L′1、L′2、・・・、L′m-1、L′m、U′m、U′m-1、・・・、U′t、Cを表わすデータ、および中間結果記憶部72内の中間結果を表わすデータのうちの2つを用いて各行列乗算を実行する。行列積計算部71は、式(H28)に含まれる(2m−t+3)回の行列乗算が終了するまでの間は、計算結果を表わすデータを中間結果を表わすデータとして中間結果記憶部72に記憶させる。また、行列積計算部71は、式(H26)に含まれる行列乗算の個数を削減する処理を実行するときに、行列乗算数削減部75から指示された行列乗算を実行する。
行列乗算数削減部75は、式(H26)に含まれる行列乗算の個数を削減する処理を行なうときに、中間結果記憶部72にデータが記憶されている行列の順序が先頭からE(v)、U′1、U′2、・・・、U′m-1、U′m、L′m、L′m-1、・・・、L′2、L′1、A(u)の順となるように行列間の順序を設定し、この順序で行列乗算を行なうように行列積計算部71を制御する。行列乗算数削減部75は、各乗算において、乗算の対象となる2つの行列の非対角項の非零要素数と、乗算結果である1つの行列Cの非対角項の非零要素数とを比較し、後者と前者の差が所定の閾値a(a>0)以下のときは、乗算対象の2つの行列を1つの行列Cで置換する。このようにして行列Cで置換された場合は、行列Cと次の行列との乗算が行なわれる。
一方、行列乗算数削減部75は、後者と前者の差が所定の閾値aを超えるときには、乗算対象の2つの行列を1つの行列Cで置換することを行なわずに、行列E(v)、U′1、U′2、・・・、U′m-1、U′m、L′m、L′m-1、・・・、L′2、L′1、A(u)の非対角項の非零要素数の総和と、行列E(v)、U′1、U′2、・・・、U′m-1、U′m、L′m、L′m-1、・・・、L′2、L′1、A(u)のうちの置換が行なわれた行列を除いた行列と行列Cの非対角項の非零要素数の総和とを比較し、後者の値が前者の値以下の場合には、行列E(v)、U′1、U′2、・・・、U′m-1、U′m、L′m、L′m-1、・・・、L′2、L′1、A(u)のうちの置換された行列を除いた行列と行列Cとを行列記憶部78に記憶させる。第t順位までの行列が置換された場合には、行列C、U′t、U′t+1、・・・、U′m-1、U′m、L′m、L′m-1、・・・、L′2、L′1、A(u)が行列記憶部78に記憶される。
行列積計算制御部127は、パリティベクトルYを算出するために、行列記憶部78にデータが記憶されている行列の順序が先頭からA(u)、L′1、L′2、・・・、L′m-1、L′m、U′m、U′m-1、・・・、U′t、Cの順となるように行列間の順序を設定し、この順序で行列乗算を行なうように行列積計算部71を制御する。また、行列積計算制御部127は、式(H28)に含まれる(2m−t+3)回の行列乗算の終了後に、行列積計算部71から計算結果であるパリティベクトルYを出力させる。
(行列分解処理)
図21、第4の実施形態の行列分解処理のフローチャートである。
図21を参照して、第2の実施形態のステップS501〜ステップS504が検査行列分解部30、行列記憶部78、中間結果記憶部72、オーダリング部40、LU分解部34、および基本行列分解部36によって実行される。ただし、生成された行列E(v)、U′1、U′2、・・・、U′m-1、U′m、L′m、L′m-1、・・・、L′2、L′1、A(u)は、第2の実施形態のように行列記憶部78にではなく、中間結果記憶部72に記憶される。(ステップS1301)。
次に、行列乗算数削減部75は、中間結果記憶部72にデータが記憶されている行列について、先頭からE(v)、U′1、U′2、・・・、U′m-1、U′m、L′m、L′m-1、・・・、L′2、L′1、A(u)の順となるように順序を設定する(ステップS1302)。
次に、行列乗算数削減部75は、制御変数tを1に設定する(ステップS1303)。
次に、行列乗算数削減部75は、行列記憶部78から第t(=1)順位の行列E(v)を表わすデータを読み出して、行列E(v)を行列Cとして、行列Cを表わすデータを中間結果記憶部72に記憶する(ステップS1304)。
行列数積削減部は、中間結果記憶部72から行列Cを表わすデータを読み出して、行列Cの非零要素数SC0をカウントし、非零要素数SC0を中間結果記憶部72に記憶させる(ステップS1305)。
次に、行列乗算数削減部75は、第(t+1)順位の行列を表わすデータを読み出して、その行列を行列matとする(ステップS1306)。
次に、行列乗算数削減部75は、行列matの非対角項の非零要素数SC1をカウントし、非零要素数SC1と中間結果記憶部72内の行列Cの非零要素数SC0との和SC2を算出して、非零要素数の和SC2を中間結果記憶部72に記憶させる(ステップS1307)。
次に、行列積計算部71は、行列Cと行列Matとの積C×Matを計算して、計算結果を行列Dとする(ステップS1308)。
次に、行列乗算数削減部75は、行列Dの非対角項の非零要素数SC3をカウントし、非零要素数SC3を中間結果記憶部72に記憶させる(ステップS1309)。
行列乗算数削減部75は、中間結果記憶部72から非零要素数の和SC2および非零要素数SC3とを読み出して、SC3とSC2との差が閾値a以下であるかを判断する(ステップS1310)。
行列乗算数削減部75は、SC3とSC2との差が閾値a以下である場合には(ステップS1310でYES)、制御変数tをインクリメントし(ステップS1311)、中間結果記憶部72内の行列Cを行列Dで更新し(ステップS1312)、さらに中間結果記憶部72内の非零要素数SC0を非零要素数SC3を更新し、ステップS1306からの処理が繰返させる。
一方、行列乗算数削減部75は、SC3とSC2との差が閾値aを超え(ステップS1310でNO)、かつ制御変数tが2以上の場合には(ステップS1314でYES)、行列記憶部78にデータが記憶されている行列E(v)、U′1、U′2、・・・、U′m-1、U′m、L′m、L′m-1、・・・、L′2、L′1、A(u)のそれぞれについて非対角項の非零要素数をカウントし、それらの非零要素数の総和SC4を中間結果記憶部72に記憶させる(ステップS1315)。
次に、行列乗算数削減部75は、行列E(v)、U′1、U′2、・・・、U′m-1、U′m、L′m、L′m-1、・・・、L′2、L′1、A(u)のうちの第(t+1)順位以降の行列のそれぞれについて非対角項の非零要素数をカウントし、それらの非零要素数の総和SC5と中間結果記憶部72内の行列Cの非零要素数SC0との総和SC6を算出して、非零要素数の総和SC6を中間結果記憶部72に記憶させる(ステップS1316)。
行列乗算数削減部75は、中間結果記憶部72から非零要素数の総和SC4および非零要素数の総和SC6とを読み出して、SC6がSC4以下であるかを判断する(ステップS1317)。
行列乗算数削減部75は、SC6がSC4以下である場合には(ステップS1317でYES)、中間結果記憶部72内の行列E(v)、U′1、U′2、・・・、U′m-1、U′m、L′m、L′m-1、・・・、L′2、L′1、A(u)のうちの第1順位から第t順位までの行列を除いた行列U′t、U′t+1、・・・、U′m-1、U′m、L′m、L′m-1、・・・、L′2、L′1、A(u)と、行列Cとを行列記憶部78に記憶させる(ステップS1318)。
(符号化ベクトル生成処理)
図22は、第4の実施形態の符号化ベクトル生成処理のフローチャートである。
図22を参照して、行列積計算制御部127は、行列記憶部78にデータが記憶されている行列の順序が先頭からA(u)、L′1、L′2、・・・、L′m、U′m、U′m-1、・・・、U′t、Cの順となるように行列間の順序を設定する(ステップS1401)。
次に、行列積計算制御部127は、制御変数iを1に設定する(ステップS1402)。
行列積計算制御部127は、行列積計算部71を指示して、行列記憶部78から第i(=1)順位の行列A(u)を表わすデータを読み出させて、行列A(u)と、入力された情報ベクトルXとの積A(u)Xを計算させる。行列積計算部71は、乗算結果であるベクトルを中間結果Rとし、中間結果Rを表わすデータを中間結果記憶部72に記憶させる(ステップS1403)。
次に、行列積計算制御部127は、制御変数iをインクリメントする(ステップS1404)。
行列積計算制御部127は、制御変数iが(2m−t+3)未満の場合には(ステップS1405でYES)、行列積計算部71を指示して、行列記憶部78から第i順位の行列(これをMatiとする)を表わすデータを読み出させるとともに、中間結果記憶部72に記憶されている中間結果Rを表わすデータとを読出させて、行列Matiと中間結果Rとの積Mati×Rを計算させる。行列積計算部71は、乗算結果であるベクトルを新たな中間結果Rとし、中間結果記憶部72内の中間結果Rを表わすデータを更新する(ステップS1406)。その後、ステップS1404からの処理が繰返される。
制御変数iが(2m−t+3)となった場合には(ステップS1405でNO)、行列積計算制御部127は、行列積計算部71を指示して、行列記憶部78から第i順位の行列(Mati)を表わすデータを読み出させるとともに、中間結果記憶部72に記憶されている中間結果Rを表わすデータとを読出させて、行列Matiと中間結果Rとの積Mati×Rを計算させる。行列積計算部71は、乗算結果であるベクトルをパリティべクトルYとして出力する(ステップS1407)。
その後、配列部20は、kビットの情報ベクトルXとmビットのパリティべクトルYからなるnビットの符号化ベクトルZを生成して、出力する(ステップS1408)。
(第4の実施形態の効果)
以上のように、第4の実施形態によれば、符号化ベクトル生成処理時において、後退代入を行わずに、式(H28)に従ってパリティベクトルYを算出するので、少ない計算量で情報ベクトルXの符号化を行なうことができる。特に、行列Bがオーダリングされるため、基本上三角行列U′i(i=t〜m)および基本下三角行列L′i(i=1〜m)は、第3の実施形態の基本上三角行列Ui(i=t+1〜m)および基本下三角行列Li(i=1〜m)よりもさらに非零要素数が少ない行列となり、式(H28)の演算の計算量を式(F14)よりもさらに少なくできる。式(H28)では、第2の実施形態の式(D26)のE(v)、U′1〜U′t-1が1つの行列Cで表わされ、しかも行列Cの非対角項の非零要素数が行列E(v)、U′1〜U′t-1の非対角項の非零要素数の和以下であるため、式(H28)の演算は、第2の実施形態の式(D26)の演算よりもさらに計算量が少ない。また、式(H28)の右側にある行列乗算から順次実行してパリティベクトルYを算出するので、各行列乗算の結果はベクトルとなり、中間結果を記憶するための容量を小さくすることができる。
また、行列分解処理時において、行列Bの逆行列を計算するという計算量の多い演算を行なうことなく、行列Bのオーダリングによる行列B′、A(u)、E(v)の生成、行列B′のLU分解、LU分解された上三角行列の基本上三角行列の積への分解、LU分解された下三角行列の基本下三角行列の積への分解、行列乗算数の削減処理を行なえばよいので、少ない計算量でパリティベクトルYを生成するのに必要な行列を算出することができる。
[第4の実施形態の変形例1]
第4の実施形態の変形例1の符号化器は、実数演算を行なう。
(符号化アルゴリズム)
符号化器は、k個の情報ビットx1、x2、・・・、xkからなる情報ベクトルXを受けて、実数演算を行なうことによって、以下の式を満たすようなm個のパリティビットy1、y2、・・・、ymからなるパリティベクトルYを生成する。
H(X,Y)T=0 ・・・(I1)
ここで、Hはパリティ検査行列(以下、検査行列とも言う)であり、m行n列(=k+m)の行列である。
(X,Y)Tは、情報ベクトルとパリティベクトルからなるベクトルの転置を表わす。
式(I1)は、実数演算の場合には、次のように変形される。
BY=−AX ・・・(I2)
ここで、行列Aは、検査行列Hの第1列目〜第k列目からなるm行k列の行列である。行列Bは、検査行列Hの第(k+1)列目〜第n列目からなるm行m列の行列である。
行列Bに対して、以下のようにオーダリングを行なうとする。
まず、行列Bの2つの行を交換するとすると、式(I2)は以下のように変形される。
1BY=P1AX ・・・(I3)
ここで、P1は、第1回目の行の入れ替えを表わす変換行列である。i行とj行を変換する場合には、P1は、単位行列Eのi行とj行を入れ替えた行列となる。
さらに、行列Bの2つの列を交換すると、式(I3)は以下のように変形される。
1BQ11 -1Y=−P1AX ・・・(I4)
ここで、Q1は、第1回目の列の入れ替えを表わす変換行列である。i列とj列を変換する場合には、Q1は、単位行列Eのi列とj列を入れ替えた行列となる。
以下のように新たな行列を定義する。
(1)=P1BQ1 ・・・(I5)
(1)=P1A ・・・(I6)
式(I5)および式(I6)により、式(I4)は以下の式で表わされる。
(1)1 -1Y=−A(1)X ・・・(I7)
さらに、行列B(1)の2つの行を交換するとすると、式(I7)は以下のように変形される。
2(1)1 -1Y=−P2(1)X ・・・(I8)
ここで、P2は、第2回目の行の入れ替えを表わす変換行列である。
さらに、行列B(1)の2つの列を交換すると、式(I8)は以下のように変形される。
2(1)22 -11 -1Y=−P2(1)X ・・・(I9)
ここで、Q2は、第2回目の列の入れ替えを表わす変換行列である。
以下のように新たな行列を定義する。
(2)=P2(1)2 ・・・(I10)
(2)=P2(1) ・・・(I11)
式(I10)および式(I11)により、式(I9)は以下の式で表わされる。
(2)2 -11 -1Y=−A(2)X ・・・(I12)
同様にして、行列Bに対して、第u回(u≧1)だけ行の入れ替えおよび第v(v≧1)だげ列の入れ替えを行なう。第s回目(1≦s≦u)の行の入れ替えを表わす行列をPs、第s回目(1≦s≦v)の列の入れ替えを表わす行列をQsとして、以下のように新たな行列を定義する。
B′=Pu・・・P21BQ12・・・Qv ・・・(I13)
(u)=Pu・・・P21A ・・・(I14)
(v)=Q12・・・Qv ・・・(I15)
式(I13)、式(I14)および式(I15)により、以下の式が成り立つ。
B′E(v)-1Y=−A(u)X ・・・(I16)
行列B′をLU分解すると、式(I16)は以下の式に変形される。
L′U′QV -1・・・Q2 -11 -1Y=A(u)X ・・・(I17)
ここで、L′は下三角行列であり、U′は上三角行列である。
式(I17)より、列ベクトルYは、以下の式で表わされる。
Y=−E(v)U′-1L′-1(u)X ・・・(I18)
上三角行列U′は、以下の式のように、基本上三角行列U′i(i=1〜m)の積に分解される。
U′=U′mU′m-1・・・U′2U′1 ・・・(I19)
ここで、逆行列U′i -1は、対角項の要素が1であり、かつ非対角項の要素はU′iの要素の符号を反転したものである。
式(I19)より、U′-1は、以下の式で表わされる。
U′-1=U′1 -1U′2 -1・・・U′m-1 -1U′m -1 ・・・(I20)
下三角行列Lは、以下の式のように、基本下三角行列Li(i=1〜m)の積に分解される。
L′=L′1L′2・・・L′m-1L′m ・・・(I21)
ここで、逆行列L′i -1は、対角項の要素が1であり、かつ非対角項の要素はL′iの要素の符号を反転したものである。
式(I21)より、L′-1は、以下の式で表わされる。
L′-1=L′m -1L′m-1 -1・・・L′2 -1L′1 -1 ・・・(I22)
式(I20)および式(I22)によって、式(I18)は以下の式に変形される。
Y=−E(v)U′1 -1U′2 -1・・・U′m-1 -1U′m -1L′m -1L′m-1 -1・・・L′2 -1L′1 -1(u)X ・・・(I23)
式(I23)は、(2×m+3)個の行列の乗算であるが、一定の条件を満足する場合には、いくつかの行列の積を1つの行列で表わすことができるとする。以下の式のように、E(v)、U′1 -1〜U′t-1 -1のt個の行列の積を1つの行列Cで表わすことができるとする。
(v)(U′1 -1U′2 -1・・・U′t-1 -1)≡C ・・・(I24)
この場合、一定の条件とは、行列E(v)、U′1 -1、U′2 -1、・・・、U′t-1 -1の非対角項の非零要素の個数の和が行列Cの非対角項の非零要素の個数以上であるものとする。
式(I24)より、式(I23)は以下の式で表わされる。
Y=−CU′t -1・・・U′m-1 -1U′m -1L′m -1L′m-1 -1・・・L′2 -1L′1 -1(u)X ・・・(I25)
式(I25)で算出されるパリティベクトルYと、情報ベクトルXを用いて、符号化ベクトルZは、以下の式で表わされる。
Z=(X,Y) ・・・(I26)
ここで、符号化ベクトルZの第1ビット〜第kビットは、情報ベクトルXのビットであり、符号化ベクトルZの第(k+1)ビット〜第nビットは、パリティベクトルYのビットである。
(構成)
図23は、第4の実施形態の変形例1の符号化器の構成を表わす図である。
図23を参照して、この符号化器2hは、第2の実施形態の変形例1と同様の、検査行列分解部30と、オーダリング部40と、LU分解部34と、基本行列分解部36と、逆行列計算部43と、符号反転部99と、配列部20とを備える。これらについては説明を繰返さない。
また、符号化器2hは、中間結果記憶部82と、行列記憶部88と、行列積計算部81と、行列積計算制御部128と、行列乗算数削減部85とを備える。なお、以下では、t<mとして説明する。
中間結果記憶部82は、式(I25)に含まれる行列を生成する処理(行列分解処理)における中間結果を表わすデータを記憶する。また、中間結果記憶部82は、パリティベクトルYの生成処理時に、式(I25)に含まれる(2m−t+3)回の行列乗算の中間結果を表わすデータを記憶する。
行列記憶部88は、基本上三角行列の逆行列U′t -1、U′t+1 -1、・・・、U′m -1を表わすデータ、基本下三角行列の逆行列L′m -1、L′m-1 -1、・・・、L′1 -1を表わすデータ、および行列C、A(u)を表わすデータを記憶する。
行列積計算部81は、加算器87および乗算器89を備える。行列積計算部81は、パリティベクトルYを算出するために、式(I25)に含まれる(2m−t+3)回の行列乗算を行列積計算制御部128に指示された順序で実行する。行列積計算部81は、入力される情報ベクトルX、行列記憶部88内の行列A(u)、L′1 -1、L′2 -1、・・・、L′m-1 -1、L′m -1、U′m -1、U′m-1 -1、・・・、U′t -1、Cを表わすデータ、および中間結果記憶部82内の中間結果を表わすデータのうちの2つを用いて各行列乗算を実行する。行列積計算部81は、式(I25)に含まれる(2m−t+3)回の行列乗算が終了するまでの間は、計算結果を表わすデータを中間結果を表わすデータとして中間結果記憶部82に記憶させる。また、行列積計算部81は、式(I23)に含まれる行列乗算の個数を削減する処理を実行するときに、行列乗算数削減部85から指示された行列乗算を実行する。
行列乗算数削減部85は、式(I23)に含まれる行列乗算の個数を削減する処理を行なうときに、中間結果記憶部82にデータが記憶されている行列の順序が先頭からE(v)、U′1 -1、U′2 -1、・・・、U′m-1 -1、U′m -1、L′m -1、L′m-1 -1、・・・、L′2 -1、L′1 -1、A(u)の順となるように行列間の順序を設定し、この順序で行列乗算を行なうように行列積計算部81を制御する。行列乗算数削減部85は、各乗算において、乗算の対象となる2つの行列の非対角項の非零要素数と、乗算結果である1つの行列Cの非対角項の非零要素数とを比較し、後者と前者の差が所定の閾値a(a>0)以下のときは、乗算対象の2つの行列を1つの行列Cで置換する。このようにして行列Cで置換された場合は、行列Cと次の行列との乗算が行なわれる。
一方、行列乗算数削減部85は、後者と前者の差が所定の閾値aを超えるときには、乗算対象の2つの行列を1つの行列Cで置換することを行なわずに、行列E(v)、U′1 -1、U′2 -1、・・・、U′m-1 -1、U′m -1、L′m -1、L′m-1 -1、・・・、L′2 -1、L′1 -1、A(u)の非対角項の非零要素数の総和と、行列E(v)、U′1 -1、U′2 -1、・・・、U′m-1 -1、U′m -1、L′m -1、L′m-1 -1、・・・、L′2 -1、L′1 -1、A(u)のうちの置換が行なわれた行列を除いた行列と行列Cの非対角項の非零要素数の総和とを比較し、後者の値が前者の値以下の場合には、行列v)、U′1 -1、U′2 -1、・・・、U′m-1 -1、U′m -1、L′m -1、L′m-1 -1、・・・、L′2 -1、L′1 -1、A(u)のうちの置換された行列を除いた行列と行列Cとを行列記憶部88に記憶させる。第t順位までの行列が置換された場合には、行列C、U′t -1、U′t+1 -1、・・・、U′m-1 -1、U′m -1、L′m -1、L′m-1 -1、・・・、L′2 -1、L′1 -1、A(u)が行列記憶部88に記憶される。
行列積計算制御部128は、パリティベクトルYを算出するために、行列記憶部88にデータが記憶されている行列の順序が先頭からA(u)、L′1 -1、L′2 -1、・・・、L′m-1 -1、L′m -1、U′m -1、U′m-1 -1、・・・、U′t -1、Cの順となるように行列間の順序を設定し、この順序で行列乗算を行なうように行列積計算部81を制御する。また、行列積計算制御部128は、式(I25)に含まれる(2m−t+3)回の行列乗算の終了後に、行列積計算部81から計算結果であるベクトルY′(=CU′t -1・・・U′m-1 -1U′m -1L′m -1L′m-1 -1・・・L′2 -1L′1 -1(u)X)を符号反転部99へ出力させる。
(行列分解処理)
図24は、第4の実施形態の変形例1の行列分解処理のフローチャートである。
図24を参照して、まず、第2の実施形態の変形例1のステップS701〜ステップS705が検査行列分解部30、行列記憶部88、中間結果記憶部82、オーダリング部40、LU分解部34、基本行列分解部36、および逆行列計算部43によって実行される。ただし、生成された行列E(v)、U′1 -1、U′2 -1、・・・、U′m-1 -1、U′m -1、L′m -1、L′m-1 -1、・・・、L′2 -1、L′1 -1、A(u)は、第2の実施形態の変形例1のように行列記憶部88にではなく、中間結果記憶部82に記憶される(ステップS1501)。
次に、行列乗算数削減部85は、中間結果記憶部82にデータが記憶されている行列について、先頭からE(v)、U′1 -1、U′2 -1、・・・、U′m-1 -1、U′m -1、L′m -1、L′m-1 -1、・・・、L′2 -1、L′1 -1、A(u)の順となるように順序を設定する(ステップS1502)。
次に、行列乗算数削減部85は、制御変数tを1に設定する(ステップS1503)。
次に、行列乗算数削減部85は、行列記憶部88から第t(=1)順位の行列E(v)を表わすデータを読み出して、行列E(v)を行列Cとして、行列Cを表わすデータを中間結果記憶部82に記憶する(ステップS1504)。
行列数積削減部は、中間結果記憶部82から行列Cを表わすデータを読み出して、行列Cの非零要素数SC0をカウントし、非零要素数SC0を中間結果記憶部82に記憶させる(ステップS1505)。
次に、行列乗算数削減部85は、第(t+1)順位の行列を表わすデータを読み出して、その行列を行列matとする(ステップS1506)。
次に、行列乗算数削減部85は、行列matの非対角項の非零要素数SC1をカウントし、非零要素数SC1と中間結果記憶部82内の行列Cの非零要素数SC0との和SC2を算出して、非零要素数の和SC2を中間結果記憶部82に記憶させる(ステップS1507)。
次に、行列積計算部81は、行列Cと行列Matとの積C×Matを計算して、計算結果を行列Dとする(ステップS1508)。
次に、行列乗算数削減部85は、行列Dの非対角項の非零要素数SC3をカウントし、非零要素数SC3を中間結果記憶部82に記憶させる(ステップS1509)。
行列乗算数削減部85は、中間結果記憶部82から非零要素数の和SC2および非零要素数SC3とを読み出して、SC3とSC2との差が閾値a以下であるかを判断する(ステップS1510)。
行列乗算数削減部85は、SC3とSC2との差が閾値a以下である場合には(ステップS1510でYES)、制御変数tをインクリメントし(ステップS1511)、中間結果記憶部82内の行列Cを行列Dで更新し(ステップS1512)、さらに中間結果記憶部82内の非零要素数SC0を非零要素数SC3を更新し、ステップS1506からの処理が繰返させる。
一方、行列乗算数削減部85は、SC3とSC2との差が閾値aを超え(ステップS1510でNO)、かつ制御変数tが2以上の場合には(ステップS1514でYES)、行列記憶部88にデータが記憶されている行列E(v)、U′1 -1、U′2 -1、・・・、U′m-1 -1、U′m -1、L′m -1、L′m-1 -1、・・・、L′2 -1、L′1 -1、A(u)のそれぞれについて非対角項の非零要素数をカウントし、それらの非零要素数の総和SC4を中間結果記憶部82に記憶させる(ステップS1515)。
次に、行列乗算数削減部85は、行列E(v)、U′1 -1、U′2 -1、・・・、U′m-1 -1、U′m -1、L′m -1、L′m-1 -1、・・・、L′2 -1、L′1 -1、A(u)のうちの第(t+1)順位以降の行列のそれぞれについて非対角項の非零要素数をカウントし、それらの非零要素数の総和SC5と中間結果記憶部82内の行列Cの非零要素数SC0との総和SC6を算出して、非零要素数の総和SC6を中間結果記憶部82に記憶させる(ステップS1516)。
行列乗算数削減部85は、中間結果記憶部82から非零要素数の総和SC4および非零要素数の総和SC6とを読み出して、SC6がSC4以下であるかを判断する(ステップS1517)。
行列乗算数削減部85は、SC6がSC4以下である場合には(ステップS1517でYES)、中間結果記憶部82内の行列E(v)、U′1 -1、U′2 -1、・・・、U′m-1 -1、U′m -1、L′m -1、L′m-1 -1、・・・、L′2 -1、L′1 -1、A(u)のうちの第1順位から第t順位までの行列を除いた行列U′t -1、U′t+1 -1、・・・、U′m-1 -1、U′m -1、L′m -1、L′m-1 -1、・・・、L′2 -1、L′1 -1、A(u)と、行列Cとを行列記憶部88に記憶させる(ステップS1518)。
(符号化ベクトル生成処理)
図25は、第4の実施形態の変形例1の符号化ベクトル生成処理のフローチャートである。
図25を参照して、行列積計算制御部128は、行列記憶部88にデータが記憶されている行列の順序が先頭からA(u)、L′1 -1、L′2 -1、・・・、L′m -1、U′m -1、U′m-1 -1、・・・、U′t -1、Cの順となるように行列間の順序を設定する(ステップS1601)。
次に、行列積計算制御部128は、制御変数iを1に設定する(ステップS1602)。
行列積計算制御部128は、行列積計算部81を指示して、行列記憶部88から第i(=1)順位の行列A(u)を表わすデータを読み出させて、行列A(u)と、入力された情報ベクトルXとの積A(u)Xを計算させる。行列積計算部81は、乗算結果であるベクトルを中間結果Rとし、中間結果Rを表わすデータを中間結果記憶部82に記憶させる(ステップS1603)。
次に、行列積計算制御部128は、制御変数iをインクリメントする(ステップS1604)。
行列積計算制御部128は、制御変数iが(2m−t+3)未満の場合には(ステップS1605でYES)、行列積計算部81を指示して、行列記憶部88から第i順位の行列(これをMatiとする)を表わすデータを読み出させるとともに、中間結果記憶部82に記憶されている中間結果Rを表わすデータとを読出させて、行列Matiと中間結果Rとの積Mati×Rを計算させる。行列積計算部81は、乗算結果であるベクトルを新たな中間結果Rとし、中間結果記憶部82内の中間結果Rを表わすデータを更新する(ステップS1606)。その後、ステップS1604からの処理が繰返される。
制御変数iが(2m−t+3)となった場合には(ステップS1605でNO)、行列積計算制御部128は、行列積計算部81を指示して、行列記憶部88から第i順位の行列(Mati)を表わすデータを読み出させるとともに、中間結果記憶部82に記憶されている中間結果Rを表わすデータとを読出させて、行列Matiと中間結果Rとの積Mati×Rを計算させる。行列積計算部81は、乗算結果であるベクトルY′を符号反転部99に出力する。符号反転部99は、ベクトルY′の符号を反転したものをパリティべクトルYとして出力する(ステップS1607)。
その後、配列部20は、kビットの情報ベクトルXとmビットのパリティべクトルYからなるnビットの符号化ベクトルZを生成して、出力する(ステップS1608)。
(第4の実施形態の変形例1の効果)
以上のように、第4の実施形態の変形例1によれば、符号化ベクトル生成処理時において、後退代入を行わずに、式(I25)に従ってパリティベクトルYを算出するので、少ない計算量で情報ベクトルXの符号化を行なうことができる。特に、行列Bがオーダリングされるため、基本上三角行列の逆行列U′i -1(i=t〜m)および基本下三角行列の逆行列L′i -1(i=1〜m)は、第3の実施形態の変形例1の基本上三角行列の逆行列Ui -1(i=t+1〜m)および基本下三角行列の逆行列Li -1(i=1〜m)よりもさらに非零要素数が少ない行列となり、式(I25)の演算の計算量を式(G11)よりもさらに少なくできる。式(I25)では、第2の実施形態の変形例1の式(E23)のE(v)、U′1 -1〜U′t-1 -1が1つの行列Cで表わされ、しかも行列Cの非対角項の非零要素数が行列E(v)、U′1 -1〜U′t-1 -1の非対角項の非零要素数の和以下であるため、式(I25)の演算は、第2の実施形態の変形例1の式(E23)の演算よりもさらに計算量が少ない。また、式(I25)の右側にある行列乗算から順次実行してパリティベクトルYを算出するので、各行列乗算の結果はベクトルとなり、中間結果を記憶するための容量を小さくすることができる。
また、行列分解処理時において、行列Bの逆行列を計算するという計算量の多い演算を行なうことなく、行列Bのオーダリングによる行列B′、A(u)、E(v)の生成、行列B′のLU分解、LU分解された上三角行列の基本上三角行列の積への分解、LU分解された下三角行列の基本下三角行列の積への分解、基本上三角行列および基本下三角行列の非対角項の符号の反転、行列乗算数の削減処理を行なえばよいので、少ない計算量でパリティベクトルYを生成するのに必要な行列を算出することができる。
[第5の実施形態]
第5の実施形態の符号化器は、2を法とする演算を行なう。この符号化器は、符号化ベクトル処理を複数の行列積計算部で並列実行するものである。
(符号化アルゴリズム)
第5の実施形態の符号化アルゴリズムは、第1の実施形態と同様である。
(構成)
図26は、第5の実施形態の符号化器の構成を表わす図である。
図26を参照して、この符号化器2iは、第1の実施形態と同様の、検査行列分解部10と、LU分解部14と、基本行列分解部16と、行列記憶部18と、配列部20とを備える。
符号化器は、さらに、中間結果記憶部92と、行列積計算部91と、行列積計算制御部129とを備える。
行列積計算部91は、第1の行列積計算部97と、第2の行列積計算部98とを備える。
第1の行列積計算部97は、加算器94および乗算器93を備える。行列積計算部91は、パリティベクトルYを算出するために、式(B12)に含まれる右から1番目から(m+1)番目までの(m+1)回の行列乗算を行列積計算制御部129に指示された順序で実行する。行列積計算部91は、入力される情報ベクトルX、行列記憶部18内の行列Lm、Lm-1、・・・、L1、Aを表わすデータ、および中間結果記憶部92内の中間結果を表わすデータのうちの2つを用いて各行列乗算を実行し、計算結果を表わすデータを中間結果を表わすデータとして中間結果記憶部92に記憶させる。(m+1)回の行列乗算が終了したときには、中間結果である列ベクトルR1(=Lmm-1・・・L21AX)が得られる。
第2の行列積計算部98は、加算器96および乗算器95を備える。行列積計算部91は、パリティベクトルYを算出するために、式(B12)に含まれる右から(m+2)番目から(2m+1)番目までのm回の行列乗算を行列積計算制御部129に指示された順序で実行する。行列積計算部91は、行列記憶部18内の行列U1、U2、・・・、Umを表わすデータ、および中間結果記憶部92内の中間結果を表わすデータのうちの2つを用いて各行列乗算を実行し、計算結果を表わすデータを中間結果を表わすデータとして中間結果記憶部92に記憶させる。m回の行列乗算が終了したときには、中間結果である行列R2(=U12・・・Um-1m)が得られる。
また、第1の行列積計算部97は、中間結果R1と中間結果R2との積R2×R1を計算し、計算結果であるベクトルをパリティべクトルYとして出力する。
行列積計算制御部129は、パリティベクトルYを算出するために、行列記憶部18にデータが記憶されている行列の順序が先頭からA、L1、L2、・・・、Lm-1、Lm、Um、Um-1、・・・、U2、U1の順となるように行列間の順序を設定し、この順序で行列乗算を行なうように行列積計算部91を制御する。より具体的には、行列積計算制御部129は、第1の行列乗算器に、情報ベクトルX、第1順位〜第(m+1)順位の行列についての行列乗算をこの順序で実行させて、これらすべての行列乗算が終了後に、中間結果R1を表わすデータを第1の行列積計算部97へ出力する。また、行列積計算制御部129は、第2の行列乗算器に、第(m+1)順位〜第(2m+1)順位の行列についての行列乗算をこの順序で実行させて、これらすべての行列乗算が終了後に、中間結果R2を表わすデータを第1の行列積計算部97へ出力する。また、行列積計算制御部129は、式(B12)に含まれる(2m+1)回の行列乗算の終了後に、第1の行列積計算部97から計算結果であるパリティベクトルYを出力させる。
中間結果記憶部92は、式(B12)に含まれる行列を生成する処理(行列分解処理)における中間結果を表わすデータを記憶する。また、中間結果記憶部92は、パリティベクトルYの生成処理時に、第1の行列積計算部97および第2の行列積計算部98から出力される式(B12)に含まれる(2m+1)回の行列乗算の中間結果を表わすデータを記憶する。
(行列分解処理)
第5の実施形態の行列分解処理の手順は、第1の実施形態と同様であるので、ここでは説明を繰返さない。
(符号化ベクトル生成処理)
図27は、第5の実施形態の符号化ベクトル生成処理のフローチャートである。
図27を参照して、行列積計算制御部129は、行列記憶部18にデータが記憶されている行列の順序が先頭からA、L1、L2、・・・、Lm-1、Lm、Um、Um-1、・・・、U2、U1の順となるように行列間の順序を設定する(ステップS1701)。
行列積計算制御部129は、第1の行列積計算部97に対するステップS1702〜S1706の処理と、第2の行列積計算部98に対するステップS1707〜S1711の処理が同時に並行して実行されるように制御する。
行列積計算制御部129は、制御変数iを1に設定する(ステップS1702)。
行列積計算制御部129は、第1の行列積計算部97を指示して、行列記憶部18から第i(=1)順位の行列Aを表わすデータを読み出させて、行列Aと、入力された情報ベクトルXとの積AXを計算させる。第1の行列積計算部97は、乗算結果であるベクトルを中間結果R1とし、中間結果R1を表わすデータを中間結果記憶部92に記憶させる(ステップS1703)。
次に、行列積計算制御部129は、制御変数iをインクリメントする(ステップS1704)。
行列積計算制御部129は、制御変数iが(m+1)以下の場合には(ステップS1705でYES)、第1の行列積計算部97を指示して、行列記憶部18から第i順位の行列(これをMatiとする)を表わすデータを読み出させるとともに、中間結果記憶部92に記憶されている中間結果R1を表わすデータとを読出させて、行列Matiと中間結果R1との積Mati×R1を計算させる。第1の行列積計算部97は、乗算結果であるベクトルを新たな中間結果R1とし、中間結果記憶部92内の中間結果R1を表わすデータを更新する(ステップS1706)。その後、ステップS1704からの処理が繰返される。
また、行列積計算制御部129は、制御変数jを(m+2)に設定する(ステップS1707)。
行列積計算制御部129は、第2の行列積計算部98を指示して、行列記憶部18から第j(=m+2)順位の行列Umを表わすデータを読み出させて、行列Umを中間結果R2とし、中間結果R2を表わすデータを中間結果記憶部92に記憶させる(ステップS1708)。
次に、行列積計算制御部129は、制御変数jをインクリメントする(ステップS1709)。
行列積計算制御部129は、制御変数jが(2m+1)以下の場合には(ステップS1710でYES)、第2の行列積計算部98を指示して、行列記憶部18から第j順位の行列(これをMatjとする)を表わすデータを読み出させるとともに、中間結果記憶部92に記憶されている中間結果R2を表わすデータとを読出させて、行列Matjと中間結果R2との積Matj×R2を計算させる。第2の行列積計算部98は、乗算結果であるベクトルを新たな中間結果R2とし、中間結果記憶部92内の中間結果R2を表わすデータを更新する(ステップS1711)。その後、ステップS1709からの処理が繰返される。
制御変数iが(m+1)を超えた場合には(ステップS1705でNO)、行列積計算制御部129は、中間結果記憶部92内の中間結果R1を表わすデータを第1の行列積計算部97へ出力し、制御変数jが(2m+1)を超えた場合には(ステップS1710でNO)、行列積計算制御部129は、中間結果記憶部92内の中間結果R2を表わすデータを第1の行列積計算部97へ出力する。第1の行列積計算部97は、中間結果R1と中間結果R2との積R2×R1を計算し、計算結果であるベクトルをパリティべクトルYとして出力する(ステップS1712)。
その後、配列部20は、kビットの情報ベクトルXとmビットのパリティべクトルYからなるnビットの符号化ベクトルZを生成して、出力する(ステップS1713)。
(第5の実施形態の効果)
以上のように、第5の実施形態は、第1の実施形態と同様の効果を有する。さらに、第5の実施形態によれば、非特許文献2および非特許文献3での逐次計算による後退代入と異なり、式(B12)の演算が並列実行が可能なことを利用して、第1の行列積計算部による列ベクトルR1(=Lmm-1・・・L21AX)の算出処理と、第2の行列積計算部による行列R2(=U12・・・Um-1m)の算出処理が同時に並列して実行されるので、非特許文献2および非特許文献3よりも短時間にパリティベクトルRを算出することができる。
[第5の実施形態の変形例1]
第1の実施形態以外の実施形態においても、2つの行列積計算部によって、パリティベクトル生成処理を並列実行するものとしてもよい。
たとえば、第1の実施形態の変形例1では、第1の行列積計算部による列ベクトルR1(=Lm -1m-1 -1・・・L2 -11 -1AX)の算出処理と、第2の行列積計算部による行列R2(=U1 -12 -1・・・Um-1 -1m -1)の算出処理を同時に並列して実行し、第1の行列積計算部が積R2×R1を計算するものとしてもよい。
第2の実施形態では、第1の行列積計算部による列ベクトルR1(=L′mL′m-1・・・L′2L′1(u)X)の算出処理と、第2の行列積計算部による行列R2(=E(v)U′1U′2・・・U′m-1U′m)の算出処理を同時に並列して実行し、第1の行列積計算部が積R2×R1を計算するものとしてもよい。
第2の実施形態の変形例1では、第1の行列積計算部による列ベクトルR1(=L′m -1L′m-1 -1・・・L′2 -1L′1 -1(u)X)の算出処理と、第2の行列積計算部による行列R2(=E(v)U′1 -1U′2 -1・・・U′m-1 -1U′m -1)の算出処理を同時に並列して実行し、第1の行列積計算部が積R2×R1を計算するものとしてもよい。
第3の実施形態では、第1の行列積計算部による列ベクトルR1(=Lmm-1・・・L21AX)の算出処理と、第2の行列積計算部による行列R2(=CUt+1・・・Um-1m)の算出処理を同時に並列して実行し、第1の行列積計算部が積R2×R1を計算するものとしてもよい。
第3の実施形態の変形例1では、第1の行列積計算部による列ベクトルR1(=Lm -1m-1 -1・・・L2 -11 -1AX)の算出処理と、第2の行列積計算部による行列R2(=CUt+1 -1・・・Um-1 -1m -1)の算出処理を同時に並列して実行し、第1の行列積計算部が積R2×R1を計算するものとしてもよい。
第4の実施形態では、第1の行列積計算部による列ベクトルR1(=L′mL′m-1・・・L′2L′1(u)X)の算出処理と、第2の行列積計算部による行列R2(=CU′t・・・U′m-1U′m)の算出処理を同時に並列して実行し、第1の行列積計算部が積R2×R1を計算するものとしてもよい。
第4の実施形態の変形例1では、第1の行列積計算部による列ベクトルR1(=L′m -1L′m-1 -1・・・L′2 -1L′1 -1(u)X)の算出処理と、第2の行列積計算部による行列R2(=CU′t -1・・・U′m-1 -1U′m -1)の算出処理を同時に並列して実行し、第1の行列積計算部が積R2×R1を計算するものとしてもよい。
[第5の実施形態の変形例2]
第5の実施形態および第5の実施形態の変形例1では、2個の行列積計算部を備えるものとしたが、3個以上の行列積計算部によって、パリティベクトル生成処理を並列実行するものとしてもよい。
(変形例)
本発明は、上記の実施の形態に限定されるものではなく、たとえば以下のような変形例も含まれる。
(1) 符号化器の構成
本発明の実施形態では、符号化器が、パリティベクトル生成処理と、行列分解処理の両方の機能を備えるものとしたが、一方だけの機能を備えるものとしてもよい。符号化器がパリティベクトル生成処理の機能のみを備える場合には、パリティベクトルYを生成するための式(B12)、(C9)、(D26)、(E23)、(F14)、(G11)、(H28)、(I25)に含まれる行列のデータは、外部で予め計算されたものが記憶されている。たとえば、第1の実施形態では、行列U1、U2、・・・、Um、Lm、Lm-1、・・・、L1、Aの各要素の値が予め外部で計算され、計算結果が行列記憶部に記憶されている。
(2) 記憶部に記憶されるデータ
本発明の第1〜第5の実施形態において、行列記憶部および中間結果記憶部に記憶される行列またはベクトルを表わすデータは、各要素の値である必要はなく、たとえば、非対角項の非零要素数(つまり、「1」)の位置を表わすものであってもよい。
(3) 行列積の計算順序
本発明の実施形態では、パリティベクトルYを生成する式に含まれる行列乗算のうち、右側にある行列乗算(ここでは、ベクトルと行列の乗算も行列乗算と呼ぶ)から順次実行するものとしたが、これに限定するものではなく、任意の順序で行列乗算を実行するものとしてもよいが、左側にある行列乗算から順次実行しない方がよい場合もある。なぜなら、左側にある行列乗算から順次実行した場合には、行列Bの逆行列が生成されることになり、行列Bを分解した意味がなくなる場合が考えられる。しかしながら、このような順序で計算する場合でも、行列Bの逆行列を計算するよりも、少ない計算量で行列分解処理を行なうことができたり、または分解された行列の非零要素数の和が、Bの逆行列の非零要素数の和よりも少ないときには、行列を記憶するための容量を少なくすることができる場合がある。
(4) 行列乗算数削減処理
本発明の第3、第4の実施形態では、行列乗算数の削減処理時に、パリティベクトルYを生成する式に含まれる行列乗算のうち、左側にある行列乗算から順次実行するものとしたが、これに限定するものではなく、任意の順序で行列乗算を実行するものとしてもよい。
たとえば、パリティベクトルYを生成する式においてXとの乗算を除いた右側から行列演算を実行することとしてもよい。この場合には、式(F14)の代わりに、次の式のようにパリティベクトルYを生成する式におけるXを除いた右側にある複数個の隣接する行列が1個の行列Cにまとめられた式が用いられる。
Y≡U1・・・Um-1mmm-1・・・L9CX ・・・(F14−1)
ここで、Cは、L8t7・・・L1Aである。
またパリティベクトルYを生成する式の左端の行列乗算、およびXとの乗算を除く右端以外の任意の箇所の行列乗算から順次右または左の任意の方向に実行することとしてもよい。この場合には、式(F14)の代わりに、次の式のようにパリティベクトルYを生成する式の左端や右端(Xを除く)以外にある複数個の隣接する行列が1個の行列Cにまとめられた形に変形されることもある。
Y≡U12CU9・・・Um-1mmm-1・・・L21AX ・・・(F14−2)
ここで、Cは、U34・・・U8である。
また、1つの行列に置換される複数個の隣接する行列は、1セットに限定されるものではなく、次の式のように複数個のセットであってもよい。
Y≡C1678220・・・Um-1mmm-1・・・L63X ・・・(F14−3)
ここで、C1は、U12・・・U5であり、C2は、U910・・・U19であり、C3は、L54・・・L1Aである。
また複数の隣接する行列が1つの行列に置換されたパリティベクトルYを生成する式に含まれる行列の非対角項の非零要素数の和が、もとのパリティベクトルYを生成する式に含まれる行列の非対角項の非零要素数の和以下の条件を満足する場合に、複数の隣接する行列を1つの行列にまとめる行列乗算数削減処理を行なったが、このような条件を満たすかどうかにかかわりなく、行列乗算数削減処理を行なうこととしてもよい。つまり、第3の実施形態のステップS915〜S917の処理、第3の実施形態の変形例1のステップS1115〜S1117の処理、第4の実施形態のステップS1315〜S1317の処理、第4の実施形態の変形例1のステップS1515〜S1517の処理を省略することとしてもよい。
また、本発明の実施形態では、閾値aは正の値としたが、これは単なる一例であって、閾値aは0、または負の値であってもよい。
また、無条件で、一定個数の隣接する行列を1つの行列にまとめるものとしてもよい。
(5) オーダリング
本発明の実施形態では、行列Bに対して、u回(u≧1)の行の入れ替えと、v回(v≧1)の列の入れ替えを行なうオーダリングを行なったが、これに限定するものではない。たとえば、u回の行の入れ替えだけを行なうものとしてもよい(つまり、v=0)。この場合には、たとえば、式(D26)、(E23)、(H26)、(H28)、(I23)、(I25)は、E(v)が含まれない式に変形される。また、v回の列の入れ替えだけを行なうものとしてもよい(つまり、u=0)。この場合には、たとえば、式(D26)、(E23)、(H26)、(H28)、(I23)、(I25)は、A(u)が含まれない式に変形される。
以下、各実施形態において上記のような変形を行なった場合の、各部の構成がどのように変形されるかについて説明する。
(5−1) 第2の実施形態
(5−1−A) u≧1かつv≧1
第2の実施形態では、u≧1かつv≧1のときには、式(D26)が用いられた。
Y≡E(v)U′1U′2・・・U′m-1U′mL′mL′m-1・・・L′2L′1(u)X ・・・(D26)
(5−1−B) u≧1かつv=0
u≧1かつv=0のときには、式(D26)に代えて、次の式が用いられる。
Y≡U′1U′2・・・U′m-1U′mL′mL′m-1・・・L′2L′1(u)X ・・・(D26)′
ここで、行列B′は、行列Bに対して、u回の行の入れ替えを行なったものである。行列L′i(i=1〜m)は、行列B′をLU分解した下三角行列L′の基本下三角行列である。行列U′i(i=1〜m)は、行列B′をLU分解した上三角行列U′の基本上三角行列である。
オーダリング部は、中間結果記憶部から行列Aおよび行列Bを表わすデータを読み出して、行列Bのオーダリングを行ない、行列Bに対してu回の行の入れ替えを行なった行列B′を生成して中間結果記憶部に記憶させ、行列Aに対して行列Bに対するu回の行の入れ替えと同様の入れ替えを行なった行列A(u)を生成して行列記憶部に記憶させる。
行列記憶部は、基本上三角行列U′1、U′2、・・・、U′mを表わすデータ、基本下三角行列L′m、L′m-1、・・・、L′1を表わすデータ、および行列A(u)を表わすデータを記憶する。
行列積計算部は、パリティベクトルYを算出するために、式(D26)′に含まれる(2m+1)回の行列乗算を行列積計算制御部に指示された順序で実行する。
行列積計算制御部は、パリティベクトルYを算出するために、行列記憶部にデータが記憶されている行列の順序が先頭からA(u)、L′1、L′2、・・・、L′m、U′m、U′m-1、・・・、U′1の順となるように行列間の順序を設定し、この順序で行列乗算を行なうように行列積計算部を制御する。行列積計算制御部は、式(D26)′に含まれる(2m+1)回の行列乗算の終了後に、行列積計算部から計算結果であるパリティベクトルYを出力させる。
中間結果記憶部は、式(D26)′に含まれる行列を生成する処理(行列分解処理)における中間結果を表わすデータを記憶する。また、中間結果記憶部は、パリティベクトルYの生成処理時に、式(D26)′に含まれる(2m+1)回の行列乗算の中間結果を表わすデータを記憶する。
(5−1−C) u=0かつv≧1
また、u=0かつv≧1のときには、式(D26)に代えて、次の式が用いられる。
Y≡E(v)U′1U′2・・・U′m-1U′mL′mL′m-1・・・L′2L′1AX ・・・(D26)"
ここで、行列B′は、行列Bに対して、v回の列の入れ替えを行なったものである。行列L′i(i=1〜m)は、行列B′をLU分解した下三角行列L′の基本下三角行列である。行列U′i(i=1〜m)は、行列B′をLU分解した上三角行列U′の基本上三角行列である。
オーダリング部は、中間結果記憶部から行列Bを表わすデータを読み出して、行列Bのオーダリングを行ない、行列Bに対してv回の列の入れ替えを行なった行列B′を生成して中間結果記憶部に記憶させ、単位行列Eに対して行列Bに対するv回の列の入れ替えと同様の入れ替えを行なった行列E(v)を生成して行列記憶部に記憶させる。
行列記憶部は、基本上三角行列U′1、U′2、・・・、U′mを表わすデータ、基本下三角行列L′m、L′m-1、・・・、L′1を表わすデータ、および行列A、E(v)を表わすデータを記憶する。
行列積計算部は、パリティベクトルYを算出するために、式(D26)"に含まれる(2m+2)回の行列乗算を行列積計算制御部に指示された順序で実行する。
行列積計算制御部は、パリティベクトルYを算出するために、行列記憶部にデータが記憶されている行列の順序が先頭からA、L′1、L′2、・・・、L′m、U′m、U′m-1、・・・、U′1、E(v)の順となるように行列間の順序を設定し、この順序で行列乗算を行なうように行列積計算部を制御する。行列積計算制御部は、式(D26)"に含まれる(2m+2)回の行列乗算の終了後に、行列積計算部から計算結果であるパリティベクトルYを出力させる。
中間結果記憶部は、式(D26)"に含まれる行列を生成する処理(行列分解処理)における中間結果を表わすデータを記憶する。また、中間結果記憶部は、パリティベクトルYの生成処理時に、式(D26)"に含まれる(2m+2)回の行列乗算の中間結果を表わすデータを記憶する。
(5−2) 第2の実施形態の変形例1
(5−2−A) u≧1かつv≧1
第2の実施形態の変形例1では、u≧1かつv≧1のときには、式(E23)が用いられた。
Y=−E(v)U′1 -1U′2 -1・・・U′m-1 -1U′m -1L′m -1L′m-1 -1・・・L′2 -1L′1 -1(u)X ・・・(E23)
(5−2−B) u≧1かつv=0
u≧1かつv=0のときには、式(E23)に代えて、次の式が用いられる。
Y=−U′1 -1U′2 -1・・・U′m-1 -1U′m -1L′m -1L′m-1 -1・・・L′2 -1L′1 -1(V)X ・・・(E23)′
ここで、行列B′は、行列Bに対して、u回の行の入れ替えを行なったものである。行列L′i -1(i=1〜m)は行列L′iの逆行列である。行列L′iは、行列B′をLU分解した下三角行列L′の基本下三角行列である。行列U′i -1(i=1〜m)は行列U′iの逆行列である。行列U′iは、行列B′をLU分解した上三角行列U′の基本上三角行列である。
オーダリング部は、(5−1−B)と同様である。
行列記憶部は、基本上三角行列の逆行列U′1 -1、U′2 -1、・・・、U′m -1を表わすデータ、基本下三角行列の逆行列L′m -1、L′m-1 -1、・・・、L′1 -1を表わすデータ、および行列A(u)を表わすデータを記憶する。
行列積計算部は、パリティベクトルYを算出するために、式(E23)′に含まれる(2m+1)回の行列乗算を行列積計算制御部に指示された順序で実行する。
行列積計算制御部は、パリティベクトルYを算出するために、行列記憶部にデータが記憶されている行列の順序が先頭からA(u)、L′1 -1、L′2 -1、・・・、L′m-1 -1、L′m -1、U′m -1、U′m-1 -1、・・・、U′2 -1、U′1 -1の順となるように行列間の順序を設定し、この順序で行列乗算を行なうように行列積計算部を制御する。また、行列積計算制御部は、式(E23)′に含まれる(2m+1)回の行列乗算の終了後に、行列積計算部から計算結果であるベクトルY′(=U′1 -1U′2 -1・・・U′m-1 -1U′m -1L′m -1L′m-1 -1・・・L′2 -1L′1 -1(u))を符号反転部へ出力させる。
中間結果記憶部は、式(E23)′に含まれる行列を生成する処理(行列分解処理)における中間結果を表わすデータを記憶する。また、中間結果記憶部は、パリティベクトルYの生成処理時に、式(E23)′に含まれる(2m+1)回の行列乗算の中間結果を表わすデータを記憶する。
(5−2−C) u=0かつv≧1
また、u=0かつv≧1のときには、式(E23)に代えて、次の式が用いられる。
Y=−E(v)U′1 -1U′2 -1・・・U′m-1 -1U′m -1L′m -1L′m-1 -1・・・L′2 -1L′1 -1AX ・・・(E23)"
ここで、行列B′は、行列Bに対して、v回の列の入れ替えを行なったものである。行列L′i -1(i=1〜m)は行列L′iの逆行列である。行列L′iは、行列B′をLU分解した下三角行列L′の基本下三角行列である。行列U′i -1(i=1〜m)は行列U′iの逆行列である。行列U′iは、行列B′をLU分解した上三角行列U′の基本上三角行列である。
オーダリング部は、(5−2−B)と同様である。
行列記憶部は、基本上三角行列の逆行列U′1 -1、U′2 -1、・・・、U′m -1を表わすデータ、基本下三角行列の逆行列L′m -1、L′m-1 -1、・・・、L′1 -1を表わすデータ、および行列A、E(v)を表わすデータを記憶する。
行列積計算部は、パリティベクトルYを算出するために、式(E23)"に含まれる(2m+2)回の行列乗算を行列積計算制御部に指示された順序で実行する。
行列積計算制御部は、パリティベクトルYを算出するために、行列記憶部にデータが記憶されている行列の順序が先頭からA、L′1 -1、L′2 -1、・・・、L′m-1 -1、L′m -1、U′m -1、U′m-1 -1、・・・、U′2 -1、U′1 -1、E(v)の順となるように行列間の順序を設定し、この順序で行列乗算を行なうように行列積計算部を制御する。また、行列積計算制御部は、式(E23)"に含まれる(2m+2)回の行列乗算の終了後に、行列積計算部から計算結果であるベクトルY′(=E(v)U′1 -1U′2 -1・・・U′m-1 -1U′m -1L′m -1L′m-1 -1・・・L′2 -1L′1 -1A)を符号反転部へ出力させる。
中間結果記憶部は、式(E23)"に含まれる行列を生成する処理(行列分解処理)における中間結果を表わすデータを記憶する。また、中間結果記憶部は、パリティベクトルYの生成処理時に、式(E23)"に含まれる(2m+2)回の行列乗算の中間結果を表わすデータを記憶する。
(5−3) 第4の実施形態
(5−3−A) u≧1かつv≧1
第4の実施形態では、u≧1かつv≧1のときには、式(H26)が用いられ、E(v)、U′1〜U′t-1のt個の行列の積を1つの行列Cで表わした場合に、式(H28)が得られた。
Y≡E(v)U′1U′2・・・U′m-1U′mL′mL′m-1・・・L′2L′1(u)X ・・・(H26)
Y≡CU′t・・・U′m-1U′mL′mL′m-1・・・L′2L′1(u)X ・・・(H28)
(5−3−B) u≧1かつv=0
u≧1かつv=0のときには、式(H26)に代えて、式(H26)′が用いられ、U′1〜U′tのt個の行列の積を1つの行列Cで表わした場合に、式(H28)"が得られる。
Y≡U′1U′2・・・U′m-1U′mL′mL′m-1・・・L′2L′1(u)X ・・・(H26)′
Y≡CU′t+1・・・U′m-1U′mL′mL′m-1・・・L′2L′1(u)X ・・・(H28)′
ここで、行列B′は、行列Bに対して、u回の行の入れ替えを行なったものである。行列L′i(i=1〜m)は、行列B′をLU分解した下三角行列L′の基本下三角行列である。行列U′i(i=1〜m)は、行列B′をLU分解した上三角行列U′の基本上三角行列である。
オーダリング部は、(5−1−B)と同様である。
行列記憶部は、基本上三角行列U′t+1、U′t+2、・・・、U′mを表わすデータ、基本下三角行列L′m、L′m-1、・・・、L′1を表わすデータ、および行列C、A(u)を表わすデータを記憶する。
行列積計算部は、パリティベクトルYを算出するために、式(H28)′に含まれる(2m−t+2)回の行列乗算を行列積計算制御部に指示された順序で実行する。行列積計算部は、式(H26)′に含まれる行列乗算の個数を削減する処理を実行するときに、行列乗算数削減部から指示された行列乗算を実行する。
行列乗算数削減部は、式(H26)′に含まれる行列乗算の個数を削減する処理を行なうときに、中間結果記憶部にデータが記憶されている行列の順序が先頭からU′1、U′2、・・・、U′m-1、U′m、L′m、L′m-1、・・・、L′2、L′1、A(u)の順となるように行列間の順序を設定し、この順序で行列乗算を行なうように行列積計算部を制御する。
行列積計算制御部は、パリティベクトルYを算出するために、行列記憶部にデータが記憶されている行列の順序が先頭からA(u)、L′1、L′2、・・・、L′m-1、L′m、U′m、U′m-1、・・・、U′t+1、Cの順となるように行列間の順序を設定し、この順序で行列乗算を行なうように行列積計算部を制御する。また、行列積計算制御部は、式(H28)′に含まれる(2m−t+2)回の行列乗算の終了後に、行列積計算部から計算結果であるパリティベクトルYを出力させる。
中間結果記憶部は、式(H28)′に含まれる行列を生成する処理(行列分解処理)における中間結果を表わすデータを記憶する。また、中間結果記憶部は、パリティベクトルYの生成処理時に、式(H28)′に含まれる(2m−t+2)回の行列乗算の中間結果を表わすデータを記憶する。
(5−3−C) u=0かつv≧1
また、u=0かつv≧1のときには、式(H26)に代えて、式(H26)"が用いられ、E(v)、U′1〜U′t-1のt個の行列の積を1つの行列Cで表わした場合に、式(H28)"が得られる。
Y≡E(v)U′1U′2・・・U′m-1U′mL′mL′m-1・・・L′2L′1AX ・・・(H26)"
Y≡CU′t・・・U′m-1U′mL′mL′m-1・・・L′2L′1AX ・・・(H28)"
ここで、行列B′は、行列Bに対して、v回の列の入れ替えを行なったものである。行列L′i(i=1〜m)は、行列B′をLU分解した下三角行列L′の基本下三角行列である。行列U′i(i=1〜m)は、行列B′をLU分解した上三角行列U′の基本上三角行列である。
オーダリング部は、(5−1−C)と同様である。
行列記憶部は、基本上三角行列U′t、U′t+1、・・・、U′mを表わすデータ、基本下三角行列L′m、L′m-1、・・・、L′1を表わすデータ、および行列C、Aを表わすデータを記憶する。
行列積計算部は、パリティベクトルYを算出するために、式(H28)"に含まれる(2m−t+3)回の行列乗算を行列積計算制御部に指示された順序で実行する。行列積計算部は、式(H26)"に含まれる行列乗算の個数を削減する処理を実行するときに、行列乗算数削減部から指示された行列乗算を実行する。
行列乗算数削減部は、式(H26)"に含まれる行列乗算の個数を削減する処理を行なうときに、中間結果記憶部にデータが記憶されている行列の順序が先頭からE(v)、U′1、U′2、・・・、U′m-1、U′m、L′m、L′m-1、・・・、L′2、L′1、Aの順となるように行列間の順序を設定し、この順序で行列乗算を行なうように行列積計算部を制御する。
行列積計算制御部は、パリティベクトルYを算出するために、行列記憶部にデータが記憶されている行列の順序が先頭からA、L′1、L′2、・・・、L′m-1、L′m、U′m、U′m-1、・・・、U′t、Cの順となるように行列間の順序を設定し、この順序で行列乗算を行なうように行列積計算部を制御する。また、行列積計算制御部は、式(H28)"に含まれる(2m−t+3)回の行列乗算の終了後に、行列積計算部から計算結果であるパリティベクトルYを出力させる。
中間結果記憶部は、式(H28)"に含まれる行列を生成する処理(行列分解処理)における中間結果を表わすデータを記憶する。また、中間結果記憶部は、パリティベクトルYの生成処理時に、式(H28)"に含まれる(2m−t+3)回の行列乗算の中間結果を表わすデータを記憶する。
(5−4) 第4の実施形態の変形例1
(5−4−A) u≧1かつv≧1
第4の実施形態の変形例1では、u≧1かつv≧1のときには、式(I23)が用いられ、E(v)、U′1 -1〜U′t-1 -1のt個の行列の積を1つの行列Cで表わした場合に、式(I25)が得られた。
Y=−E(v)U′1 -1U′2 -1・・・U′m-1 -1U′m -1L′m -1L′m-1 -1・・・L′2 -1L′1 -1(u)X ・・・(I23)
Y=−CU′t -1・・・U′m-1 -1U′m -1L′m -1L′m-1 -1・・・L′2 -1L′1 -1(u)X ・・・(I25)
(5−4−B) u≧1かつv=0
u≧1かつv=0のときには、式(I23)に代えて、式(I23)′が用いられ、U′1 -1〜U′t -1のt個の行列の積を1つの行列Cで表わした場合に、式(I25)′が得られる。
Y=−U′1 -1U′2 -1・・・U′m-1 -1U′m -1L′m -1L′m-1 -1・・・L′2 -1L′1 -1(V)X ・・・(I23)′
Y=−CU′t+1 -1・・・U′m-1 -1U′m -1L′m -1L′m-1 -1・・・L′2 -1L′1 -1(u)X ・・・(I25)′
ここで、行列B′は、行列Bに対して、u回の行の入れ替えを行なったものである。行列L′i -1(i=1〜m)は行列L′iの逆行列である。行列L′iは、行列B′をLU分解した下三角行列L′の基本下三角行列である。行列U′i -1(i=1〜m)は行列U′iの逆行列である。行列U′iは、行列B′をLU分解した上三角行列U′の基本上三角行列である。
オーダリング部は、(5−1−B)と同様である。
行列記憶部は、基本上三角行列の逆行列U′t+1 -1、U′t+2 -1、・・・、U′m -1を表わすデータ、基本下三角行列の逆行列L′m -1、L′m-1 -1、・・・、L′1 -1を表わすデータ、および行列C、A(u)を表わすデータを記憶する。
行列積計算部は、パリティベクトルYを算出するために、式(I25)′に含まれる(2m−t+2)回の行列乗算を行列積計算制御部に指示された順序で実行する。行列積計算部は、式(I23)′に含まれる行列乗算の個数を削減する処理を実行するときに、行列乗算数削減部から指示された行列乗算を実行する。
行列乗算数削減部は、式(I23)′に含まれる行列乗算の個数を削減する処理を行なうときに、中間結果記憶部にデータが記憶されている行列の順序が先頭からU′1 -1、U′2 -1、・・・、U′m-1 -1、U′m -1、L′m -1、L′m-1 -1、・・・、L′2 -1、L′1 -1、A(u)の順となるように行列間の順序を設定し、この順序で行列乗算を行なうように行列積計算部を制御する。
行列積計算制御部は、パリティベクトルYを算出するために、行列記憶部にデータが記憶されている行列の順序が先頭からA(u)、L′1 -1、L′2 -1、・・・、L′m-1 -1、L′m -1、U′m -1、U′m-1 -1、・・・、U′t+1 -1、Cの順となるように行列間の順序を設定し、この順序で行列乗算を行なうように行列積計算部を制御する。また、行列積計算制御部は、式(I25)′に含まれる(2m−t+2)回の行列乗算の終了後に、行列積計算部から計算結果であるベクトルY′(=CU′t+1 -1・・・U′m-1 -1U′m -1L′m -1L′m-1 -1・・・L′2 -1L′1 -1(u)X)を符号反転部へ出力させる。
中間結果記憶部は、式(I25)′に含まれる行列を生成する処理(行列分解処理)における中間結果を表わすデータを記憶する。また、中間結果記憶部は、パリティベクトルYの生成処理時に、式(I25)′に含まれる(2m−t+2)回の行列乗算の中間結果を表わすデータを記憶する。
(5−4−C) u=0かつv≧1
また、u=0かつv≧1のときには、式(I23)に代えて、式(I23)"が用いられ、E(v)、U′1 -1〜U′t-1 -1のt個の行列の積を1つの行列Cで表わした場合に、式(I25)"が得られる。
Y=−E(v)U′1 -1U′2 -1・・・U′m-1 -1U′m -1L′m -1L′m-1 -1・・・L′2 -1L′1 -1AX ・・・(I23)"
Y=−CU′t -1・・・U′m-1 -1U′m -1L′m -1L′m-1 -1・・・L′2 -1L′1 -1AX ・・・(I25)"
ここで、行列B′は、行列Bに対して、v回の列の入れ替えを行なったものである。行列L′i -1(i=1〜m)は行列L′iの逆行列である。行列L′iは、行列B′をLU分解した下三角行列L′の基本下三角行列である。行列U′i -1(i=1〜m)は行列U′iの逆行列である。行列U′iは、行列B′をLU分解した上三角行列U′の基本上三角行列である。
オーダリング部は、(5−1−C)と同様である。
行列記憶部は、基本上三角行列の逆行列U′t -1、U′t+1 -1、・・・、U′m -1を表わすデータ、基本下三角行列の逆行列L′m -1、L′m-1 -1、・・・、L′1 -1を表わすデータ、および行列C、Aを表わすデータを記憶する。
行列積計算部は、パリティベクトルYを算出するために、式(I25)"に含まれる(2m−t+3)回の行列乗算を行列積計算制御部に指示された順序で実行する。行列積計算部は、式(I23)"に含まれる行列乗算の個数を削減する処理を実行するときに、行列乗算数削減部から指示された行列乗算を実行する。
行列乗算数削減部は、式(I23)"に含まれる行列乗算の個数を削減する処理を行なうときに、中間結果記憶部にデータが記憶されている行列の順序が先頭からE(v)、U′1 -1、U′2 -1、・・・、U′m-1 -1、U′m -1、L′m -1、L′m-1 -1、・・・、L′2 -1、L′1 -1、Aの順となるように行列間の順序を設定し、この順序で行列乗算を行なうように行列積計算部を制御する。
行列積計算制御部は、パリティベクトルYを算出するために、行列記憶部にデータが記憶されている行列の順序が先頭からA、L′1 -1、L′2 -1、・・・、L′m-1 -1、L′m -1、U′m -1、U′m-1 -1、・・・、U′t -1、Cの順となるように行列間の順序を設定し、この順序で行列乗算を行なうように行列積計算部を制御する。また、行列積計算制御部は、式(I25)"に含まれる(2m−t+3)回の行列乗算の終了後に、行列積計算部からであるベクトルY′(=CU′t -1・・・U′m-1 -1U′m -1L′m -1L′m-1 -1・・・L′2 -1L′1 -1AX)を符号反転部へ出力させる。
中間結果記憶部は、式(I25)"に含まれる行列を生成する処理(行列分解処理)における中間結果を表わすデータを記憶する。また、中間結果記憶部は、パリティベクトルYの生成処理時に、式(I25)"に含まれる(2m−t+3)回の行列乗算の中間結果を表わすデータを記憶する。
(6) パリティベクトルYを計算する過程で非対角項の非零要素数が増加しないようなオーダリング手法
たとえば、行列U3、行列U4がそれぞれ式(13)、式(14)で表わされる場合には、これらの積U4×U3は、式(15)で表わされる。
Figure 2008258774
Figure 2008258774
行列U4×U3の計算結果を観察すると、第4行は、U4の第4行と同じである。第3行は、U[3,4]が0の場合、U3の第3行と同じになる。また、第3行は、U[3,4]が1の場合、第i列がU[3,i]+U[4,i]となる。2を法とする演算では、U[3,i]とU[4,i]のいずれもが1の場合、またはいずれもが0の場合に、U[3,i]+U[4,i]の値が0となる。
このことは、行列U4×U3の非対角項の非零要素数を少なくするためには、上三角行列Uの各列において、値が「1」である要素が隣接するように行列Bをオーダリングするのが望ましいことを示している。言い換えると、上三角行列Uの各列において、値が「1」である要素が隣接するように行列Bをオーダリングすることによって、パリティベクトルYを生成する式を計算するために、行列乗算を行なっても、非対角項の非零要素数が増加しないようにすることができる。また、このようなオーダリングを行なうことによって、複数個の行列を1つにまとめても非対角項の非零要素数が増加しないので、行列乗算数削減処理によって行列乗算数を効果的に削減することができる。
また、行列L3、行列L4がそれぞれ式(16)、式(17)で表わされる場合には、これらの積L4×L3は、式(18)で表わされる。
Figure 2008258774
行列L4×L3の計算結果を観察すると、第4列は、L4の第4列と同じである。第3列は、L[4,3]が0の場合、L3の第3列と同じになる。また、第3列は、L[4,3]が1の場合、第i行がL[i,3]+L[i,4]となる。2を法とする演算では、L[i,3]とL[i,4]のいずれもが1の場合、またはいずれもが0の場合に、L[i,3]+L[i,4]の値が0となる。
このことは、行列L4×L3の非対角項の非零要素数を少なくするためには、下三角行列Lの各行において、値が「1」である要素が隣接するように行列Bをオーダリングするのが望ましいことを示している。言い換えると、下三角行列Lの各行において、値が「1」である要素が隣接するように行列Bをオーダリングすることによって、パリティベクトルYを生成する式を計算するために、行列乗算を行なっても、非対角項の非零要素数が増加しないようにすることができる。また、このようなオーダリングを行なうことによって、複数個の行列を1つにまとめても非対角項の非零要素数が増加しないので、行列乗算数削減処理によって行列乗算数を効果的に削減することができる。
(7) 符号化プログラム
本発明の実施形態で説明した符号化器は、専用のハードウエア装置で実現されるものに限られない。外部から符号化プログラムをメモリにインストールし、コンピュータがこの符号化プログラムをメモリから読出して実行することによって、符号化器の機能を実現することとしてもよい。この場合、第1の実施形態の機能を実行する符号化プログラムは図3と図4のフローチャートの各ステップを備え、第1の実施形態と同様の効果を有する。第1の実施形態の変形例1の機能を実行する符号化プログラムは図6と図7のフローチャートの各ステップを備え、第1の実施形態の変形例と同様の効果を有する。第2の実施形態の機能を実行する符号化プログラムは図9と図10のフローチャートの各ステップを備え、第2の実施形態と同様の効果を有する。第2の実施形態の変形例1の機能を実行する符号化プログラムは図12と図13のフローチャートの各ステップを備え、第2の実施形態の変形例1と同様の効果を有する。第3の実施形態の機能を実行する符号化プログラムは図15と図16のフローチャートの各ステップを備え、第3の実施形態と同様の効果を有する。第3の実施形態の変形例1の機能を実行する符号化プログラムは図18と図19のフローチャートの各ステップを備え、第3の実施形態の変形例1と同様の効果を有する。第4の実施形態の機能を実行する符号化プログラムは図21と図22のフローチャートの各ステップを備え、第4の実施形態と同様の効果を有する。第4の実施形態の変形例1の機能を実行する符号化プログラムは図24と図25のフローチャートの各ステップを備え、第4の実施形態の変形例1と同様の効果を有する。第5の実施形態の機能を実行する符号化プログラムは図3と図27のフローチャートの各ステップを備え、第5の実施形態と同様の効果を有する。
(8) 誤り訂正符号
本発明の実施形態では、誤り訂正符号の例としてLDPCについて説明したが、これに限定するものではなく、ビタビやターボ符号などへの応用も可能である。
(9) (t+1)<m、t<m
本発明の第3の実施形態およびその変形例1では、説明の便宜上(t+1)<mとしたが、これには限定されない。また、同様に、本発明の第4の実施形態およびその変形例1では、説明の便宜上t<mとしたが、これには限定されない。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
本発明の実施形態の通信システムの構成の一例を示す図である。 第1の実施形態の符号化器の構成を表わす図である。 第1の実施形態の行列分解処理のフローチャートである。 第1の実施形態の符号化ベクトル生成処理のフローチャートである。 第1の実施形態の変形例1の符号化器の構成を表わす図である。 第1の実施形態の変形例1の行列分解処理のフローチャートである。 第1の実施形態の変形例1の符号化ベクトル生成処理のフローチャートである。 第2の実施形態の符号化器の構成を表わす図である。 第2の実施形態の行列分解処理のフローチャートである。 第2の実施形態の符号化ベクトル生成処理のフローチャートである。 第2の実施形態の変形例1の符号化器の構成を表わす図である。 第2の実施形態の変形例1の行列分解処理のフローチャートである。 第2の実施形態の変形例1の符号化ベクトル生成処理のフローチャートである。 第3の実施形態の符号化器の構成を表わす図である。 第3の実施形態の行列分解処理のフローチャートである。 第3の実施形態の符号化ベクトル生成処理のフローチャートである。 第3の実施形態の変形例1の符号化器の構成を表わす図である。 第3の実施形態の変形例1の行列分解処理のフローチャートである。 第3の実施形態の変形例1の符号化ベクトル生成処理のフローチャートである。 第4の実施形態の符号化器の構成を表わす図である。 第4の実施形態の行列分解処理のフローチャートである。 第4の実施形態の符号化ベクトル生成処理のフローチャートである。 第4の実施形態の変形例1の符号化器の構成を表わす図である。 第4の実施形態の変形例1の行列分解処理のフローチャートである。 第4の実施形態の変形例1の符号化ベクトル生成処理のフローチャートである。 第5の実施形態の符号化器の構成を表わす図である。 第5の実施形態の符号化ベクトル生成処理のフローチャートである。
符号の説明
1 送信装置、2,2a〜2i 符号化器、3 変調器、4 受信装置、5 誤り訂正復号化器、6 復調器、10,30 検査行列分解部、11,21,31,41,51,61,71,81,91 行列積計算部、97 第1の行列積計算部、98 第2の行列積計算部、12,22,32,42,52,62,72,82,92 中間結果記憶部、13,17,27,33,37,47,57,67,77,87,94,96 加算器、14,34 LU分解部、15,19,29,35,39,49,59,69,79,89,93,95 乗算器、16,36 基本行列分解部、18,28,38,48,58,68,78,88 行列記憶部、20 配列部、23,43 逆行列計算部、40 オーダリング部、75,85 行列乗算数削減部、99 符号反転部、121,122,123,124,125,126,127,128,129 行列積計算制御部。

Claims (24)

  1. 要素数kの情報ベクトルXから式(A1)で表わされるパリティ生成式にしたがって2を法とする演算を行なうことによって、要素数mのパリティベクトルYを生成する符号化装置であって、
    Y≡U12・・・Um-1mmm-1・・・L21AX ・・・(A1)
    ただし、(X,Y)Tは、ベクトル(X,Y)の転置を表わし、パリティ検査行列Hは、H(X,Y)T≡0を満たすm行n列の行列であり、行列Aは、パリティ検査行列Hの第1列目〜第k列目からなり、行列Bは、パリティ検査行列Hの第(k+1)列目〜第n列目からなり、n=k+mであり、
    行列Li(i=1〜m)は、前記行列BをLU分解した下三角行列Lの基本下三角行列であって、第i列目が前記下三角行列Lの第i列目と一致し、その他の列は非対角項が0、対角項が1である行列であり、
    行列Ui(i=1〜m)は、前記行列BをLU分解した上三角行列Uの基本上三角行列であって、第i行目が前記上三角行列Uの第i行目と一致し、その他の行は非対角項が0、対角項が1である行列であり、
    前記符号化装置は、
    前記パリティ生成式に含まれる複数個の行列を表わすデータを記憶する行列記憶部と、
    前記パリティ生成式に含まれる複数回の行列乗算の中間結果を表わすデータを記憶する中間結果記憶部と、
    前記パリティベクトルYを算出するために、前記パリティ生成式に含まれる複数回の行列乗算を実行する行列積計算部とを備え、
    前記行列積計算部は、前記情報ベクトルX、前記行列記憶部内の行列を表わすデータ、または前記中間結果記憶部内の中間結果を表わすデータを用いて、前記パリティ生成式に含まれる各行列乗算を実行して、前記パリティ生成式に含まれる前記複数回の行列乗算が終了するまでの間は、該計算結果を表わすデータを中間結果を表わすデータとして前記中間結果記憶部内に記憶させ、前記パリティ生成式に含まれる前記複数回の行列乗算が終了したら、前記パリティ生成式に含まれる前記複数回の行列乗算の終了後に得られるベクトルをパリティベクトルYとして出力する、符号化装置。
  2. 前記符号化装置は、前記パリティベクトルYを生成する前に、前記パリティ生成式に含まれる行列を生成する符号化装置であって、
    前記中間結果記憶部は、さらに、前記パリティ生成式に含まれる行列を生成する処理の中間結果を表わすデータを記憶し、
    前記符号化装置は、さらに、
    前記パリティ検査行列Hを前記行列Aと前記行列Bとに分解して、前記行列Aを表わすデータを前記行列記憶部に記憶させる検査行列分解部と、
    前記行列Bを前記下三角行列Lと前記上三角行列Uの積にLU分解して、前記下三角行列Lを表わすデータおよび前記上三角行列Uを表わすデータを前記中間結果記憶部に記憶させるLU分解部と、
    前記中間結果記憶部から前記上三角行列Uおよび前記下三角行列Lを表わすデータを読み出して、前記上三角行列Uをm個の前記基本上三角行列Ui(i=1〜m)の積に分解し、前記下三角行列Lをm個の前記基本下三角行列Li(i=1〜m)の積に分解し、前記分解された行列Ui(i=1〜m)および行列Li(i=1〜m)を表わすデータを前記行列記憶部に記憶させる基本行列分解部とを備えた、請求項1記載の符号化装置。
  3. 要素数kの情報ベクトルXから式(A2)で表わされるパリティ生成式にしたがって実数演算を行なうことによって、要素数mのパリティベクトルYを生成する符号化装置であって、
    Y=−U1 -12 -1・・・Um-1 -1m -1m -1m-1 -1・・・L2 -11 -1AX ・・・(A2)
    ただし、(X,Y)Tは、ベクトル(X,Y)の転置を表わし、パリティ検査行列Hは、H(X,Y)T=0を満たすm行n列の行列であり、行列Aは、パリティ検査行列Hの第1列目〜第k列目からなり、行列Bは、パリティ検査行列Hの第(k+1)列目〜第n列目からなり、n=k+mであり、
    行列Li -1(i=1〜m)は行列Liの逆行列であり、前記行列Liは前記行列BをLU分解した下三角行列Lの基本下三角行列であって、第i列目が前記下三角行列Lの第i列目と一致し、その他の列は非対角項が0、対角項が1である行列であり、
    行列Ui -1(i=1〜m)は行列Uiの逆行列であり、前記行列Uiは、前記行列BをLU分解した上三角行列Uの基本上三角行列であって、第i行目が前記上三角行列Uの第i行目と一致し、その他の行は非対角項が0、対角項が1である行列であり、
    前記符号化装置は、
    前記パリティ生成式に含まれる複数個の行列を表わすデータを記憶する行列記憶部と、
    前記パリティ生成式に含まれる複数回の行列乗算の中間結果を表わすデータを記憶する中間結果記憶部と、
    前記パリティベクトルYを算出するために、前記パリティ生成式に含まれる複数回の行列乗算を実行する行列積計算部と、
    前記行列積計算部から出力されるベクトルの符号を反転してパリティベクトルYとして出力する符号反転部とを備え、
    前記行列積計算部は、前記情報ベクトルX、前記行列記憶部内の行列を表わすデータ、または前記中間結果記憶部内の中間結果を表わすデータを用いて、前記パリティ生成式に含まれる各行列乗算を実行して、前記パリティ生成式に含まれる前記複数回の行列乗算が終了するまでの間は、該計算結果を表わすデータを中間結果を表わすデータとして前記中間結果記憶部内に記憶させ、前記パリティ生成式に含まれる前記複数回の行列乗算が終了したら、前記パリティ生成式に含まれる前記複数回の行列乗算の終了後に得られるベクトルを前記符号反転部に出力する、符号化装置。
  4. 前記符号化装置は、前記パリティベクトルYを生成する前に、前記パリティ生成式に含まれる行列を生成する符号化装置であって、
    前記中間結果記憶部は、さらに、前記パリティ生成式に含まれる行列を生成する処理の中間結果を表わすデータを記憶し、
    前記符号化装置は、さらに、
    前記パリティ検査行列Hを前記行列Aと前記行列Bとに分解して、前記行列Aを表わすデータを前記行列記憶部に記憶させる検査行列分解部と、
    前記行列Bを前記下三角行列Lと前記上三角行列Uの積にLU分解して、前記下三角行列Lを表わすデータおよび前記上三角行列Uを表わすデータを前記中間結果記憶部に記憶させるLU分解部と、
    前記中間結果記憶部から前記上三角行列Uおよび前記下三角行列Lを表わすデータを読み出して、前記上三角行列Uをm個の前記基本上三角行列Ui(i=1〜m)の積に分解し、前記下三角行列Lをm個の前記基本下三角行列Li(i=1〜m)の積に分解し、前記分解された行列Ui(i=1〜m)および行列Li(i=1〜m)を表わすデータを前記中間結果記憶部に記憶させる基本行列分解部と、
    前記中間結果記憶部から前記行列Ui(i=1〜m)および前記行列Li(i=1〜m)を表わすデータを読み出して、前記行列Ui(i=1〜m)および前記行列Li(i=1〜m)の非対角項の要素の符号を反転することによって、逆行列Ui -1(i=1〜m)および逆行列Li -1(i=1〜m)を算出し、前記逆行列Ui -1(i=1〜m)および前記逆行列Li -1(i=1〜m)を表わすデータを前記行列記憶部に記憶させる逆行列計算部とを備えた、請求項3記載の符号化装置。
  5. 要素数kの情報ベクトルXから、u≧1かつv≧1のときには式(A3−1)、u≧1かつv=0のときには式(A3−2)、u=0かつv≧1のときには式(A3−3)で表わされるパリティ生成式にしたがって2を法とする演算を行なうことによって、要素数mのパリティベクトルYを生成する符号化装置であって、
    Y≡E(v)U′1U′2・・・U′m-1U′mL′mL′m-1・・・L′2L′1(u)X ・・・(A3−1)
    Y≡U′1U′2・・・U′m-1U′mL′mL′m-1・・・L′2L′1(u)X ・・・(A3−2)
    Y≡E(v)U′1U′2・・・U′m-1U′mL′mL′m-1・・・L′2L′1AX ・・・(A3−3)
    ただし、(X,Y)Tは、ベクトル(X,Y)の転置を表わし、パリティ検査行列Hは、H(X,Y)T≡0を満たすm行n列の行列であり、行列Aは、パリティ検査行列Hの第1列目〜第k列目からなり、行列Bは、パリティ検査行列Hの第(k+1)列目〜第n列目からなり、n=k+mであり、
    u≧1かつv≧1の場合には、行列B′は、前記行列Bに対して、u回の行の入れ替え、およびv回の列の入れ替えを行なったものであり、行列A(u)は、前記行列Aに対して、前記行列Bに対するu回の行の入れ替えと同様の入れ替えを行なったものであり、行列E(v)は、単位行列Eに対して、行列Bに対するv回の列の入れ替えと同様の入れ替えを行なったものであり、
    u≧1かつv=0の場合には、行列B′は、前記行列Bに対して、u回の行の入れ替えを行なったものであり、行列A(u)は、前記行列Aに対して、前記行列Bに対するu回の行の入れ替えと同様の入れ替えを行なったものであり、
    u=0かつv≧1の場合には、行列B′は、前記行列Bに対して、v回の列の入れ替えを行なったものであり、行列E(v)は、単位行列Eに対して、行列Bに対するv回の列の入れ替えと同様の入れ替えを行なったものであり、
    行列L′i(i=1〜m)は、前記行列B′をLU分解した下三角行列L′の基本下三角行列であって、第i列目が前記下三角行列L′の第i列目と一致し、その他の列は非対角項が0、対角項が1である行列であり、
    行列U′i(i=1〜m)は、前記行列B′をLU分解した上三角行列U′の基本上三角行列であって、第i行目が前記上三角行列U′の第i行目と一致し、その他の行は非対角項が0、対角項が1である行列であり、
    前記符号化装置は、
    前記パリティ生成式に含まれる複数個の行列を表わすデータを記憶する行列記憶部と、
    前記パリティ生成式に含まれる複数回の行列乗算の中間結果を表わすデータを記憶する中間結果記憶部と、
    前記パリティベクトルYを算出するために、前記パリティ生成式に含まれる複数回の行列乗算を実行する行列積計算部とを備え、
    前記行列積計算部は、前記情報ベクトルX、前記行列記憶部内の行列を表わすデータ、または前記中間結果記憶部内の中間結果を表わすデータを用いて、前記パリティ生成式に含まれる各行列乗算を実行して、前記パリティ生成式に含まれる前記複数回の行列乗算が終了するまでの間は、該計算結果を表わすデータを中間結果を表わすデータとして前記中間結果記憶部内に記憶させ、前記パリティ生成式に含まれる前記複数回の行列乗算が終了したら、前記パリティ生成式に含まれる前記複数回の行列乗算の終了後に得られるベクトルをパリティベクトルYとして出力する、符号化装置。
  6. 前記符号化装置は、前記パリティベクトルYを生成する前に、前記パリティ生成式に含まれる行列を生成する符号化装置であって、
    前記中間結果記憶部は、さらに、前記パリティ生成式に含まれる行列を生成する処理の中間結果を表わすデータを記憶し、
    前記符号化装置は、さらに、
    前記パリティ検査行列Hを前記行列Aと前記行列Bに分解して、u=0かつv≧1のときには、前記行列Aを表わすデータを前記行列記憶部に記憶させる検査行列分解部と、
    u≧1かつv≧1の場合、前記行列Bのオーダリングを行ない、前記行列Bに対してu回の行の入れ替えおよびv回の列の入れ替えを行なった前記行列B′を生成し、前記行列Aに対して前記行列Bに対するu回の行の入れ替えと同様の入れ替えを行なった前記行列A(u)を生成して前記行列記憶部に記憶させ、前記単位行列Eに対して前記行列Bに対するv回の列の入れ替えと同様の入れ替えを行なった前記行列E(v)を生成して前記行列記憶部に記憶させ、u≧1かつv=0の場合、前記行列Bのオーダリングを行ない、前記行列Bに対してu回の行の入れ替えを行なった前記行列B′を生成し、前記行列Aに対して前記行列Bに対するu回の行の入れ替えと同様の入れ替えを行なった前記行列A(u)を生成して前記行列記憶部に記憶させ、u=0かつv≧1の場合、前記行列Bのオーダリングを行ない、前記行列Bに対してv回の列の入れ替えを行なった前記行列B′を生成し、前記単位行列Eに対して前記行列Bに対するv回の列の入れ替えと同様の入れ替えを行なった前記行列E(v)を生成して前記行列記憶部に記憶させるオーダリング部と、
    前記行列B′を前記下三角行列L′と前記上三角行列U′の積にLU分解して、前記下三角行列L′を表わすデータおよび前記上三角行列U′を表わすデータを前記中間結果記憶部に記憶させるLU分解部と、
    前記中間結果記憶部から前記上三角行列U′および前記下三角行列L′を表わすデータを読み出して、前記上三角行列U′をm個の前記基本上三角行列U′i(i=1〜m)の積に分解し、前記下三角行列L′をm個の前記基本下三角行列L′i(i=1〜m)の積に分解し、前記分解された行列U′i(i=1〜m)および行列′Li(i=1〜m)を表わすデータを前記行列記憶部に記憶させる基本行列分解部とを備えた、請求項5記載の符号化装置。
  7. 要素数kの情報ベクトルXから、u≧1かつv≧1のときには式(A4−1)、u≧1かつv=0のときには式(A4−2)、u=0かつv≧1のときには式(A4−3)で表わされるパリティ生成式にしたがって2を法とする演算を行なうことによって、要素数mのパリティベクトルYを生成する符号化装置であって、
    Y=−E(v)U′1 -1U′2 -1・・・U′m-1 -1U′m -1L′m -1L′m-1 -1・・・L′2 -1L′1 -1(u)X ・・・(A4−1)
    Y=−U′1 -1U′2 -1・・・U′m-1 -1U′m -1L′m -1L′m-1 -1・・・L′2 -1L′1 -1(V)X ・・・(A4−2)
    Y=−E(v)U′1 -1U′2 -1・・・U′m-1 -1U′m -1L′m -1L′m-1 -1・・・L′2 -1L′1 -1AX ・・・(A4−3)
    ただし、パリティ検査行列Hは、H(X,Y)T=0を満たすm行n列の行列であり、行列Aは、パリティ検査行列Hの第1列目〜第k列目からなり、行列Bは、パリティ検査行列Hの第(k+1)列目〜第n列目からなり、n=k+mであり、
    u≧1かつv≧1の場合には、行列B′は、前記行列Bに対して、u回の行の入れ替え、およびv回の列の入れ替えを行なったものであり、行列A(u)は、前記行列Aに対して、前記行列Bに対するu回の行の入れ替えと同様の入れ替えを行なったものであり、行列E(v)は、単位行列Eに対して、行列Bに対するv回の列の入れ替えと同様の入れ替えを行なったものであり、
    u≧1かつv=0の場合には、行列B′は、前記行列Bに対して、u回の行の入れ替えを行なったものであり、行列A(u)は、前記行列Aに対して、前記行列Bに対するu回の行の入れ替えと同様の入れ替えを行なったものであり、
    u=0かつv≧1の場合には、行列B′は、前記行列Bに対して、v回の列の入れ替えを行なったものであり、行列E(v)は、単位行列Eに対して、行列Bに対するv回の列の入れ替えと同様の入れ替えを行なったものであり、
    行列L′i -1(i=1〜m)は行列L′iの逆行列であり、前記行列L′iは、前記行列B′をLU分解した下三角行列L′の基本下三角行列であって、第i列目が前記下三角行列L′の第i列目と一致し、その他の列は非対角項が0、対角項が1である行列であり、
    行列U′i -1(i=1〜m)は行列U′iの逆行列であり、前記行列U′iは、前記行列B′をLU分解した上三角行列U′の基本上三角行列であって、第i行目が前記上三角行列U′の第i行目と一致し、その他の行は非対角項が0、対角項が1である行列であり、
    前記符号化装置は、
    前記パリティ生成式に含まれる複数個の行列を表わすデータを記憶する行列記憶部と、
    前記パリティ生成式に含まれる複数回の行列乗算の中間結果を表わすデータを記憶する中間結果記憶部と、
    前記パリティベクトルYを算出するために、前記パリティ生成式に含まれる複数回の行列乗算を実行する行列積計算部と、
    前記行列積計算部から出力されるベクトルの符号を反転してパリティベクトルYとして出力する符号反転部とを備え、
    前記行列積計算部は、前記情報ベクトルX、前記行列記憶部内の行列を表わすデータ、または前記中間結果記憶部内の中間結果を表わすデータを用いて、前記パリティ生成式に含まれる各行列乗算を実行して、前記パリティ生成式に含まれる前記複数回の行列乗算が終了するまでの間は、該計算結果を表わすデータを中間結果を表わすデータとして前記中間結果記憶部内に記憶させ、前記パリティ生成式に含まれる前記複数回の行列乗算が終了したら、前記パリティ生成式に含まれる前記複数回の行列乗算の終了後に得られるベクトルを前記符号反転部に出力する、符号化装置。
  8. 前記符号化装置は、前記パリティベクトルYを生成する前に、前記パリティ生成式に含まれる行列を生成する符号化装置であって、
    前記中間結果記憶部は、さらに、前記パリティ生成式に含まれる行列を生成する処理の中間結果を表わすデータを記憶し、
    前記符号化装置は、さらに、
    前記パリティ検査行列Hを前記行列Aと前記行列Bに分解して、u=0かつv≧1のときには、前記行列Aを表わすデータを前記行列記憶部に記憶させる検査行列分解部と、
    u≧1かつv≧1の場合、前記行列Bのオーダリングを行ない、前記行列Bに対してu回の行の入れ替えおよびv回の列の入れ替えを行なった前記行列B′を生成し、前記行列Aに対して前記行列Bに対するu回の行の入れ替えと同様の入れ替えを行なった前記行列A(u)を生成して前記行列記憶部に記憶させ、前記単位行列Eに対して前記行列Bに対するv回の列の入れ替えと同様の入れ替えを行なった前記行列E(v)を生成して前記行列記憶部に記憶させ、u≧1かつv=0の場合、前記行列Bのオーダリングを行ない、前記行列Bに対してu回の行の入れ替えを行なった前記行列B′を生成し、前記行列Aに対して前記行列Bに対するu回の行の入れ替えと同様の入れ替えを行なった前記行列A(u)を生成して前記行列記憶部に記憶させ、u=0かつv≧1の場合、前記行列Bのオーダリングを行ない、前記行列Bに対してv回の列の入れ替えを行なった前記行列B′を生成し、前記単位行列Eに対して前記行列Bに対するv回の列の入れ替えと同様の入れ替えを行なった前記行列E(v)を生成して前記行列記憶部に記憶させるオーダリング部と、
    前記行列B′を前記下三角行列L′と前記上三角行列U′の積にLU分解して、前記下三角行列L′を表わすデータおよび前記上三角行列U′を表わすデータを前記中間結果記憶部に記憶させるLU分解部と、
    前記中間結果記憶部から前記上三角行列U′および前記下三角行列L′を表わすデータを読み出して、前記上三角行列U′をm個の前記基本上三角行列U′i(i=1〜m)の積に分解し、前記下三角行列L′をm個の前記基本下三角行列L′i(i=1〜m)の積に分解し、前記分解された行列U′i(i=1〜m)および行列′Li(i=1〜m)を表わすデータを前記中間結果記憶部に記憶させる基本行列分解部と、
    前記中間結果記憶部から前記行列U′i(i=1〜m)および前記行列L′i(i=1〜m)を表わすデータを読み出して、前記行列U′i(i=1〜m)および前記行列L′i(i=1〜m)の非対角項の要素の符号を反転することによって、逆行列U′i -1(i=1〜m)および逆行列L′i -1(i=1〜m)を算出し、前記逆行列U′i -1(i=1〜m)および前記逆行列L′i -1(i=1〜m)を表わすデータを前記行列記憶部に記憶させる逆行列計算部とを備えた、請求項7記載の符号化装置。
  9. 要素数kの情報ベクトルXから、式(A5)に含まれる少なくとも1セットの隣接する2個以上の行列が、前記2個以上の行列の乗算結果である行列Cで置換されたパリティ生成式にしたがって2を法とする演算を行なうことによって、要素数mのパリティベクトルYを生成する符号化装置であって、
    Y≡U12・・・Um-1mmm-1・・・L21AX ・・・(A5)
    ただし、(X,Y)Tは、ベクトル(X,Y)の転置を表わし、パリティ検査行列Hは、H(X,Y)T≡0を満たすm行n列の行列であり、行列Aは、パリティ検査行列Hの第1列目〜第k列目からなり、行列Bは、パリティ検査行列Hの第(k+1)列目〜第n列目からなり、n=k+mであり、
    行列Li(i=1〜m)は、前記行列BをLU分解した下三角行列Lの基本下三角行列であって、第i列目が前記下三角行列Lの第i列目と一致し、その他の列は非対角項が0、対角項が1である行列であり、
    行列Ui(i=1〜m)は、前記行列BをLU分解した上三角行列Uの基本上三角行列であって、第i行目が前記上三角行列Uの第i行目と一致し、その他の行は非対角項が0、対角項が1である行列であり、
    前記符号化装置は、
    前記パリティ生成式に含まれる複数個の行列を表わすデータを記憶する行列記憶部と、
    前記パリティ生成式に含まれる複数回の行列乗算の中間結果を表わすデータを記憶する中間結果記憶部と、
    前記パリティベクトルYを算出するために、前記パリティ生成式に含まれる複数回の行列乗算を実行する行列積計算部とを備え、
    前記行列積計算部は、前記情報ベクトルX、前記行列記憶部内の行列を表わすデータ、または前記中間結果記憶部内の中間結果を表わすデータを用いて、前記パリティ生成式に含まれる各行列乗算を実行して、前記パリティ生成式に含まれる前記複数回の行列乗算が終了するまでの間は、該計算結果を表わすデータを中間結果を表わすデータとして前記中間結果記憶部内に記憶させ、前記パリティ生成式に含まれる前記複数回の行列乗算が終了したら、前記パリティ生成式に含まれる前記複数回の行列乗算の終了後に得られるベクトルをパリティベクトルYとして出力する、符号化装置。
  10. 前記パリティ生成式に含まれるすべての行列の非対角項の非零要素数の和は、前記式(A5)に含まれるすべての行列の非対角項の非零要素数の和以下である、請求項9記載の符号化装置。
  11. 前記符号化装置は、前記パリティベクトルYを生成する前に、前記パリティ生成式に含まれる行列を生成する符号化装置であって、
    前記中間結果記憶部は、さらに、前記パリティ生成式に含まれる行列を生成する処理の中間結果を表わすデータを記憶し、
    前記行列積計算部は、さらに、式(A5)に含まれる隣接する2個以上の行列の乗算を実行して、乗算結果である行列Cを表わすデータを出力し、
    前記符号化装置は、さらに、
    前記パリティ検査行列Hを前記行列Aと前記行列Bに分解して、前記行列Aを表わすデータを前記行列記憶部に記憶させる検査行列分解部と、
    前記行列Bを前記下三角行列Lと前記上三角行列Uの積にLU分解して、前記下三角行列Lを表わすデータおよび前記上三角行列Uを表わすデータを前記中間結果記憶部に記憶させるLU分解部と、
    前記中間結果記憶部から前記上三角行列Uおよび前記下三角行列Lを表わすデータを読み出して、前記上三角行列Uをm個の前記基本上三角行列Ui(i=1〜m)の積に分解し、前記下三角行列Lをm個の前記基本下三角行列Li(i=1〜m)の積に分解し、前記分解された行列Ui(i=1〜m)および行列Li(i=1〜m)を表わすデータを前記中間結果記憶部に記憶させる基本行列分解部と、
    前記乗算結果である行列Cの非零要素数と前記式(A5)に含まれる行列のうち前記隣接する2個以上の行列を除いた行列の非対角項の非零要素数の和が、前記式(A5)に含まれるすべての行列の非対角項の非零要素数の和以下である場合に、前記中間結果記憶部に記憶されている前記式(A5)に含まれる行列のうち前記隣接する2個以上の行列を除いた行列を表わすデータと、前記行列Cを表わすデータとを前記行列記憶部に記憶する行列乗算数削減部とを備えた、請求項10記載の符号化装置。
  12. 要素数kの情報ベクトルXから、式(A6)に含まれる少なくとも1セットの隣接する2個以上の行列が、前記2個以上の行列の乗算結果である行列Cで置換されたパリティ生成式にしたがって実数演算を行なうことによって、要素数mのパリティベクトルYを生成する符号化装置であって、
    Y=−U1 -12 -1・・・Um-1 -1m -1m -1m-1 -1・・・L2 -11 -1AX ・・・(A6)
    ただし、(X,Y)Tは、ベクトル(X,Y)の転置を表わし、パリティ検査行列Hは、H(X,Y)T=0を満たすm行n列の行列であり、行列Aは、パリティ検査行列Hの第1列目〜第k列目からなり、行列Bは、パリティ検査行列Hの第(k+1)列目〜第n列目からなり、n=k+mであり、
    行列Li -1(i=1〜m)は行列Liの逆行列であり、前記行列Liは前記行列BをLU分解した下三角行列Lの基本下三角行列であって、第i列目が前記下三角行列Lの第i列目と一致し、その他の列は非対角項が0、対角項が1である行列であり、
    行列Ui -1(i=1〜m)は行列Uiの逆行列であり、前記行列Uiは、前記行列BをLU分解した上三角行列Uの基本上三角行列であって、第i行目が前記上三角行列Uの第i行目と一致し、その他の行は非対角項が0、対角項が1である行列であり、
    前記符号化装置は、
    前記パリティ生成式に含まれる複数個の行列を表わすデータを記憶する行列記憶部と、
    前記パリティ生成式に含まれる複数回の行列乗算の中間結果を表わすデータを記憶する中間結果記憶部と、
    前記パリティベクトルYを算出するために、前記パリティ生成式に含まれる複数回の行列乗算を実行する行列積計算部と、
    前記行列積計算部から出力されるベクトルの符号を反転してパリティベクトルYとして出力する符号反転部とを備え、
    前記行列積計算部は、前記情報ベクトルX、前記行列記憶部内の行列を表わすデータ、または前記中間結果記憶部内の中間結果を表わすデータを用いて、前記パリティ生成式に含まれる各行列乗算を実行して、前記パリティ生成式に含まれる前記複数回の行列乗算が終了するまでの間は、該計算結果を表わすデータを中間結果を表わすデータとして前記中間結果記憶部内に記憶させ、前記パリティ生成式に含まれる前記複数回の行列乗算が終了したら、前記パリティ生成式に含まれる前記複数回の行列乗算の終了後に得られるベクトルを前記符号反転部に出力する、符号化装置。
  13. 前記パリティ生成式に含まれるすべての行列の非対角項の非零要素数の和は、前記式(A6)に含まれるすべての行列の非対角項の非零要素数の和以下である、請求項12記載の符号化装置。
  14. 前記符号化装置は、前記パリティベクトルYを生成する前に、前記パリティ生成式に含まれる行列を生成する符号化装置であって、
    前記中間結果記憶部は、さらに、前記パリティ生成式に含まれる行列を生成する処理の中間結果を表わすデータを記憶し、
    前記行列積計算部は、さらに、式(A6)に含まれる隣接する2個以上の行列の乗算を実行して、乗算結果である行列Cを表わすデータを出力し、
    前記符号化装置は、さらに、
    前記パリティ検査行列Hを前記行列Aと前記行列Bに分解して、前記行列Aを表わすデータを前記行列記憶部に記憶させる検査行列分解部と、
    前記行列Bを前記下三角行列Lと前記上三角行列Uの積にLU分解して、前記下三角行列Lを表わすデータおよび前記上三角行列Uを表わすデータを前記中間結果記憶部に記憶させるLU分解部と、
    前記中間結果記憶部から前記上三角行列Uおよび前記下三角行列Lを表わすデータを読み出して、前記上三角行列Uをm個の前記基本上三角行列Ui(i=1〜m)の積に分解し、前記下三角行列Lをm個の基本下三角行列Li(i=1〜m)の積に分解し、前記分解された行列Ui(i=1〜m)および行列Li(i=1〜m)を表わすデータを前記中間結果記憶部に記憶させる基本行列分解部と、
    前記中間結果記憶部から前記行列Ui(i=1〜m)および前記行列Li(i=1〜m)を表わすデータを読み出して、前記行列Ui(i=1〜m)および前記行列Li(i=1〜m)の非対角項の要素の符号を反転することによって、逆行列Ui -1(i=1〜m)および逆行列Li -1(i=1〜m)を算出し、前記逆行列Ui -1(i=1〜m)および前記逆行列Li -1(i=1〜m)を表わすデータを前記中間結果記憶部に記憶させる逆行列計算部と、
    前記乗算結果である行列Cの非零要素数と前記式(A6)に含まれる行列のうち前記隣接する2個以上の行列を除いた行列の非対角項の非零要素数の和が、前記式(A6)に含まれるすべての行列の非対角項の非零要素数の和以下である場合に、前記中間結果記憶部に記憶されている前記式(A6)に含まれる行列のうち前記隣接する2個以上の行列を除いた行列を表わすデータと、前記行列Cを表わすデータとを前記行列記憶部に記憶する行列乗算数削減部とを備えた、請求項13記載の符号化装置。
  15. 要素数kの情報ベクトルXから、u≧1かつv≧1のときには式(A7−1)、u≧1かつv=0のときには式(A7−2)、u=0かつv≧1のときには式(A7−3)に含まれる少なくとも1セットの隣接する2個以上の行列が、前記2個以上の行列の乗算結果である行列Cで置換されたパリティ生成式にしたがって2を法とする演算を行なうことによって、要素数mのパリティベクトルYを生成する符号化装置であって、
    Y≡E(v)U′1U′2・・・U′m-1U′mL′mL′m-1・・・L′2L′1(u)X ・・・(A7−1)
    Y≡U′1U′2・・・U′m-1U′mL′mL′m-1・・・L′2L′1(u)X ・・・(A7−2)
    Y≡E(v)U′1U′2・・・U′m-1U′mL′mL′m-1・・・L′2L′1AX ・・・(A7−3)
    ただし、(X,Y)Tは、ベクトル(X,Y)の転置を表わし、パリティ検査行列Hは、H(X,Y)T≡0を満たすm行n列の行列であり、行列Aは、パリティ検査行列Hの第1列目〜第k列目からなり、行列Bは、パリティ検査行列Hの第(k+1)列目〜第n列目からなり、n=k+mであり、
    u≧1かつv≧1の場合には、行列B′は、前記行列Bに対して、u回の行の入れ替え、およびv回の列の入れ替えを行なったものであり、行列A(u)は、前記行列Aに対して、前記行列Bに対するu回の行の入れ替えと同様の入れ替えを行なったものであり、行列E(v)は、単位行列Eに対して、行列Bに対するv回の列の入れ替えと同様の入れ替えを行なったものであり、
    u≧1かつv=0の場合には、行列B′は、前記行列Bに対して、u回の行の入れ替えを行なったものであり、行列A(u)は、前記行列Aに対して、前記行列Bに対するu回の行の入れ替えと同様の入れ替えを行なったものであり、
    u=0かつv≧1の場合には、行列B′は、前記行列Bに対して、v回の列の入れ替えを行なったものであり、行列E(v)は、単位行列Eに対して、行列Bに対するv回の列の入れ替えと同様の入れ替えを行なったものであり、
    行列L′i(i=1〜m)は、前記行列B′をLU分解した下三角行列L′の基本下三角行列であって、第i列目が前記下三角行列L′の第i列目と一致し、その他の列は非対角項が0、対角項が1である行列であり、
    行列U′i(i=1〜m)は、前記行列B′をLU分解した上三角行列U′の基本上三角行列であって、第i行目が前記上三角行列U′の第i行目と一致し、その他の行は非対角項が0、対角項が1である行列であり、
    前記符号化装置は、
    前記パリティ生成式に含まれる複数個の行列を表わすデータを記憶する行列記憶部と、
    前記パリティ生成式に含まれる複数回の行列乗算の中間結果を表わすデータを記憶する中間結果記憶部と、
    前記パリティベクトルYを算出するために、前記パリティ生成式に含まれる複数回の行列乗算を実行する行列積計算部とを備え、
    前記行列積計算部は、前記情報ベクトルX、前記行列記憶部内の行列を表わすデータ、または前記中間結果記憶部内の中間結果を表わすデータを用いて、前記パリティ生成式に含まれる各行列乗算を実行して、前記パリティ生成式に含まれる前記複数回の行列乗算が終了するまでの間は、該計算結果を表わすデータを中間結果を表わすデータとして前記中間結果記憶部内に記憶させ、前記パリティ生成式に含まれる前記複数回の行列乗算が終了したら、前記パリティ生成式に含まれる前記複数回の行列乗算の終了後に得られるベクトルをパリティベクトルYとして出力する、符号化装置。
  16. 前記パリティ生成式に含まれるすべての行列の非対角項の非零要素数の和は、前記式(A7−1)、(A7−2)、または(A7−3)に含まれるすべての行列の非対角項の非零要素数の和以下である、請求項15記載の符号化装置。
  17. 前記符号化装置は、前記パリティベクトルYを生成する前に、前記パリティ生成式に含まれる行列を生成する符号化装置であって、
    前記中間結果記憶部は、さらに、前記パリティ生成式に含まれる行列を生成する処理の中間結果を表わすデータを記憶し、
    前記行列積計算部は、さらに、式(A7−1)、(A7−2)、または(A7−3)に含まれる隣接する2個以上の行列の乗算を実行して、乗算結果である行列Cを表わすデータを出力し、
    前記符号化装置は、さらに、
    前記パリティ検査行列Hを前記行列Aと前記行列Bに分解して、前記行列Aおよび前記行列Bを表わすデータを前記中間結果記憶部に記憶させる検査行列分解部と、
    u≧1かつv≧1の場合、前記中間結果記憶部から前記行列Aおよび前記行列Bを表わすデータを読み出して、前記行列Bのオーダリングを行ない、前記行列Bに対してu回の行の入れ替えおよびv回の列の入れ替えを行なった前記行列B′を生成し、前記行列Aに対して前記行列Bに対するu回の行の入れ替えと同様の入れ替えを行なった前記行列A(u)を生成して前記中間結果記憶部に記憶させ、前記単位行列Eに対して前記行列Bに対するv回の列の入れ替えと同様の入れ替えを行なった前記行列E(v)を生成して前記中間結果記憶部に記憶させ、u≧1かつv=0の場合、前記中間結果記憶部から前記行列Aおよび前記行列Bを表わすデータを読み出して、前記行列Bのオーダリングを行ない、前記行列Bに対してu回の行の入れ替えを行なった前記行列B′を生成し、前記行列Aに対して前記行列Bに対するu回の行の入れ替えと同様の入れ替えを行なった前記行列A(u)を生成して前記中間結果記憶部に記憶させ、u=0かつv≧1の場合、前記中間結果記憶部から前記行列Bを表わすデータを読み出して、前記行列Bのオーダリングを行ない、前記行列Bに対してv回の列の入れ替えを行なった前記行列B′を生成し、前記単位行列Eに対して前記行列Bに対するv回の列の入れ替えと同様の入れ替えを行なった前記行列E(v)を生成して前記中間結果記憶部に記憶させるオーダリング部と、
    前記行列B′を前記下三角行列L′と前記上三角行列U′の積にLU分解して、前記下三角行列L′を表わすデータおよび前記上三角行列U′を表わすデータを前記中間結果記憶部に記憶させるLU分解部と、
    前記中間結果記憶部から前記上三角行列U′および前記下三角行列L′を表わすデータを読み出して、前記上三角行列U′をm個の前記基本上三角行列U′i(i=1〜m)の積に分解し、前記下三角行列L′をm個の基本下三角行列L′i(i=1〜m)の積に分解し、前記分解された行列U′i(i=1〜m)および行列′Li(i=1〜m)を表わすデータを前記中間結果記憶部に記憶させる基本行列分解部と、
    前記乗算結果である行列Cの非零要素数と前記式(A7−1)、(A7−2)、または(A7−3)に含まれる行列のうち前記隣接する2個以上の行列を除いた行列の非対角項の非零要素数の和が、前記式(A7−1)、(A7−2)、または(A7−3)に含まれるすべての行列の非対角項の非零要素数の和以下である場合に、前記中間結果記憶部に記憶されている前記式(A7−1)、(A7−2)、または(A7−3)に含まれる行列のうち前記隣接する2個以上の行列を除いた行列を表わすデータと、前記行列Cを表わすデータとを前記行列記憶部に記憶する行列乗算数削減部とを備えた、請求項16記載の符号化装置。
  18. 要素数kの情報ベクトルXから、u≧1かつv≧1のときには式(A8−1)、u≧1かつv=0のときには式(A8−2)、u=0かつv≧1のときには式(A8−3)に含まれる少なくとも1セットの隣接する2個以上の行列が、前記2個以上の行列の乗算結果である行列Cで置換されたパリティ生成式にしたがって実数演算を行なうことによって、要素数mのパリティベクトルYを生成する符号化装置であって、
    Y=−E(v)U′1 -1U′2 -1・・・U′m-1 -1U′m -1L′m -1L′m-1 -1・・・L′2 -1L′1 -1(u)X ・・・(A8−1)
    Y=−U′1 -1U′2 -1・・・U′m-1 -1U′m -1L′m -1L′m-1 -1・・・L′2 -1L′1 -1(V)X ・・・(A8−2)
    Y=−E(v)U′1 -1U′2 -1・・・U′m-1 -1U′m -1L′m -1L′m-1 -1・・・L′2 -1L′1 -1AX ・・・(A8−3)
    ただし、(X,Y)Tは、ベクトル(X,Y)の転置を表わし、パリティ検査行列Hは、H(X,Y)T=0を満たすm行n列の行列であり、行列Aは、パリティ検査行列Hの第1列目〜第k列目からなり、行列Bは、パリティ検査行列Hの第(k+1)列目〜第n列目からなり、n=k+mであり、
    u≧1かつv≧1の場合には、行列B′は、前記行列Bに対して、u回の行の入れ替え、およびv回の列の入れ替えを行なったものであり、行列A(u)は、前記行列Aに対して、前記行列Bに対するu回の行の入れ替えと同様の入れ替えを行なったものであり、行列E(v)は、単位行列Eに対して、行列Bに対するv回の列の入れ替えと同様の入れ替えを行なったものであり、
    u≧1かつv=0の場合には、行列B′は、前記行列Bに対して、u回の行の入れ替えを行なったものであり、行列A(u)は、前記行列Aに対して、前記行列Bに対するu回の行の入れ替えと同様の入れ替えを行なったものであり、
    u=0かつv≧1の場合には、行列B′は、前記行列Bに対して、v回の列の入れ替えを行なったものであり、行列E(v)は、単位行列Eに対して、行列Bに対するv回の列の入れ替えと同様の入れ替えを行なったものであり、
    行列L′i -1(i=1〜m)は行列L′iの逆行列であり、前記行列L′iは、前記行列B′をLU分解した下三角行列L′の基本下三角行列であって、第i列目が前記下三角行列L′の第i列目と一致し、その他の列は非対角項が0、対角項が1である行列であり、
    行列U′i -1(i=1〜m)は行列U′iの逆行列であり、前記行列U′iは、前記行列B′をLU分解した上三角行列U′の基本上三角行列であって、第i行目が前記上三角行列U′の第i行目と一致し、その他の行は非対角項が0、対角項が1である行列であり、
    前記符号化装置は、
    前記パリティ生成式に含まれる複数個の行列を表わすデータを記憶する行列記憶部と、
    前記パリティ生成式に含まれる複数回の行列乗算の中間結果を表わすデータを記憶する中間結果記憶部と、
    前記パリティベクトルYを算出するために、前記パリティ生成式に含まれる複数回の行列乗算を実行する行列積計算部と、
    前記行列積計算部から出力されるベクトルの符号を反転してパリティベクトルYとして出力する符号反転部とを備え、
    前記行列積計算部は、前記情報ベクトルX、前記行列記憶部内の行列を表わすデータ、または前記中間結果記憶部内の中間結果を表わすデータを用いて、前記パリティ生成式に含まれる各行列乗算を実行して、前記パリティ生成式に含まれる前記複数回の行列乗算が終了するまでの間は、該計算結果を表わすデータを中間結果を表わすデータとして前記中間結果記憶部内に記憶させ、前記パリティ生成式に含まれる前記複数回の行列乗算が終了したら、前記パリティ生成式に含まれる前記複数回の行列乗算の終了後に得られるベクトルを前記符号反転部に出力する、符号化装置。
  19. 前記パリティ生成式に含まれるすべての行列の非対角項の非零要素数の和は、前記式(A8−1)、(A8−2)、または(A8−3)に含まれるすべての行列の非対角項の非零要素数の和以下である、請求項18記載の符号化装置。
  20. 前記符号化装置は、前記パリティベクトルYを生成する前に、前記パリティ生成式に含まれる行列を生成する符号化装置であって、
    前記中間結果記憶部は、さらに、前記パリティ生成式に含まれる行列を生成する処理の中間結果を表わすデータを記憶し、
    前記行列積計算部は、さらに、式(A8−1)、(A8−2)、または(A8−3)に含まれる隣接する2個以上の行列の乗算を実行して、乗算結果である行列Cを表わすデータを出力し、
    前記符号化装置は、さらに、
    前記パリティ検査行列Hを前記行列Aと前記行列Bに分解して、前記行列Aおよび前記行列Bを表わすデータを前記中間結果記憶部に記憶させる検査行列分解部と、
    u≧1かつv≧1の場合、前記中間結果記憶部から前記行列Aおよび前記行列Bを表わすデータを読み出して、前記行列Bのオーダリングを行ない、前記行列Bに対してu回の行の入れ替えおよびv回の列の入れ替えを行なった前記行列B′を生成し、前記行列Aに対して前記行列Bに対するu回の行の入れ替えと同様の入れ替えを行なった前記行列A(u)を生成して前記中間結果記憶部に記憶させ、前記単位行列Eに対して前記行列Bに対するv回の列の入れ替えと同様の入れ替えを行なった前記行列E(v)を生成して前記中間結果記憶部に記憶させ、u≧1かつv=0の場合、前記中間結果記憶部から前記行列Aおよび前記行列Bを表わすデータを読み出して、前記行列Bのオーダリングを行ない、前記行列Bに対してu回の行の入れ替えを行なった前記行列B′を生成し、前記行列Aに対して前記行列Bに対するu回の行の入れ替えと同様の入れ替えを行なった前記行列A(u)を生成して前記中間結果記憶部に記憶させ、u=0かつv≧1の場合、前記中間結果記憶部から前記行列Bを表わすデータを読み出して、前記行列Bのオーダリングを行ない、前記行列Bに対してv回の列の入れ替えを行なった前記行列B′を生成し、前記単位行列Eに対して前記行列Bに対するv回の列の入れ替えと同様の入れ替えを行なった前記行列E(v)を生成して前記中間結果記憶部に記憶させるオーダリング部と、
    前記行列B′を前記下三角行列L′と前記上三角行列U′の積にLU分解して、前記下三角行列L′を表わすデータおよび前記上三角行列U′を表わすデータを前記中間結果記憶部に記憶させるLU分解部と、
    前記中間結果記憶部から前記上三角行列U′および前記下三角行列L′を表わすデータを読み出して、前記上三角行列U′をm個の前記基本上三角行列U′i(i=1〜m)の積に分解し、前記下三角行列L′をm個の前記基本下三角行列L′i(i=1〜m)の積に分解し、前記分解された行列U′i(i=1〜m)および行列′Li(i=1〜m)を表わすデータを前記中間結果記憶部に記憶させる基本行列分解部と、
    前記中間結果記憶部から前記行列U′i(i=1〜m)および前記行列L′i(i=1〜m)を表わすデータを読み出して、前記行列U′i(i=1〜m)および前記行列L′i(i=1〜m)の非対角項の要素の符号を反転することによって、逆行列U′i -1(i=1〜m)および逆行列L′i -1(i=1〜m)を算出し、前記逆行列U′i -1(i=1〜m)および前記逆行列L′i -1(i=1〜m)を表わすデータを前記中間結果記憶部に記憶させる逆行列計算部と、
    前記乗算結果である行列Cの非零要素数と前記式(A8−1)、(A8−2)、または(A8−3)に含まれる行列のうち前記隣接する2個以上の行列を除いた行列の非対角項の非零要素数の和が、前記式(A8−1)、(A8−2)、または(A8−3)に含まれるすべての行列の非対角項の非零要素数の和以下である場合に、前記中間結果記憶部に記憶されている前記式(A8−1)、(A8−2)、または(A8−3)に含まれる行列のうち前記隣接する2個以上の行列を除いた行列を表わすデータと、前記行列Cを表わすデータとを前記行列記憶部に記憶する行列乗算数削減部とを備えた、請求項19記載の符号化装置。
  21. 前記行列積計算部は、前記パリティ生成式に含まれる複数回の行列乗算のうち、前記パリティ生成式の右側にある行列乗算から順次実行する、請求項1、3、5、7、9、12、15および18のいずれか1項に記載の符号化装置。
  22. 前記行列積計算部は、前記パリティ生成式に含まれる複数回の行列乗算のうち2個以上の行列乗算を並行して実行する、請求項1、3、5、7、9、12、15および18のいずれか1項に記載の符号化装置。
  23. 要素数kの情報ベクトルXから式(A9)で表わされるパリティ生成式にしたがって2を法とする演算を行なうことによって、要素数mのパリティベクトルYを生成する符号化プログラムであって、
    Y≡U12・・・Um-1mmm-1・・・L21AX ・・・(A9)
    ただし、(X,Y)Tは、ベクトル(X,Y)の転置を表わし、パリティ検査行列Hは、H(X,Y)T≡0を満たすm行n列の行列であり、行列Aは、パリティ検査行列Hの第1列目〜第k列目からなり、行列Bは、パリティ検査行列Hの第(k+1)列目〜第n列目からなり、n=k+mであり、
    行列Li(i=1〜m)は、前記行列BをLU分解した下三角行列Lの基本下三角行列であって、第i列目が前記下三角行列Lの第i列目と一致し、その他の列は非対角項が0、対角項が1である行列であり、
    行列Ui(i=1〜m)は、前記行列BをLU分解した上三角行列Uの基本上三角行列であって、第i行目が前記上三角行列Uの第i行目と一致し、その他の行は非対角項が0、対角項が1である行列であり、
    前記符号化プログラムは、コンピュータを、
    前記パリティ生成式に含まれる複数個の行列を表わすデータを記憶する行列記憶部と、
    前記パリティ生成式に含まれる複数回の行列乗算の中間結果を表わすデータを記憶する中間結果記憶部と、
    前記パリティベクトルYを算出するために、前記パリティ生成式に含まれる複数回の行列乗算を実行する行列積計算部として機能させ、
    前記行列積計算部は、前記情報ベクトルX、前記行列記憶部内の行列を表わすデータ、または前記中間結果記憶部内の中間結果を表わすデータを用いて、前記パリティ生成式に含まれる各行列乗算を実行して、前記パリティ生成式に含まれる前記複数回の行列乗算が終了するまでの間は、該計算結果を表わすデータを中間結果を表わすデータとして前記中間結果記憶部内に記憶させ、前記パリティ生成式に含まれる前記複数回の行列乗算が終了したら、前記パリティ生成式に含まれる前記複数回の行列乗算の終了後に得られるベクトルをパリティベクトルYとして出力する、符号化プログラム。
  24. 前記符号化プログラムは、前記パリティベクトルYを生成する前に、前記パリティ生成式に含まれる行列を生成する符号化プログラムであって、
    前記中間結果記憶部は、さらに、前記パリティ生成式に含まれる行列を生成する処理の中間結果を表わすデータを記憶し、
    前記符号化プログラムは、前記コンピュータを、さらに、
    前記パリティ検査行列Hを前記行列Aと前記行列Bに分解して、前記行列Aを表わすデータを前記行列記憶部に記憶させる検査行列分解部と、
    前記行列Bを前記下三角行列Lと前記上三角行列Uの積にLU分解して、前記下三角行列Lを表わすデータおよび前記上三角行列Uを表わすデータを前記中間結果記憶部に記憶させるLU分解部と、
    前記中間結果記憶部から前記上三角行列Uおよび前記下三角行列Lを表わすデータを読み出して、前記上三角行列Uをm個の前記基本上三角行列Ui(i=1〜m)の積に分解し、前記下三角行列Lをm個の前記基本下三角行列Li(i=1〜m)の積に分解し、前記分解された行列Ui(i=1〜m)および行列Li(i=1〜m)を表わすデータを前記行列記憶部に記憶させる基本行列分解部として機能させる、請求項23記載の符号化プログラム。
JP2007096691A 2007-04-02 2007-04-02 符号化装置および符号化プログラム Expired - Fee Related JP4821684B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007096691A JP4821684B2 (ja) 2007-04-02 2007-04-02 符号化装置および符号化プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007096691A JP4821684B2 (ja) 2007-04-02 2007-04-02 符号化装置および符号化プログラム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2011192750A Division JP2011244500A (ja) 2011-09-05 2011-09-05 符号化装置および符号化プログラム

Publications (2)

Publication Number Publication Date
JP2008258774A true JP2008258774A (ja) 2008-10-23
JP4821684B2 JP4821684B2 (ja) 2011-11-24

Family

ID=39981936

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007096691A Expired - Fee Related JP4821684B2 (ja) 2007-04-02 2007-04-02 符号化装置および符号化プログラム

Country Status (1)

Country Link
JP (1) JP4821684B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014021558A1 (ko) * 2012-07-31 2014-02-06 Choi Sujeong 저밀도 역 코드를 이용한 부호화/복호화 방법 및 장치
WO2014021559A1 (ko) * 2012-07-31 2014-02-06 Choi Sujeong 저밀도 역 코드를 이용한 부호화/복호화 방법 및 장치
KR101425506B1 (ko) 2012-09-22 2014-08-05 최수정 보완적인 저밀도 역 코드를 이용한 부호화/복호화 방법 및 장치
CN114342266A (zh) * 2019-06-26 2022-04-12 波拉兰哈伯雷斯姆技术公司 用生成矩阵的三角分解进行纠错编码的方法和装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006507731A (ja) * 2002-11-21 2006-03-02 韓國電子通信研究院 低密度パリティ検査符号を用いる符号化器と、その符号化方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006507731A (ja) * 2002-11-21 2006-03-02 韓國電子通信研究院 低密度パリティ検査符号を用いる符号化器と、その符号化方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014021558A1 (ko) * 2012-07-31 2014-02-06 Choi Sujeong 저밀도 역 코드를 이용한 부호화/복호화 방법 및 장치
WO2014021559A1 (ko) * 2012-07-31 2014-02-06 Choi Sujeong 저밀도 역 코드를 이용한 부호화/복호화 방법 및 장치
KR101425506B1 (ko) 2012-09-22 2014-08-05 최수정 보완적인 저밀도 역 코드를 이용한 부호화/복호화 방법 및 장치
CN114342266A (zh) * 2019-06-26 2022-04-12 波拉兰哈伯雷斯姆技术公司 用生成矩阵的三角分解进行纠错编码的方法和装置
CN114342266B (zh) * 2019-06-26 2022-12-20 波拉兰哈伯雷斯姆技术公司 用生成矩阵的三角分解进行纠错编码的方法和装置

Also Published As

Publication number Publication date
JP4821684B2 (ja) 2011-11-24

Similar Documents

Publication Publication Date Title
CN107820096B (zh) 图像处理装置及方法、图像处理系统及训练方法
KR100808664B1 (ko) 패리티 검사행렬 저장 방법 및 이를 이용한 블록 저밀도패리티 검사 부호화 방법 및 장치
Yarlagadda et al. Hadamard matrix analysis and synthesis: with applications to communications and signal/image processing
JP6242074B2 (ja) 信号データの圧縮および圧縮解除のための方法および装置(信号データの圧縮および圧縮解除)
US20200097802A1 (en) Execution method, execution device, learning method, learning device, and recording medium for deep neural network
JP4821684B2 (ja) 符号化装置および符号化プログラム
JP5700041B2 (ja) 符号化装置、誤り訂正符号構成方法およびそのプログラム
JP5774237B2 (ja) 誤り訂正符号化方法および誤り訂正符号化装置
Stapledon Additive number theory and inequalities in Ehrhart theory
CN109451308A (zh) 视频压缩处理方法及装置、电子设备及存储介质
US10049683B2 (en) Audio encoder and decoder
WO2012106416A1 (en) Method and apparatus for compressive sensing of sparse signals with reduced compression complexity
Anselmi Background field method, Batalin-Vilkovisky formalism and parametric completeness of renormalization
Lai et al. A construction of quantum stabilizer codes based on syndrome assignment by classical parity-check matrices
Kim et al. A quantization of moduli spaces of 3-dimensional gravity
Besnard Extensions of the noncommutative Standard Model and the weak order one condition
JP2011244500A (ja) 符号化装置および符号化プログラム
Horvathy et al. Supersymmetry of the planar Dirac–Deser–Jackiw–Templeton system and of its nonrelativistic limit
Chang et al. Quantum: the q= 1 limit of Galois field quantum mechanics, projective geometry and the field with one element
La Guardia Nonbinary convolutional codes derived from group character codes
Muthiah et al. The equations defining affine Grassmannians in type A and a conjecture of Kreiman, Lakshmibai, Magyar, and Weyman
Ben David et al. Isotropy in group cohomology
WO2021209469A1 (en) Improved concept for a representation of neural network parameters
US20240039698A1 (en) Encryption processing device and encryption processing method
JP7504533B2 (ja) ビデオ符号化および復号化の方法、装置およびコンピュータプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091225

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110218

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 4821684

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20140916

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees