質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

3109閲覧

パリティ検査行列を用いて0となる符号語を全て列挙する。【行列計算】【Java】【python】

ryo21

総合スコア1

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2020/06/01 13:47

編集2020/06/01 14:02

パリティ検査行列パリティ検査行列を用いて符号語を全て列挙するプログラムを生成したいです。
イメージ説明
やりたいことの細かい部分はイメージ説明の画像に添付しておりますので、ご覧いただけると幸いです。
やりたいことの工程が➀~➃まで分解しており、そのうち➁まではかけたのですが、そこから手詰まり状態でございます。

・行列を転置させ、パリティ検査行列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(); } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

符号語を作成するならばパリティ検査行列Hでなく、符号生成行列Gを使うほうが適切。

符号化:情報ビットベクトルvにGを掛け算することで符号語wを得る。
復号:符号語wにHを掛け算することで(誤りがなければ)情報ビットベクトルvを得る。

考えうるvのビットパターン全てにGを掛け算すれば、全符号語が得られます。

投稿2020/06/01 14:30

HogeAnimalLover

総合スコア4830

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

HogeAnimalLover

2020/06/01 14:49

失礼、本質と関係ありませんが、誤解を招きそうなところがありました。wにHを掛け算すると得られるのはシンドロームですね。「誤りがなければこれがゼロになるので、wの情報ビット部分がそのままvとなる」というのが正しい記述となります。
ryo21

2020/06/02 11:53

正しい説明ありがとうございました。参考に致します^^
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問