0 Daumen
368 Aufrufe

Aufgabe:

Sie erhalten die Nachricht c = 10010010. Der Sender hat seine Nachricht mit der Hadamard-Matrix H3 codiert. Bei der Übermittlung könnte ein Fehler aufgetreten sein. Bestimmen Sie die Ursprungsnachricht nach der Majoritäts-Decodierung?


Problem/Ansatz:

Wie wendet man bei Hadamard die Majority Dekodierung an?

Avatar von

1 Antwort

0 Daumen

Antwort mit KI erzeugt

Bestimmen Sie die Ursprungsnachricht nach der Majoritäts-Decodierung bei Hadamard-Codierung

Schritt 1: Verständnis der Hadamard-Matrix

Die Hadamard-Matrix, speziell H3 für diese Frage, ist eine 8x8 Matrix, die aus der Hadamard-Ordnung folgt. Die Hadamard-Matrix der Ordnung \(n = 2^m\) wird rekursiv konstruiert. Für \(H_1\) ist:

\( H_1 = \begin{pmatrix} 1 & 1 \\ 1 & -1 \end{pmatrix} \)

Für jede weitere Ordnung \(H_m\) ergibt sich die Matrix als:

\( H_m = \begin{pmatrix} H_{m-1} & H_{m-1} \\ H_{m-1} & -H_{m-1} \end{pmatrix} \)

Für \(H_3\) erhält man also eine 8x8 Matrix. Diese wird zur Kodierung der Ursprungsnachricht vor der Übermittlung verwendet. Jede Zeile der Hadamard-Matrix repräsentiert dabei einen möglichen Codewortvektor.

Schritt 2: Verwendung der Hadamard-Matrix zur Decodierung

Die Majoritäts-Decodierung bei einer Nachricht, die mit einer Hadamard-Matrix codiert wurde, basiert darauf, zu finden, welche Zeile der Hadamard-Matrix am ähnlichsten (das heißt, mit der meisten Übereinstimmung) zum empfangenen Vektor \(c = 10010010\) ist. Um dies effizient durchzuführen, kann man die Korrelation zwischen dem empfangenen Vektor und jeder Zeile der Hadamard-Matrix berechnen.

Schritt 3: Berechnung der Korrelation

Die Korrelation misst die Ähnlichkeit zwischen dem empfangenen Codewort und jedem Codewort der Matrix. Die Formel für die Korrelation \(R\) zwischen zwei Vektoren \(a\) und \(b\) von der Länge \(n\) ist:

\( R = \sum_{i=1}^{n} a_i b_i \)

wobei \(a_i\) und \(b_i\) die Elemente der Vektoren \(a\) und \(b\) sind. Für die Hadamard-Codierung ersetzen wir die -1 in der Hadamard-Matrix durch 0 (für die Berechnung der Korrelation), um mit dem binären Format des empfangenen Codeworts übereinzustimmen.

Schritt 4: Programmierlösung zur Berechnung der Korrelation

Um die Ursprungsnachricht nach der Majoritäts-Decodierung zu bestimmen, können wir nun den notwendigen Quellcode generieren, der die Hadamard-Matrix \(H_3\) aufbaut, den empfangenen Vektor mit jeder Zeile vergleicht, die Korrelation berechnet und die Zeile mit der höchsten Korrelation (majority vote) als die decodierte Nachricht identifiziert.

python
import numpy as np

def hadamard(order):
    """Generiert Hadamard-Matrix der gegebenen Ordnung."""
    if order == 1:
        return np.array([[1, 1], [1, -1]])
    else:
        smaller_hadamard = hadamard(order - 1)
        top = np.hstack((smaller_hadamard, smaller_hadamard))
        bottom = np.hstack((smaller_hadamard, -smaller_hadamard))
        return np.vstack((top, bottom))

def decode_hadamard(coded_message, hadamard_matrix):
    """Decodiert die Nachricht mithilfe der Hadamard-Matrix."""
    # Umwandlung der Nachricht und der Hadamard-Matrix in binär (0 und 1 statt 1 und -1)
    coded_message_bin = np.array([0 if bit == "0" else 1 for bit in coded_message])
    hadamard_matrix_bin = (hadamard_matrix + 1) // 2
    
    # Berechnung der Korrelation
    correlation = np.dot(hadamard_matrix_bin, coded_message_bin)
    
    # Identifizierung der Zeile mit der höchsten Korrelation
    decoded_index = np.argmax(correlation)
    
    return decoded_index

# Anwendung auf Aufgabe
h3 = hadamard(3)
coded_msg = "10010010"
decoded_index = decode_hadamard(coded_msg, h3)

print(f"Index der Ursprungsnachricht in der Hadamard-Matrix: {decoded_index}")


Dieser Code generiert die Hadamard-Matrix \(H_3\), berechnet die Korrelation des empfangenen Vektors mit jeder Zeile der Matrix und bestimmt den Index der Ursprungsnachricht anhand der höchsten Korrelation. Die endgültige decodierte Nachricht ist die Zeile der Hadamard-Matrix, die diesem Index entspricht (als binärer String).
Avatar von 4,6 k

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community