パリティ検査行列パリティ検査行列を用いて符号語を全て列挙するプログラムを生成したいです。
やりたいことの細かい部分はイメージ説明の画像に添付しておりますので、ご覧いただけると幸いです。
やりたいことの工程が➀~➃まで分解しており、そのうち➁まではかけたのですが、そこから手詰まり状態でございます。
・行列を転置させ、パリティ検査行列Hを生成すること。
・0になる可能性のあるxを列挙すること
・javaでの行列計算
ただし2進数の計算になるため1+1=0などの計算にする方法がいまいちつかめません。
なんとなく2で割った余りが0なら0、2で割った値が1なら1にするようなif文を組んだらいけそうなのですが、自力でもやっておりますが、うまくいきません。
分からないことが自分でも多すぎて説明不足なところも多々あると思いますが、お力添えをどうかお願い致します。
import java.util.*; public class RyoMatrix { public static void main(String args[]) { Scanner scanner = new Scanner(System.in); //Scannerクラスを初期化 System.out.println("検査ビット長の長さを任意の自然数で入力してください。"); int m = scanner.nextInt(); int n = (int)Math.pow(2, m)-1; int k = n-m; System.out.println("検査ビット長の長さは"+m+"、符号長は"+n+"、情報ビット数は"+k+"となります"); int identityMatrixG[][] = new int[k][n]; // Matrix k x n for (int i = 0; i < k; i++) { for (int j = 0; j < k; j++) { if (i == j) identityMatrixG[i][j] = 1; else identityMatrixG[i][j] = 0; } for (int l = k; l < n; l++) { System.out.print(String.format("G行列の%d行%d列に0か1の好きな数字を入力してください。 : ", i + 1, l + 1)); int p = scanner.nextInt(); if (p != 0 && p != 1) identityMatrixG[i][l] = 0; else identityMatrixG[i][l] = p; } } System.out.println("["); for (int i = 0; i < k; i++) { System.out.print("["); for (int j = 0; j < n; j++) { System.out.print(identityMatrixG[i][j]); } System.out.println("]"); } System.out.println("]"); scanner.close(); } }
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/01 14:49
2020/06/02 11:53