(57)【特許請求の範囲】
【請求項１】
低密度パリティ検査符号の復号処理を検査行列に基づいて行う復号装置であって、
前記検査行列の列又は行のいずれか一方の長さをＮとし、
前記Ｎに対して互いに素である数値をＡとしたときに、
前記検査行列の各行又は各列には、以下の条件（１）〜（４）を満たす数列に含まれる各数に対応した列位置又は行位置に非零要素が配置されていることを特徴とする復号装置。
（１）前記数列は、行又は列ごとに異なるものである。
（２）前記数列に含まれる数は、１〜Ｎの自然数である。
（３）前記数列は公差がＡである等差数列である（ただし、当該数列に含まれる任意の数ｙＡと当該数ｙＡに隣り合う数ｙＢとの差がＡでない場合があっても、ｙＡと（ｙＢ＋Ｎ）との差がＡであれば、ｙＡとｙＢの差はＡであるとみなす）。
（４）同一の公差Ａを持つ複数の等差数列において、１〜Ｎの自然数それぞれの出現回数は、１回以内である。
【請求項２】
低密度パリティ検査符号の復号処理を検査行列に基づいて行う復号装置であって、
前記検査行列の列又は行のいずれか一方の長さをＮとし、
前記Ｎに対して互いに素である数値をＡとしたときに、
前記検査行列に含まれるＰ個（Ｐは２以上の自然数）の行又はＰ個の列には、以下の条件（５）〜（６）を満たすＰ個の数列に含まれる各数に対応した列位置又は行位置に非零要素が配置されていることを特徴とする復号装置。
（５）Ｐ個の数列は、以下の条件（７）〜（１０）を満たす連結数列をＰ分割したものである。
（６）Ｐ個の数列は、前記検査行列に含まれるＰ個の行又はＰ個の列に、それぞれ割り当てられている。
（７）前記連結数列は、Ｐ個の行又はＰ個の列に含まれる非零要素の総数に対応した個数の数を有する。
（８）前記連結数列に含まれる数は、１〜Ｎの自然数である。
（９）前記連結数列において、１〜Ｎの自然数それぞれの出現回数は、１回以内である。
（１０）前記連結数列は、公差がＡである等差数列である（ただし、当該連結数列に含まれる任意の数ｙＡと当該数ｙＡに隣り合う数ｙＢとの差がＡでない場合があっても、ｙＡと（ｙＢ＋Ｎ）との差がＡであれば、ｙＡとｙＢの差はＡであるとみなす）。
【請求項３】
前記検査行列に含まれるＰ個の行又はＰ個の列は、前記検査行列における行又は列の並び順でみて、連続するＰ個の行又は連続するＰ個の列であり、
前記条件（６）は、下記の通りである請求項２記載の復号装置。
（６）Ｐ個の数列は、前記連結数列におけるＰ個の前記数列の並び順と、連続するＰ個の行又は連続するＰ個の列の並び順と、が一致するように、前記検査行列に含まれるＰ個の行又は列に、それぞれ割り当てられている。
【請求項４】
前記検査行列は、同一の公差を持つ複数の前記等差数列からなる数列群を、複数有するように構成され、
それぞれの数列群の公差は、他の数列群とは公差が異なっているとともに、前記Ｎに対して互いに素である請求項１〜３のいずれか１項に記載の復号装置。
【請求項５】
前記検査行列は、当該検査行列の列重みに対応した数の前記数列群が存在するように構成されている請求項４記載の復号装置。
【請求項６】
前記検査行列は、当該検査行列の行重みに対応した数の前記数列群が存在するように構成されている請求項４記載の復号装置。
【請求項７】
低密度パリティ検査符号の検査行列の列又は行のいずれか一方の長さＮと、前記Ｎに対して互いに素である数値Ａと、を用いて、低密度パリティ検査符号の検査行列を生成する方法であって、
検査行列に含まれるＰ個の行又は列それぞれが有する非零要素の位置を算出する位置算出ステップと、
前記位置算出ステップによって算出された位置に、非零要素を配置する配置ステップと、を含み、
前記位置算出ステップでは、変数ｘを、初期値ｘ１から（ｘ１＋（Ｎ−１））まで増加させつつ、（Ａ×ｘ）をＮで割ったときの剰余を求める演算を行って、Ｎ個の演算結果を取得し、
前記配置ステップでは、Ｎ個の演算結果からなる数列を、ｗ個（ｗは検査行列の行重み又は列重み）の数からなるＰ個の部分数列に分割し、Ｐ個の部分数列に含まれる数を非零要素の列位置又は行位置として、対応するＰ個の行又は列に非零要素を配置する、
ことを特徴とする検査行列生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、低密度パリティ検査符号の復号装置及びその検査行列生成方法に関するものである。
【背景技術】
【０００２】
近年、誤り訂正技術の一つとして、低密度パリティ検査（ＬＤＰＣ：Low-Density Parity-Check）符号と、その復号法であるsum−product復号法とが注目されている（非特許文献１及び特許文献１参照）。
【０００３】
ＬＤＰＣ符号は、非常に疎な検査行列により定義される線形符号であり、Ｇａｌｌａｇｅｒによって発明されたものである。このＬＤＰＣ符号では、白色ガウス通信路のシャノン（Shannon）限界まで、０．００４ｄＢという復号特性が得られることが知られている。また、sum-product復号法は、並列処理による復号処理を実行するため、符号長を長くすることができるとともに処理能力を向上させることができる。
【０００４】
ＬＤＰＣ符号においては、より良い訂正能力を得るには、検査行列として適切なものを定義する必要がある。ここで、Ｇａｌｌａｇｅｒによって提案された検査行列の生成法は、次の通りである。
まず、生成対象の検査行列Ｈは、列重み（列のハミング重み；各列の１（非零要素）の個数）がｗｃ、行重み（行のハミング重み；各行の１（非零要素）の個数）がｗｒであるものとする。この場合、検査行列Ｈを、図１７に示すように、検査行列Ｈの行方向にｗｃ＝３個のブロックに分ける。
【０００５】
また、ここでは行重みｗｒ＝６とし、第１ブロック（Ｈ１）において、第１行目の第１列目〜第６列目に「１」（非零要素）が配置され、第２行目の第７〜第１２列目に「１」（非零要素）が配置され、以下同様に、第１ブロック内の以下の行についても「１」（非零要素）が配置される。ここでは、第１ブロック（Ｈ１）における各列の列重みが１となるように配置される。
【０００６】
そして、第１ブロック内の任意の列を、乱数を用いて再配置（入れ替え）し、これを適当な回数繰り返したものを第１ブロックとする。第１ブロックの各列の重みは１であるので、列を入れ替えても列の重みは１のままである。
第２ブロック以降についても、第１ブロックと同様に乱数（他のブロックとは別の乱数）を用いて列の入れ替え処理を行い、非零要素の配置が各ブロックで異なるようにする。
以上の処理をｗｃ＝３個のブロックについて行えば、列重みがｗｃのパリティ検査行列が生成される。
【０００７】
ＬＤＰＣ符号では、上記のように乱数を用いて検査行列を決定するのが一般的である。つまり、乱数を用いることで検査行列における「１」（非零要素）の配置に規則性が無くなり訂正能力を確保することができる。
【０００８】
【非特許文献１】和田山正、「低密度パリティ検査符号とその復号法について」、信学技法、ＭＲ２００１−８３、２００１年１２月
【特許文献１】特開２００５−２６９５３５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
乱数をベースとして生成された検査行列の場合、検査行列を示す情報が、膨大又は複雑になるという問題がある。
つまり、検査行列における非零要素の配置には規則性がないため、全ての非零要素の位置を特定しなければ、検査行列を表現することができない。
一方、何らかのルールに基づく検査行列であれば、比較的少ない情報で表現することができるものの、規則的に非零要素が配置されるため、十分な訂正能力が得られないことが多い。もっとも、近年の傾向として、あるルールに従って生成された行列でも訂正能力を確保できるものが発見されている。
【００１０】
そこで、本発明は、乱数をベースとせずにルールに基づいて表現することができる新たな検査行列を有する復号装置、及びその検査行列の生成方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明に係る復号装置は、低密度パリティ検査符号の復号処理を検査行列に基づいて行う復号装置であって、前記検査行列の列又は行のいずれか一方の長さをＮとし、前記Ｎに対して互いに素である数値をＡとしたときに、前記検査行列の各行又は各列には、以下の条件（１）〜（４）を満たす数列に含まれる各数に対応した列位置又は行位置に非零要素が配置されていることを特徴とする復号装置である。
（１）前記数列は、行又は列ごとに異なるものである。
（２）前記数列に含まれる数は、１〜Ｎの自然数である。
（３）前記数列は公差がＡである等差数列である（ただし、当該数列に含まれる任意の数ｙＡと当該数ｙＡに隣り合う数ｙＢとの差がＡでない場合があっても、ｙＡと（ｙＢ＋Ｎ）との差がＡであれば、ｙＡとｙＢの差はＡであるとみなす）。
（４）同一の公差Ａを持つ複数の等差数列において、１〜Ｎの自然数それぞれの出現回数は、１回以内である。
【００１２】
上記検査行列は、上記条件に従っているものの、乱数で生成したものと同様な良好な訂正能力を有することを、本発明者は発見し、これに基づき本発明を完成したものである。
なお、検査行列の各行又は各列に存在する非零要素の位置を示す「数」からなる数列には、１つの行又は列について、複数パターンをとり得る。例えば、上記（１）〜（４）の条件を満たす検査行列であっても、当該検査行列のある一つの行に存在する非零要素の位置を示す「数」を小さい順に並べた数列は、上記（３）の条件（公差がＡである等差数列）を満たすとは限らない。
しかし、上記本発明は、「公差がＡである等差数列に含まれる各数に対応した列位置又は行位置に非零要素が配置されている」ことを特徴とするものであり、検査行列における非零要素の並びを基準に考えた数列が、条件（３）を満たすか否かは考慮しなくともよい。つまり、検査行列の各行又は各列が、条件（３）を満たす数列を持ち得るものであれば足りる。
【００１３】
他の観点からみた本発明は、低密度パリティ検査符号の復号処理を検査行列に基づいて行う復号装置であって、前記検査行列の列又は行のいずれか一方の長さをＮとし、前記Ｎに対して互いに素である数値をＡとしたときに、前記検査行列に含まれるＰ個（Ｐは２以上の自然数）の行又はＰ個の列には、以下の条件（５）〜（６）を満たすＰ個の数列に含まれる各数に対応した列位置又は行位置に非零要素が配置されていることを特徴とする復号装置である。
（５）Ｐ個の数列は、以下の条件（７）〜（１０）を満たす連結数列をＰ分割したものである。
（６）Ｐ個の数列は、前記検査行列に含まれるＰ個の行又はＰ個の列に、それぞれ割り当てられている。
（７）前記連結数列は、Ｐ個の行又はＰ個の列に含まれる非零要素の総数に対応した個数の数を有する。
（８）前記連結数列に含まれる数は、１〜Ｎの自然数である。
（９）前記連結数列において、１〜Ｎの自然数それぞれの出現回数は、１回以内である。
（１０）前記連結数列は、公差がＡである等差数列である（ただし、当該連結数列に含まれる任意の数ｙＡと当該数ｙＡに隣り合う数ｙＢとの差がＡでない場合があっても、ｙＡと（ｙＢ＋Ｎ）との差がＡであれば、ｙＡとｙＢの差はＡであるとみなす）。
【００１４】
前記検査行列において、前記検査行列に含まれるＰ個の行又はＰ個の列は、前記検査行列における行又は列の並び順でみて、連続するＰ個の行又は連続するＰ個の列であり、
前記条件（６）は、下記の通りであるのが好ましい。
（６）Ｐ個の数列は、前記連結数列におけるＰ個の前記数列の並び順と、連続するＰ個の行又は連続するＰ個の列の並び順と、が一致するように、前記検査行列に含まれるＰ個の行又は列に、それぞれ割り当てられている。
検査行列が上記のように構成されている場合、非零要素の分布がより均一になり、訂正能力を向上させることができる。
【００１５】
前記検査行列は、同一の公差を持つ複数の等差数列からなる数列群を、複数有するように構成され、
それぞれの数列群の公差は、他の数列群とは公差が異なっているとともに、前記Ｎに対して互いに素であるのが好ましい。
【００１６】
前記検査行列は、当該検査行列の列重みに対応した数の前記数列群が存在するように構成されているのが好ましい。
また、前記検査行列は、当該検査行列の行重みに対応した数の前記数列群が存在するように構成されていてもよい。
【００１７】
他の観点からみた本発明は、低密度パリティ検査符号の検査行列の列又は行のいずれか一方の長さＮと、前記Ｎに対して互いに素である数値Ａと、を用いて、低密度パリティ検査符号の検査行列を生成する方法であって、検査行列に含まれるＰ個の行又は列それぞれが有する非零要素の位置を算出する位置算出ステップと、前記位置算出ステップによって算出された位置に、非零要素を配置する配置ステップと、を含み、前記位置算出ステップでは、変数ｘを、初期値ｘ1から（ｘ1＋（Ｎ−１））まで増加させつつ、（Ａ×ｘ）をＮで割ったときの剰余を求める演算を行って、Ｎ個の演算結果を取得し、前記配置ステップでは、Ｎ個の演算結果からなる数列を、ｗ個（ｗは検査行列の行重み又は列重み）の数からなるＰ個の部分数列に分割し、Ｐ個の部分数列に含まれる数を非零要素の列位置又は行位置として、対応するＰ個の行又は列に非零要素を配置する、ことを特徴とする検査行列生成方法である。
【００１８】
この生成方法によれば、前記条件（１）〜（４）を満足する検査行列を容易に生成することができる。
【発明の効果】
【００１９】
本発明によれば、検査行列は、上記条件（１）〜（４）に従った規則的なものであるものの、良好な訂正能力が得られる。しかも、検査行列を少ない情報で表現することが可能である。
【発明を実施するための最良の形態】
【００２０】
以下、本発明の実施形態を、図面を参照して説明する。
図１は、本発明の実施形態に係る復号装置（復号器）５を有する通信システムの構成の一例を示す図である。図１において、通信システムの送信側通信装置は、送信情報に誤り訂正用の冗長ビットを付加して送信符号を生成する符号化器１と、この符号化器１からの（Ｋ＋Ｍ）ビットの符号を所定の方式に従って変調して通信路３へ出力する変調器２とを含む。
【００２１】
符号化器１は、Ｋビットの情報に対し、パリティ計算用の冗長ビットＭビットを付加して、（Ｋ＋Ｍ）ビットのＬＤＰＣ符号（低密度パリティ検査符号）を生成する。
【００２２】
変調器２は、この通信路３の構成に応じて、振幅変調、位相変調、コード変調、周波数変調または直交周波数分割多重変調などの変調を行なう。たとえば、通信路３が、光ファイバの場合、変調器２においては、レーザダイオードの輝度を送信情報ビット値に応じて変更させることにより、光の強度変調（一種の振幅変調）を行なっている。たとえば、送信データビットが"０"の場合には、"＋１"に変換して、レーザダイオードの発光強度を強くして送信し、また送信データビットが"１"の場合、"−１"に変換して、レーザダイオードの発光強度を弱くして送信する。
【００２３】
通信システムの受信側通信装置は、通信路３を介して送信された変調信号に復調処理を施して、（Ｋ＋Ｍ）ビットのデジタル符号を復調する復調器４と、この復調器４からの（Ｋ＋Ｍ）ビットの符号にパリティ検査行列に基づく復号処理を施して元のＫビットの情報を再生する復号器（復号装置）５が設けられる。
【００２４】
復調器４は、この通信路３における送信形態に応じて復調処理を行なう。たとえば、振幅変調、位相変調、コード変調、周波数変調および直交周波数分割多重変調等の場合、復調器４において、振幅復調、位相復調、コード復調、および周波数復調等の処理が行なわれる。
【００２５】
図２は、通信路３が光ファイバの場合の変調器２および復調器４の出力データの対応関係を一覧にして示す図である。図２において、上述のように、通信路３が光ファイバの場合、変調器２においては、送信データが"０"のときには、"１"に変換され、送信用のレーザダイオード（発光ダイオード）の発光強度が強くなり、また送信データビットが"１"のときには、"−１"に変換され、レーザダイオードの発光強度を弱くして送信する。
【００２６】
この通信路３における伝送損失等により、復調器４に伝達される光強度は、最も強い強度から最も弱い強度までの間のアナログ的な強度分布を有する。復調器４においては、この入力された光信号に量子化処理（アナログ／デジタル変換）を行なって、この受光レベルを検出する。
図２においては、８段階に受光レベルが量子化された場合の受信信号強度を示す。すなわち、受光レベルがデータ"７"のときには、発光強度がかなり強く、受光レベルが"０"のときには、光強度がかなり弱い状態である。各受光レベルは、符号付きデータに対応づけられ、復調器４から出力される。この復調器４の出力は、受光レベルが"７"のときにはデータ"３"が出力され、受光レベルが"０"のときには、データ"−４"が出力される。したがってこの復調器４からは、１ビットの受信信号に対し、多値量子化された信号が出力される。
【００２７】
復号化器５は、この復調器４から与えられた（Ｋ＋Ｍ）ビットの受信情報（各ビットは、多値情報を含む）を入力し、sum-product復号法又はmin-sum復号法に従って低密度パリティ検査行列を適用して、元のＫビットの情報を復元する。
【００２８】
なお、この図２においては、復調器４において、８レベルに量子化されたビットが生成されている。しかしながら、一般に、この復調器４においては、Ｌ値（Ｌ≧２）に量子化されたビットを用いて復号処理を行なうことができる。
【００２９】
また、図２においては、比較器を用いて、あるしきい値を使って受信信号のレベルを判定し、２値信号を生成してもよい。
【００３０】
図３は、復号器５の構成を概略的に示す図である。この図３においては、復調器４および通信路３も併せて示す。復調器４は、通信路３から与えられた信号を復調する復調回路４ａと、この復調回路４ａにより生成されたアナログ復調信号をデジタル信号に変換するアナログ／デジタル変換回路４ｂを含む。
このアナログ／デジタル変換回路４ｂの出力データＸｎが復号器５へ与えられる。この復号器５へ与えられるデータＸｎは、Ｌ値（Ｌ≧２）のデータである。以下、データＸｎは、多値量子化データであるため、シンボルと称す。復号化器５は、この入力シンボルＸｎ系列に対しsum-product復号法又はmin-sum復号法などの復号法に従って復号処理を行なって符号ビットＣｎを生成する。
【００３１】
復号器５は、復調器４からの復調シンボルＸｎの対数尤度比λｎを生成する対数尤度比算出部６と、対数尤度比λｎ及びパリティ検査行列に基づく繰り返し演算によって復号演算処理を行う外部値対数比算出部（復号処理部）７と、外部値対数比算出部７によって算出された外部値対数比αｍｎ及び対数尤度比λｎに基づいて復号語を生成する復号語生成部１９９と、を含む。
【００３２】
対数尤度比算出部６は、この受信信号のノイズ情報と独立に、対数尤度比λｎを生成する。通常、ノイズ情報を考慮した場合、この対数尤度比λｎは、Ｘｎ／（２・σ・σ）で与えられる。ここで、σは、ノイズの分散を示す。
しかしながら、本実施の形態においては、この対数尤度比算出部６は、バッファ回路または定数乗算回路で形成され、対数尤度比λｎは、Ｘｎ・ｆで与えられる。ここで、ｆは非ゼロの正の数である。また、min-sum復号方法においては、検査行列に基づく復号処理（行処理）において、最小値を利用して演算を行なうため、信号処理において線形性が維持される。このため、ノイズ情報に従って出力データを正規化するなどの処理は不要である。この場合ノイズ情報を利用せずに、対数尤度比を算出することにより、回路構成が簡略化され、また計算処理も簡略化される。
【００３３】
ここでの外部値対数比算出部７は、min-sum復号方法によって復号処理を行うものとする。なお、復号法は、sum-product復号法でもよい。
外部値対数比算出部７は、次式（１）及び（２）に従って演算処理を行い、パリティ検査行列の行の各要素（非零要素：１）についての処理（行処理）、及び列についての各要素（非零要素：１）についての処理（列処理）を繰り返し実行する。
【数１】
0004618293.tif 000002
【００３４】
ここで、上式（１）および（２）それぞれにおいて、ｎ’∈Ａ（ｍ）＼ｎおよびｍ’∈Ｂ（ｎ）＼ｍは、自身を除く要素を意味する。
外部値対数比αｍｎについては、ｎ’≠ｎであり、事前値対数比βｍｎについては、ｍ’≠ｍである。また、αおよびβの行列内の位置を示す添え字"ｍｎ"は、通常は下付文字で示されるが、本明細書においては、読みやすさのために、「横並びの文字」で示す。
【００３５】
また、関数ｓｉｇｎ（ｘ）は、次式（３）で定義される。
【数２】
0004618293.tif 000003
【００３６】
また、集合Ａ（ｍ）およびＢ（ｎ）は、２元Ｍ・Ｎ行列Ｈ＝［Ｈｍｎ］を復号対象のＬＤＰＣ符号の検査行列とした場合、集合［１，Ｎ］＝｛１，２，…，Ｎ｝の部分集合である。
Ａ（ｍ）＝｛ｎ：Ｈｍｎ＝１｝ …（４）
Ｂ（ｎ）＝｛ｍ：Ｈｍｎ＝１｝ …（５）
【００３７】
すなわち、上記部分集合Ａ（ｍ）は、検査行列Ｈの第ｍ行目において１（非零要素）が立っている列インデックスの集合を意味し、部分集合Ｂ（ｎ）は、検査行列Ｈの第ｎ列目において１（非零要素）が立っている行インデックスの集合を示す。
【００３８】
具体的に、今、図４に示す検査行列Ｈを考える。この図４に示す検査行列Ｈにおいては、第１行の第１列から第３列に"１"が立ち、また第２行の第３列および第４列に"１"が立ち、また第３行の第４列から第６列に、"１"が立つ。したがって、この場合、部分集合Ａ（ｍ）は以下のようになる。
【００３９】
Ａ（１）＝｛１，２，３｝
Ａ（２）＝｛３，４｝
Ａ（３）＝｛４，５，６｝
【００４０】
同様に、部分集合Ｂ（ｎ）については、以下のようになる。
Ｂ（１）＝Ｂ（２）＝｛１｝
Ｂ（３）＝｛１，２｝
Ｂ（４）＝｛２，３｝
Ｂ（５）＝Ｂ（６）＝｛３｝
【００４１】
この検査行列Ｈにおいて、タナー（Tanner）グラフを用いた場合、列に対応する変数ノードと行に対応するチェックノードの接続関係が、この"１"により示される。これを、本明細書においては「"１"が立つ」と称している。すなわち、図５に示すように、変数ノード１，２，３は、チェックノードＸ（第１行）に接続され、変数ノード３，４が、チェックノードＹ（第２行）に接続される。変数ノード４，５，６が、チェックノードＺ（第３行）に接続される。この変数ノードが検査行列Ｈの列に対応し、チェックノードＸ，ＹおよびＺが、この検査行列Ｈの各行に対応する。従って、図４に示す検査行列は、情報ビットが３ビット、冗長ビットが３ビットの合計６ビットの符号長の符号に対して適用される。
【００４２】
ＬＤＰＣの検査行列Ｈでは、"１"の数は少なく、低密度の検査行列であり、これにより、計算量を低減できる。
【００４３】
この変数ノードとチェックノードの間で各条件確率Ｐ（Ｘｉ｜Ｙｉ）を伝播させ、ＭＡＰアルゴリズムに従って、もっともらしい符号を各変数ノードについて決定する。ここで、条件付確率Ｐ（Ｘｉ｜Ｙｉ）は、Ｙｉの条件下でＸｉとなる確率を示す。
【００４４】
再び、図３を参照して、外部値対数比αｍｎ及び対数尤度比λｎに基づいて復号語を生成する復号語生成部１９９は、一次推定語生成部１８０と、復号語決定部１９０とを含む。
【００４５】
図６は、一次推定語生成部１８０の構成を表す図である。
図６を参照して、一次推定語生成部１８０は、Ｑｎ算出部１４０と、Ｃｎ算出部１４１とを含む。
【００４６】
Ｑｎ算出部１４０は、対数尤度比算出部６からの対数尤度比λと、外部対数比算出部７からの外部値対数比αｍｎとを用いて、次式（６）に従って、推定受信語（Ｑ1，Ｑ2，・・・，ＱN）を算出する。
【数３】
0004618293.tif 000004
【００４７】
Ｃｎ算出部１４１は、次式（７）に従って、一次推定語（Ｃ1，Ｃ2，・・・，ＣN）を算出する。ここで、（Ｃ1，Ｃ2，・・・，ＣN）の標記は、Ｎビットの一次推定語の第１ビット（ＬＳＢ：Least Significant Bit）がＣ1であり、第２ビットがＣ2であり、第Ｎビット（ＭＳＮ）がＣNであることを表す。
【００４８】
【数４】
0004618293.tif 000005
【００４９】
再び、図３を参照して、復号語決定部１９０は、一次推定語生成部１８０から一次推定語（Ｃ1，Ｃ2，・・・，ＣN）が符号語を構成しているかどうかを検査する。復号語決定部１９０は、次式（８）が成立する場合、つまり、シンドロームが“０”となる場合には、外部値対数比算出部７の繰り返し演算を終了させて、一次推定語（Ｃ1，Ｃ2，・・・，ＣN）のうちのＫビットの情報ビット部分、すなわち、（Ｃ1，Ｃ2，・・・，ＣK）を復号語として復号器５の外部に出力する。また、復号語決定部１９０は、ループの回数、つまり外部値対数比算出部７の演算の繰り返し回数が所定値を超えたときにも、外部値対数比算出部７の繰り返し演算を終了させて、一次推定語（Ｃ1，Ｃ2，・・・，ＣN）のうちのＫビットの情報ビット部分、すなわち、（Ｃ1，Ｃ2，・・・，ＣK）を復号語として復号器５の外部に出力する。
（Ｃ1，Ｃ2，・・・，ＣN）・Ｈt＝０（ただし、Ｈtは、Ｈの転置を表す・・・（８）
【００５０】
［検査行列について］
さて、図７は、本実施形態の復号器５において用いられるＬＤＰＣ符号の検査行列Ｈ96の具体例を示している。図７の検査行列Ｈ96は、符号長Ｎ＝９６、行重みｗｒ＝６、列重みｗｃ＝３の正則な検査行列（行列サイズ＝４８×９６）を示している。図７においては、検査行列の「１」（非零要素）のあるところは、点で示されている。図７の検査行列Ｈ96において、非零要素を示す点は２８８個ある。
【００５１】
また、比較例として、図８に、図１７に示すＧａｌｌａｇｅｒの方法（乱数ベースの方法）で生成した同サイズの正則検査行列を示した。なお、図８の検査行列は、行重みｗｒ及び列重みｗｃも、図７のものと同様である。
図８の検査行列は、規則性がないため、この検査行列を表現するための情報としては、少なくとも２０１６ビットが必要である。つまり、図８の検査行列を表現するためには、各行における点の位置（列番号；列インデックス）を列挙しておき、１行当たりの点数が６個であることを利用して、各行内で列挙された点の位置を記録すれば各行を再現することができる。したがって、この方式では、それぞれの点が、１〜９６の数値をとり、１点あたり７ビット必要であるため、２８８点で、７×２８８×＝２０１６が必要である。
【００５２】
一方、本実施形態に係る図７の検査行列Ｈ96では、符号長Ｎに対して互いに素である３つの数値Ａ１，Ａ２，Ａ３で表現することができる。ここで、数値Ａ１，Ａ２，Ａ３は、符号長Ｎよりも小さい値をとるものとすると、一つの数値は７ビットで表現できるため、７×３＝２１ビットで足り、Ｎを加えても、７×４＝２８ビットで足りることになる。なお、本実施形態において、数値Ａ１〜Ａ３は、列重みｗｃに対応した個数が用意される。
なお、Ｎに対して互いに素である複数の数値Ａ１，Ａ２，Ａ３を区別せずに総称する場合は、単に「数値Ａ」という。
【００５３】
図７の検査行列Ｈ96は列重みｗｃが３であることに対応して、検査行列Ｈ96を行方向に３つに分割した部分行列（ブロック）Ｈ１〜Ｈ３としてみた場合に、図９に示すように、第１ブロックＨ１は数値Ａ１によって、第２ブロックＨ２は数値Ａ２によって、第３ブロックは数値Ａ３によって生成される。つまり、それぞれのブロックは、数値Ａが与えられることで構成できる。また、Ｎに対して互いに素である数値ＡをＡ１〜Ａ３のように異ならせることで、非零要素の配置が異なる複数のブロックＨ１〜Ｈ３を生成できる。
【００５４】
図７の検査行列Ｈ96において、各ブロックＨ１〜Ｈ３は、列重みが１であり、行重みが６の部分行列となっており、これらのブロックＨ１〜Ｈ３を結合することで、図７の検査行列Ｈ96が得られる。
図７の各ブロックＨ１〜Ｈ３では、斜め方向を向く点（非零要素）の列が、略一定間隔をおいて略規則正しく並んでいる。点の列の傾きや点の列の間隔はブロックＨ１〜Ｈ３ごとに異なる。
【００５５】
図７の各ブロックＨ１〜Ｈ３では、一見すると（マクロ的にみると）、斜め方向を向く点の列が、直線的に並んでいるようにみえる。しかし、図７の点の列は、厳密にみると（ミクロ的にみると）、直線的に点（非零要素）が並んでいるのではなく、やや蛇行しながら並んでいる。前述のように各ブロックＨ１〜Ｈ３の列重みは、それぞれ１であり、各ブロックＨ１〜Ｈ３において一つの列位置には一つの点（非零要素）しか存在しないようにするため、点の列がやや蛇行したり、点の列を構成する点の間隔が異なっていたりする。
【００５６】
図７の検査行列Ｈ96では、点の列が略等間隔であり、しかも、点（非零要素）の分布が検査行列全体で一様な疎行列となっているため、訂正能力に悪影響を与える短いサイクルが発生しにくく、良好な訂正能力が得られる。
【００５７】
［本実施形態に係る検査行列の生成規則］
本実施形態の復号器５は、上記のような特性を持つ検査行列Ｈ96を用いて復号を行う。この検査行列Ｈ96の第１ブロックＨ１の生成規則は、次のとおりである。なお、各ブロックＨ１〜Ｈ３に含まれる行数Ｐは、Ｐ＝行長さＭ／列重みｗｒ＝４８／３＝１６である。
【００５８】
（１）符号長（検査行列の列方向長さ）をＮとする。
（２）Ｎと互いに素である数値をＡ１とする。
（３）変数ｘが、初期値ｘ1から（ｘ1＋（Ｎ−１））になるまで下記（３−１）（３−２）の処理を繰り返す（Ｎ回の繰り返し処理）。なお、ここでは、初期値ｘ1＝１とする。
（３−１：位置算出ステップ）ｍｏｄ（Ａ１×ｘ，Ｎ）を計算し、その結果に１を加える。つまり、“ｍｏｄ（Ａ１×ｘ，Ｎ）＋１”を計算する。なお、ｍｏｄ（Ａ１×ｘ，Ｎ）は、（Ａ１×ｘ）をＮで割ったときの剰余を求める関数である。
（３−２：配置ステップ）第１ブロックＨ１中の、“ｍｏｄ（Ａ１×ｘ，Ｎ）＋１”の結果（列インデックス）が示す列位置に非零要素「１」を配置する。例えば、“ｍｏｄ（Ａ１×ｘ，Ｎ）＋１”の演算結果が「１０」であれば、指定された行の１０列目に「１」を立てる。「１」が配置される行は、第１ブロックＨ１の１行目からＰ行目まで順次切り替わる。各行には、行重みｗｒに対応した数の「１」が順次配置され、一つの行に、行重み分の数の「１」を立てたら、次の行に移って、同様に行重み分の数の「１」を立てる。
【００５９】
ここで、“ｍｏｄ（Ａ１×ｘ，Ｎ）＋１”によって算出された数は、検査行列において「１」が配置されるべき列位置（列インデックス）を示しており、“ｍｏｄ（Ａ１×ｘ，Ｎ）＋１”の値が示す列位置に「１」が立てられる。
【００６０】
Ａ１とＮとは互いに素な数であるため、ｘが１〜（Ｎ−１）までの数値をとる場合、Ａ１×ｘがＮによって割り切れることはない。つまり、ｘが１〜（Ｎ−１）までの数値をとる場合、“ｍｏｄ（Ａ１×ｘ，Ｎ）＋１”は、２〜Ｎまでの数値を唯一１回のみ発生することになる。そして、ｘ＝Ｎになると、Ａ１×ｘがＮによって割り切れ、“ｍｏｄ（Ａ１×ｘ，Ｎ）＋１”の演算結果が１となる。
【００６１】
このように、ｘが１〜Ｎまでの数値をとると、“ｍｏｄ（Ａ１×ｘ，Ｎ）＋１”は、１〜Ｎまでの数値を唯一１回のみ発生する。
つまり、Ｎ回の計算結果として、１〜Ｎまでの数値を重複させることなく、全ての値を生成でき、このため、この計算結果を基に、検査行列（の各ブロックＨ１〜Ｈ３）に非零要素「１」を配置すれば、それぞれのブロックには、全ての列に対して、それぞれ１点のみ非零要素「１」を配置することができる。
【００６２】
なお、“ｍｏｄ（Ａ１×ｘ，Ｎ）＋１”の式において、本質的な演算は、“ｍｏｄ（Ａ１×ｘ，Ｎ）”である。“＋１”は、“ｍｏｄ（Ａ１×ｘ，Ｎ）”の演算結果（０〜Ｎ−１の範囲をとる）を、検査行列の列インデックス（１〜Ｎの範囲をとる）に対応させるための変換処理である。したがって、例えば、検査行列の列インデックスの範囲を（０〜Ｎ−１）にするのであれば、“＋１”の演算は不要である。
【００６３】
また、上記生成規則では、ｘの初期値ｘ1を１としたが、例えば、その他の数値としてもよい。例えば、ｘを０〜Ｎ−１の範囲で繰り返しても良い。ｘの初期値を調整すると、“ｍｏｄ（Ａ１×ｘ，Ｎ）＋１”の計算で生成される数値がずれるが、１〜Ｎまでの数値を唯一１回のみ発生することには変わりなく、ｘの初期値を調整しても同様な性質の検査行列が得られる。
【００６４】
さて、以下では、  前記位置算出ステップ３−１及び前記配置ステップ３−２をより具体的に説明する。なお、ここでは、Ｎ＝９６，Ａ１＝２９とする。また、Ｎ＝９６とＡ１＝２９とは互いに素である。
前記位置算出ステップ３−１を初期値ｘ1から６回まで繰り返すと、下記のように｛３０，５９，８８，２１，５０，７９｝の計６個の数が求まる。
ｍｏｄ（２９×１，９６）＋１＝３０
ｍｏｄ（２９×２，９６）＋１＝５９
ｍｏｄ（２９×３，９６）＋１＝８８
ｍｏｄ（２９×４，９６）＋１＝２１
ｍｏｄ（２９×５，９６）＋１＝５０
ｍｏｄ（２９×６，９６）＋１＝７９
【００６５】
配置ステップ３−２では、“ｍｏｄ（Ａ１×ｘ，Ｎ）＋１”が求まると、順次、検査行列（の第１ブロックＨ１）中に「１」を立てていく。つまり、第１ブロックＨ１の１行目から開始し、当該１行目の３０列目、５９列目、８８列目、２１列目、５０列目、７９列目に、「１」を立てる。ここでは、行重みｗｒ＝６であるから、６回の繰り返しで、１行目に「１」を配置できたことになる。
【００６６】
１行目への「１」の配置が完了すると、次の行に「１」を配置する。つまり、７回目（ｘ＝７）〜１２回目（ｘ＝１２）の繰り返しでは、２行目について、“ｍｏｄ（Ａ１×ｘ，Ｎ）＋１”が示す列位置に「１」を立てていく。
同様に、１３回目〜１８回目の繰り返しでは、３行目に「１」を立て、以下、これを繰り返していき、第１ブロックＨ１を構成する１行目〜Ｐ行目（１６行目）までにＮ個の「１」を立てることができる。
【００６７】
上記生成規則は、数値Ａ２によって生成される第２ブロックＨ２、数値Ａ３によって生成される第３ブロックにも適用される。この場合、上記生成規則の「Ａ１」を「Ａ２」乃至「Ａ３」に置きかえれば良い。また、上記生成規則の「Ａ１」を「Ａ１」に限定しないように抽象化するには、上記生成規則の「Ａ１」を「Ａ」とすればよい。
【００６８】
したがって、検査行列Ｈ96の第２ブロックＨ２を構成する（Ｐ＋１）行目〜（２×Ｐ）行目には、変数Ａ２を用いた位置算出ステップの演算結果に基づき、Ｎ個の「１」が立てられる。また、検査行列Ｈ96の第３ブロックＨ３の（２×Ｐ＋１）行目〜（３×Ｐ）行目には、変数Ａ３を用いた位置算出ステップの演算結果に基づき、Ｎ個の「１」が立てられる。
【００６９】
以下は、検査行列Ｈ96の第１ブロックＨ１を数値Ａ１＝２９で、第２ブロックＨ２を数値Ａ２＝３１で、第３ブロックＨ３を数値Ａ３＝３７で、位置算出ステップを実行した場合の演算結果を示している。
【００７０】
第１ブロックＨ１
１行目：３０，５９，８８，２１，５０，７９
２行目：１２，４１，７０，  ３，３２，６１
３行目：９０，２３，５２，８１，１４，４３
４行目：７２，  ５  ３４，６３，９２，２５
５行目：５４，８３，１６，４５，７４，  ７
６行目：３６，６５，９４，２７，５６，８５
７行目：１８，４７，７６，  ９，３８，６７
８行目：９６，２９，５８，８７，２０，４９
９行目：７８，１１，４０，６９，  ２，３１
１０行目：６０，８９，２２，５１，８０，１３
１１行目：４２，７１，  ４，３３，６２，９１
１２行目：２４，５３，８２，１５，４４，７３
１３行目：  ６，３５，６４，９３，２６，５５
１４行目：８４，１７，４６，７５，  ８，３７
１５行目：６６，９５，２８，５７，８６，１９
１５行目：４８，７７，１０，３９，６８，  １
【００７１】
第２ブロックＨ２
１７行目：３２，６３，９４，２９，６０，９１
１８行目：２６，５７，８８，２３，５４，８５
１９行目：２０，５１，８２，１７，４８，７９
２０行目：１４，４５，７６，１１，４２，７３
２１行目：  ８，３９，７０，  ５，３６，６７
２２行目：  ２，３３，６４，９５，３０，６１
２３行目：９２，２７，５８，８９，２４，５５
２４行目：８６，２１，５２，８３，１８，４９
２５行目：８０，１５，４６，７７，１２，４３
２６行目：７４，  ９，４０，７１，  ６，３７
２７行目：６８，  ３，３４，６５，９６，３１
２８行目：６２，９３，２８，５９，９０，２５
２９行目：５６，８７，２２，５３，８４，１９
３０行目：５０，８１，１６，４７，７８，１３
３１行目：４４，７５，１０，４１，７２，  ７
３２行目：３８，６９，  ４，３５，６６，  １
【００７２】
第３ブロックＨ３
３３行目：３８，７５，１６，５３，９０，３１
３４行目：６８，  ９，４６，８３，２４，６１
３５行目：  ２，３９，７６，１７，５４，９１
３６行目：３２，６９，１０，４７，８４，２５
３７行目：６２，  ３，４０，７７，１８，５５
３８行目：９２，３３，７０，１１，４８，８５
３９行目：２６，６３，  ４，４１，７８，１９
４０行目：５６，９３，３４，７１，１２，４９
４１行目：８６，２７，６４，  ５，４２，７９
４２行目：２０，５７，９４，３５，７２，１３
４３行目：５０，８７，２８，６５，  ６，４３
４４行目：８０，２１，５８，９５，３６，７３
４５行目：１４，５１，８８，２９，６６，  ７
４６行目：４４，８１，２２，５９，９６，３７
４７行目：７４，１５，５２，８９，３０，６７
４８行目：  ８，４５，８２，２３，６０，  １
【００７３】
このようにして得られた（Ｎ×３）個の数値（列位置）に「１」（図７の点）を配置したものが、図７に示す検査行列Ｈ96である。
上記からも明かであるように、上記生成規則の配置ステップ３−２は、Ｎ個（＝９６個）
Ｎ個の演算結果からなる数列を、検査行列Ｈ96の行重ｗｒの数（＝６）からなるＰ個（＝１６個）の部分数列Ｓ1〜ＳPに分割し、Ｐ個の部分数列Ｓ1〜ＳPに含まれる数を非零要素の列位置として、対応するＰ個の行（１行目〜Ｐ行目）に非零要素を配置して各ブロックＨ１〜Ｈ３を生成するものということができる。
【００７４】
なお、算出された（Ｎ×３）個の列位置を示す数値と図７の点との対応を容易にするため、各行の数値（列位置）を、左から小さい順に並び替えたものを下記に示す。
第１ブロックＨ１
１行目：２１，３０，５０，５９，７９，８８
２行目：  ３，１２，３２，４１，６１，７０
３行目：１４，２３，４３，５２，８１，９０
４行目：  ５，２５，３４，６３，７２，９２
５行目：  ７，１６，４５，５４，７４，８３
６行目：２７，３６，５６，６５，８５，９４
７行目：  ９，１８，３８，４７，６７，７６
８行目：２０，２９，４９，５８，８７，９６
９行目：  ２，１１，３１，４０，６９，７８
１０行目：１３，２２，５１，６０，８０，８９
１１行目：  ４，３３，４２，６２，７１，９１
１２行目：１５，２４，４４，５３，７３，８２
１３行目：  ６，２６，３５，５５，６４，９３
１４行目：  ８，１７，３７，４６，７５，８４
１５行目：１９，２８，５７，６６，８６，９５
１６行目：  １，１０，３９，４８，６８，７７
【００７５】
第２ブロックＨ２
１７行目：２９，３２，６０，６３，９１，９４
１８行目：２３，２６，５４，５７，８５，８８
１９行目：１７，２０，４８，５１，７９，８２
２０行目：１１，１４，４２，４５，７３，７６
２１行目：  ５，  ８，３６，３９，６７，７０
２２行目：  ２，３０，３３，６１，６４，９５
２３行目：２４，２７，５５，５８，８９，９２
２４行目：１８，２１，４９，５２，８３，８６
２５行目：１２，１５，４３，４６，７７，８０
２６行目：  ６，  ９，３７，４０，７１，７４
２７行目：  ３，３１，３４，６５，６８，９６
２８行目：２５，２８，５９，６２，９０，９３
２９行目：１９，２２，５３，５６，８４，８７
３０行目：１３，１６，４７，５０，７８，８１
３１行目：  ７，１０，４１，４４，７２，７５
３２行目：  １，４，３５，３８，６６，６９
【００７６】
第３ブロックＨ３
３３行目：１６，３１，３８，５３，７５，９０
３４行目：  ９，２４，４６，６１，６８，８３
３５行目：  ２，１７，３９，５４，７６，９１
３６行目：１０，２５，３２，４７，６９，８４
３７行目：  ３，１８，４０，５５，６２，７７
３８行目：１１，３３，４８，７０，８５，９２
３９行目：  ４，１９，２６，４１，６３，７８
４０行目：１２，３４，４９，５６，７１，９３
４１行目：  ５，２７，４２，６４，７９，８６
４２行目：１３，２０，３５，５７，７２，９４
４３行目：  ６，２８，４３，５０，６５，８７
４４行目：２１，３６，５８，７３，８０，９５
４５行目：  ７，１４，２９，５１，６６，８８
４６行目：２２，３７，４４，５９，８１，９６
４７行目：１５，３０，５２，６７，７４，８９
４８行目：  １，  ８，２３，４５，６０，８２
【００７７】
各行に対応する部分数列Ｓ1〜Ｓ48に含まれる数を小さい順に置きかえた上記結果から明らかなように、第１ブロックＨ１においては、数を小さい順に置きかえた数列の隣り合う数の差が、９前後の値又は２０前後の値となっている。このため、図７に示すように、第１ブロックＨ１では、斜め方向の「点の列」の間隔が、列方向に約１０となっている。
また、第２ブロックＨ２においては、数を小さい順に置きかえた数列の隣り合う数の差が、３前後の値又は２８前後の値となっている。このため、図７に示すように、第２ブロックＨ２では、斜め方向の「点の列」の間隔が、列方向に約３０となっている。
さらに、第３ブロックＨ３においては、数を小さい順に置きかえた数列の隣り合う数の差が、７前後の値、１５前後の値、又は２２前後の値となっている。このため、図７に示すように、第３ブロックＨ３では、斜め方向の「点の列」の間隔が、列方向に約７となっている。
なお、第１〜第３ブロックＨ１，Ｈ２，Ｈ３では、数値Ａ１，Ａ２，Ａ３がそれぞれ異なることから、「点の列」の傾きも、それぞれ異なる。
【００７８】
［本実施形態に係る検査行列の性質］
本実施形態に係る検査行列Ｈ96の性質は、以下の通りである。
ここで、上記のように“ｍｏｄ（Ａ１×ｘ，Ｎ）＋１”をｘ＝１〜ＮまでＮ回繰り返して得られた演算結果を、その算出順に並べた数列Ｓとして考え、下記のように表現する。なお、以下では、｛｝を、数列を囲む記号として用いる。
数列Ｓ：｛ｙ1，ｙ2，・・・，ｙN｝
【００７９】
また、第１ブロックＨ１を構成する１行目〜Ｐ行目までの各行における非零要素の列位置を示す部分数列Ｓ1〜ＳPを、下記のように表現する。
１行目に対応する部分数列  Ｓ1：｛ｙ1，ｙ2，・・・，ｙ6｝
２行目に対応する部分数列  Ｓ2：｛ｙ7，ｙ8，・・・，ｙ12｝
・                              ・
・                              ・
・                              ・
Ｐ−１行目に対応する部分数列ＳP-1：｛ｙN-11，ｙN-10，・・・，ｙN-6｝
Ｐ行目に対応する部分数列  ＳP：｛ｙN-5，ｙN-4，・・・，ｙN｝
【００８０】
前記数列Ｓは、部分数列Ｓ1〜ＳPを用いると、部分数列Ｓ1〜ＳPの連結数列として表現でき、具体的には下記のとおりである。
数列Ｓ＝｛ｙ1，ｙ2，・・・，ｙN｝＝｛Ｓ1，Ｓ2，・・・，ＳP-1，ＳP｝
【００８１】
上記の部分数列Ｓ1〜ＳPは、位置算出ステップにおける演算処理内容から明らかなように、次の性質（１）（２）を有する。
（性質１）前記部分数列Ｓ1〜ＳPは、行ごとに異なるものである。
（性質２）前記部分数列Ｓ1〜ＳPに含まれる数は、１〜Ｎの自然数である。
【００８２】
さらに、部分数列Ｓ1〜ＳPは、公差がＡ１である等差数列となっている（性質３）。
これは、ｍｏｄ（Ａ１×ｘ，Ｎ）の演算で、ｘを１つずつ増加させると、Ａ１×ｘは、Ａ１（＝２９）ずつ大きくなり、ｍｏｄ（Ａ１×ｘ，Ｎ）によって算出される剰余もＡ１（＝２９）ずつ大きくなるからである。
【００８３】
例えば、第１行目に対応する第１部分数列Ｓ1は、前述のように｛３０，５９，８８，２１，５０，７９｝である。この場合、第１部分数列Ｓ1の第１項の「３０」と、これと隣り合う第２項の「５９」との間の差は、Ａ１＝２９である。
他の項についても同様に差が２９であるが、第４項の「８８」と第５項の「２１」との間の差は、「−６７」であり、「２９」ではない。
これは、ｍｏｄ（Ａ１×ｘ，Ｎ）という剰余を求める演算の性質上、ｍｏｄ（Ａ１×ｘ，Ｎ）の演算結果がＮを超えず、ｘを順次増加させると、ｍｏｄ（Ａ１×ｘ，Ｎ）も増加するものの、１〜Ｎの間で循環的に増加するからである。
【００８４】
ｍｏｄ（Ａ１×ｘ，Ｎ）が１〜Ｎの間で循環的に増加するという前提の下では、数列中の隣り合う数の差がＡ１でなくても、当該差（第１部分数列Ｓ1の第４項の「８８」と第５項の「２１」との間の差の場合「−６７」）にＮ＝９６を加えた値が、Ａ１であれば、差はＡ１とみなしてよい。
このような例外は、他の部分数列Ｓ2〜ＳPにおいても存在するが、このような例外について数値間の差を、Ａ１であるとみなすことで、全ての部分数列Ｓ1〜ＳPは、「公差Ａ１の等差数列である」ということができる。
【００８５】
つまり、上記（性質３）を言い換えると次の通りである。
（性質３）部分数列Ｓ1〜ＳPは公差がＡ１である等差数列である（ただし、当該部分数列Ｓ1〜ＳPに含まれる任意の数ｙAと当該数ｙAに隣り合う数ｙBとの差がＡでない場合があっても、ｙAと（ｙB＋Ｎ）との差がＡであれば、ｙAとｙBの差はＡであるとみなす）。
【００８６】
さらに、Ａ１とＮが互いに素であるという条件から、部分数列Ｓ1〜ＳPは、次の性質も有する
（性質４）同一の公差Ａを持つ複数の等差数列（部分数列Ｓ1〜ＳP）において、１〜Ｎの自然数それぞれの出現回数は、１回以内である。
【００８７】
また、上記生成規則に従って生成した検査行列Ｈ96の部分数列Ｓ1〜ＳPは、次の性質も有する。
（性質５）Ｐ個の部分数列Ｓ1〜ＳPは、連結数列ＳをＰ分割したものである。
（性質６）Ｐ個の部分数列Ｓ1〜ＳPは、前記連結数列ＳにおけるＰ個の前記部分数列Ｓ1〜ＳPの並び順と、Ｐ個の連続する行（１行目〜Ｐ行目）の並び順と、が一致するように、前記検査行列Ｈ96に含まれるＰ個の連続する行（１行目〜Ｐ行目）に、それぞれ割り当てられている。
【００８８】
また、上記生成規則に従って生成した連結数列Ｓは、次の性質を有する。
（性質７）前記連結数列Ｓは、Ｐ個の連続する行（１行目〜Ｐ行目）に含まれる非零要素の総数に対応した個数の「数」を有する。
（性質８）前記連結数列Ｓに含まれる数は、１〜Ｎの自然数である。
（性質９）前記連結数列Ｓにおいて、１〜Ｎの自然数それぞれの出現回数は、１回以内である。
（性質１０）前記連結数列Ｓは、公差がＡ１である等差数列である（ただし、当該連結数列に含まれる任意の数ｙAと当該数ｙAに隣り合う数ｙBとの差がＡ１でない場合があっても、ｙAと（ｙB＋Ｎ）との差がＡ１であれば、ｙAとｙBの差はＡ１であるとみなす）
【００８９】
上記（性質１０）に示すように、数列Ｓ：｛ｙ1，ｙ2，・・・，ｙN｝も公差がＡ１である等差数列である。これは、（性質３）同様、ｍｏｄ（Ａ１×ｘ，Ｎ）という剰余を求める演算の性質上、明かである。
【００９０】
なお、（性質６）は、生成規則の配置ステップ３−２において、当該（性質６）を満たすように、「１」が配置される行を、第１ブロックＨ１の１行目からＰ行目まで順次切り替えることによって成立する性質であるため、例えば、まず、１行目からＰ行目までの奇数行に順次切り替えて「１」を配置し、その後、１行目からＰ行目までの偶数行に順次切り替えて「１」を配置するといった切り替えルールを採用した場合には、（性質６）は成立しない。
また、性質１〜１０を満たす検査行列を生成した後、検査行列に含まれる行（列）同士の行置換（列置換）を行った場合も、（性質６）が失われる。
ただし、このような特殊な切り替えルールを採用しても、数値Ａ１から、性質１〜４を満たすブロックが生成されることに変わりはない。
また、上記のような場合、上記（性質６）を下記のように言い換えることで、行置換等を行って上記（性質５）を満たさなくなった場合も、性質５〜１０を満たということができる。
【００９１】
（性質６）Ｐ個の数列は、前記検査行列に含まれるＰ個の行又はＰ個の列に、それぞれ割り当てられている。
【００９２】
なお、上記性質１〜１０は、第１ブロックＨ１の数列群Ｓ1〜ＳPについて説明したが、他のブロックＨ２，Ｈ３の数列群についても同様に成り立つ。つまり、他のブロックＨ２，Ｈ３は、Ｎと互いに素である数値が、第１ブロックＨ１と異なるだけであり、その他の点は、第１ブロックＨ１と同様に生成されたものだからである。
したがって、性質１〜１０は、検査行列Ｈ96全体で成り立つ。また、性質１〜１０は、符号長Ｎに関係なく成立するため、性質１〜１０は、任意の符号長（列長さ）の検査行列Ｈに、一般化できる。
【００９３】
［数値Ａ１，Ａ２，Ａ２の決定方法］
検査行列Ｈ96を生成するための生成情報である数値Ａ１，Ａ２，Ａ３の決定手順は、例えば、下記の通りである。ここで、数値Ａ１，Ａ２，Ａ３は、それぞれ、Ｎと互いに素な数値である。また、数値Ａ１，Ａ２，Ａ３は、それぞれ異なる数値である。なお、ここでは、数値Ａ１，Ａ２，Ａ３＜Ｎとする。
【００９４】
（決定手順１）集合１を作成する。
Ｎを因数分解することで得られた数の集合を集合１とする。Ｎが９６の場合、集合１は、（２，２，２，２，２，３）である。
【００９５】
（決定手順２）集合２を作成する。
Ｎまでの素数を集合２とする。Ｎが９６の場合、集合２は、（２，３，５，７，１１，１３，１７，１９，２３，２９，３１，３７，４１，４３，４７）である。
【００９６】
（決定手順３）集合３を作成する
集合２より集合１の要素を取り除いたものを集合３とする、Ｎが９６の場合、集合２は、（５，７，１１，１３，１７，１９，２３，２９，３１，３７，４１，４３，４７）である。
【００９７】
（決定手順４）数値Ａ１，Ａ２，Ａ３の候補の組の集合を作る。
集合３より、列重みｗｃ（＝３）に相当する数の要素を取りし、それらの３つの数値Ａ１，Ａ２，Ａ３の組を候補の一つとする。候補は、集合３の要素数が１３個あることから、１３Ｃ３＝２８６通りできる。２８６通りの候補を集合４とする。
【００９８】
（決定手順５）集合４より、候補の組（Ａ１，Ａ２，Ａ３）を一つ取り出し、上記生成規則に従って、検査行列を生成する。
【００９９】
（決定手順６）決定手順５で生成された検査行列の評価を行う。評価は、サイクルの有無、行列のランクの計算、行列の重み分布の評価、Ｓｔｏｐｐｉｎｎｇ  Ｓｅｔの分布などによって行うことができる。
【０１００】
（決定手順６）決定手順５，６を２８６個の候補すべてについて行い、優れた訂正能力を有する検査行列を生成できる候補の組（Ａ１，Ａ２，Ａ３）を決定する。
【０１０１】
Ｎと互いに素である数値Ａを使って検査行列を生成する本実施形態の方法においては、決定手順５のような評価を行わなくても、ある程度の訂正能力が得られるが、決定手順５のように評価を介在させることで、特に優れた検査行列を選択することができる。
また、Ｎと互いに素である数値Ａを使って検査行列を生成する本実施形態の方法においては、上記の決定手順に従うことで、大量の候補の組（Ａ１，Ａ２，Ａ３）をコンピュータ演算によって自動的に生成することができる。よって、多数の候補について評価を行うことができ、当該評価を経て決定された数値（Ａ１，Ａ２，Ａ３）は、訂正能力が非常に優れた検査行列を生成するものとなることが期待できる。
【０１０２】
なお、上記決定手順では、Ａ（Ａ１，Ａ２，Ａ３）として、素数が選ばれるが、Ａとしては、複数の素数の積となる数であってもよく、Ｎと互いに素である数は、素数に限定されるものではない。
【０１０３】
［検査行列の生成情報について］
本実施形態の検査行列の上記生成規則によれば、復号器５が、当該生成規則に従って検査行列を生成するには、少なくとも列重みｗｃに対応した数の数値Ａ１，Ａ２，Ａ３が検査行列の生成情報としてあれば良い。従って、復号器５は、検査行列に含まれる全ての「１」の位置を示す情報を記憶していなくとも、より少ない数の数値Ａ１，Ａ２，Ａ３を記憶しておくことで、前記生成規則を実行する生成部（図示省略）によって、当該数値Ａ１，Ａ２，Ａ３を用いて、動的に検査行列を生成することができる。
【０１０４】
また、復号器５が、生成規則に従って検査行列を生成するには、数値Ａ１，Ａ２，Ａ３のほか、検査行列の符号長（検査行列の列方向長さ）Ｎが、検査行列の生成情報として必要である。
また、上記生成規則に従って、検査行列に「１」を立てるには、１つの行に含まれる「１」の個数（行重み）ｗｒも、検査行列の生成情報として必要である。
【０１０５】
以下、Ｎのように検査行列のサイズに関するパラメータや、ｗｒのように「１」の数に関するパラメータについて、考察する。
まず、正則検査行列において、列方向長さ（符号長）をＮ、行方向長さをＭ、１行当たりの「１」の個数（行重み）をｗｒ、１列当たりの「１」の個数（列重み）をｗｃとする。この検査行列に含まれる「１」の全数は、次のように表現される。
（１の全数）＝ｗｒ×Ｍ＝ｗｃ×Ｎ
上記式より、Ｍ／Ｎ＝ｗｃ／ｗｒが成り立つ。
【０１０６】
また、符号化率をＲとし、情報記号数をＫとすると、
符号化率Ｒ＝Ｋ／Ｎ
＝（Ｎ−Ｍ）／Ｎ
＝１−Ｍ／Ｎ
＝１−ｗｃ／ｗｒ
となる。
上記式において、Ｍ／Ｎは、検査行列のサイズを示しており、ｗｃ／ｗｒは「１」を立てる割合を示している。
【０１０７】
ここで、復号器５を有する通信装置が、符号化率Ｒ及び符号長Ｎを、固定の値で通信を行うことを前提とした場合、復号器５は、数値Ａ１，Ａ２，Ａ３を取得するだけで、様々な検査行列を生成することができる（Ｎやｗｒは復号器５にとって既知であるから）。
つまり、前述のように、復号器５は、復号器５（通信装置）が備えている記憶部（図示省略）に記憶された数値Ａ１，Ａ２，Ａ３を、当該記憶部から取得し、前記生成規則に従って検査行列を生成して復号を行うことができる。この場合、復号器５が、複数種類の検査行列を記憶しておく場合でも、検査行列を記憶するためのメモリの大きさを小さくできる。
特に、ＷｉＭＡＸなどの規格（通信方式）では、複数の異なる検査行列を使い分けることが要求されており、ＷｉＭＡＸ用通信装置（復号器）において、複数の検査行列を記憶するメモリを削減できるメリットは大である。
【０１０８】
また、復号器５の外部から数値Ａ１，Ａ２，Ａ３を取得（例えば、他の復号器から通信路を介して受信）し、前記生成規則に従って検査行列を生成して復号を行うこともできる。この場合、検査行列の情報を、復号器（通信装置）間で、通信によってやりとりすることで、エラー状況などの通信状況に応じて検査行列を通信中に変更することができる。しかも、検査行列の情報を他の復号装置に送っても、検査行列を少ない情報で表現できるため、通信負荷の増大を防止できる。
【０１０９】
一方、復号器５を有する通信装置が、符号化率Ｒを通信状況に応じて変化させる場合、例えば、Ｎやｗｃを固定値とした場合、上記式によれば、ｗｒを復号器（通信装置）間で通信によって通知し合うことで、実現できる。つまり、ｗｒを変更することで、符号化率を変更できる。そして、１行当たりの「１」の数をｗｒに応じて決定して、検査行列を生成すればよい。
つまり、復号器５（通信装置）には、通信状況（エラー状況）に応じて変動する符号化率に応じてｗｒを決定し、それを他の復号器５（通信装置）へ送信する機能を具備させることができる。そして、ｗｒを受信した復号器５（通信装置）は、数値Ａのほか、受信したｗｒを用いて、検査行列を生成することができる。
【０１１０】
［検査行列の他の例］
図１０は、（符号長Ｎ，Ａ１，Ａ２，Ａ３）＝（１９２，３７，１１３，１３７）の生成情報によって前記生成規則に従って生成された検査行列を示している。
図１１は、（符号長Ｎ，Ａ１，Ａ２，Ａ３）＝（５６７，１０９，３４７，４６３）の生成情報によって前記生成規則に従って生成された検査行列を示している。
図１２は、（符号長Ｎ，Ａ１，Ａ２，Ａ３）＝（１１５２，３４９，９８３，１０６９）の生成情報によって前記生成規則に従って生成された検査行列を示している。
なお、図１０〜図１２の検査行列は、（Ｎ，Ａ１，Ａ２，Ａ３）以外の検査行列に関するパラメータ（ｗｒなど）については、図７に示す検査行列と同様である。
【０１１１】
図１３は、図１０〜図１２の検査行列を用いて復号した場合のＢＥＲ（Ｂｉｔ  Ｅｒｒｏｒ  Ｒａｔｅ）特性を示している。なお、図１３には、誤り訂正を行わなかった場合のＢＥＲ特性も、参考のため「訂正なし」として表している。
図１３に示すように、図１０〜図１２の検査行列は、図７の検査行列と同様に、エラーフロアーを引かず良好な特性が得られることがわかる。
【０１１２】
［検査行列の生成規則の変形例］
上記生成規則では、１行単位で、非零要素の位置を決定していたが、この変形例では、１列単位で、非零要素の位置を決定する。
変形例に係る生成規則は下記の通りである。なお、ここでは、図１４（ａ）に示すように、検査行列Ｈ（行列サイズＭ×Ｎ）を、行重みｗｒ（＝６）の数に応じた複数の部分行列Ｈ１〜Ｈ６に分割して考える。なお、行重みｗｒ＝６であることに対応して、Ｍと互いに素である数値Ａとしては、Ａ１〜Ａ６までの６個が必要である。ただし、以下の生成規則では、Ａ１のみについて説明する。
【０１１３】
（変形した生成規則；列単位の生成規則）
（１）検査行列の行方向長さをＭとする。
（２）Ｍと互いに素である数値をＡ１とする。
（３）変数ｘが、初期値ｘ1から（ｘ1＋（Ｍ−１））になるまで下記（３−１）（３−２）の処理を繰り返す（Ｍ回の繰り返し処理）。なお、ここでは、初期値ｘ1＝１とする。
（３−１：位置算出ステップ）ｍｏｄ（Ａ１×ｘ，Ｍ）を計算し、その結果に１を加える。つまり、“ｍｏｄ（Ａ１×ｘ，Ｍ）＋１”を計算する。なお、ｍｏｄ（Ａ１×ｘ，Ｍ）は、（Ａ１×ｘ）をＭで割ったときの剰余を求める関数とする。
（３−２：配置ステップ）第１ブロックＨ１中の、“ｍｏｄ（Ａ１×ｘ，Ｍ）＋１”の結果（行インデックス）が示す列位置に非零要素「１」を配置する。「１」が配置される列は、第１ブロックＨ１の１列目からＰ列目まで順次切り替わる。各列には、列重みｗｃに対応した数の「１」が順次配置され、一つの列に、列重み分の数の「１」を立てたら、次の列に移って、同様に列重み分の数の「１」を立てる。
【０１１４】
上記生成規則を他のブロックＨ２〜Ｈ６についても、数値Ａ２〜Ａ６を用いて「１」を立てる。図１４（ｂ）は、このようにして生成された検査行列を示している。
【０１１５】
なお、上記列単位の生成規則は、図７の検査行列に関して説明した生成規則を検査行列の転置行列について適用したのち、再び転置を行うことと等価である。つまり、生成したい検査行列（行列サイズＭ×Ｎ）を転置した行列（行列サイズＮ×Ｍ；行重みｗｒ＝３；列重みｗｃ＝６）を想定し、この転置行列（Ｎ×Ｍ）に、図７の検査行列に関して説明した生成規則を適用して「１」を立てて、図１５に示すような行列を生成する。そして、図１５の行列を転置することで、図１６に示す行列サイズＭ×Ｎの検査行列を得ることができる。
【０１１６】
また、変形例に係る生成規則によって生成された検査行列も、前述の性質１〜１０（ただし、性質１〜１０における「行」と「列」を入れ替える）が成り立つ。
【０１１７】
本発明は、上記実施形態に限定されるものではなく、その要旨を逸脱しない範囲で様々な変形が可能である
【図面の簡単な説明】
【０１１８】
【図１】通信システムの構成を概略的に示す図である。
【図２】送信データと復調データの対応の一例を示す図である。
【図３】復号化器の構成を概略的に示す図である。
【図４】参考的に示す検査行列（本発明の実施形態ではない）の一例である。
【図５】図４に示す検査行列のタナーグラフである。
【図６】一次推定語生成部のブロック図である。
【図７】実施形態に係る検査行列の１例を示す図である。
【図８】比較例に係る検査行列を示す図である。
【図９】検査行列の生成の仕方に関する説明図である。
【図１０】実施形態に係る検査行列の他の例を示す図である。
【図１１】実施形態に係る検査行列の他の例を示す図である。
【図１２】実施形態に係る検査行列の他の例を示す図である。
【図１３】図１０〜図１１に示す検査行列でのＢＥＲ特性図である。
【図１４】（ａ）は検査行列の列単位生成規則の説明図であり、（ｂ）は列単位生成規則で生成された検査行列を示す図である。
【図１５】検査行列の転置行列に行単位生成規則を適用した場合の行列を示す図である。
【図１６】図１５の行列を転置した行列（検査行列）を示す図である。
【図１７】従来の検査行列の生成方法の説明図である。
【符号の説明】
【０１１９】
１  符号化器
２  変調器
３  通信路
４  復調器
５  変調器
Ｈ  検査符号
【図１】
0004618293.tif 000006
【図２】
0004618293.tif 000007
【図３】
0004618293.tif 000008
【図４】
0004618293.tif 000009
【図５】
0004618293.tif 000010
【図６】
0004618293.tif 000011
【図９】
0004618293.tif 000012
【図１７】
0004618293.tif 000013
【図７】
0004618293.tif 000014
【図８】
0004618293.tif 000015
【図１０】
0004618293.tif 000016
【図１１】
0004618293.tif 000017
【図１２】
0004618293.tif 000018
【図１３】
0004618293.tif 000019
【図１４】
0004618293.tif 000020
【図１５】
0004618293.tif 000021
【図１６】
0004618293.tif 000022