Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

ss15:hamming-code

Dies ist eine alte Version des Dokuments!


Hamming-Code

Der Hamming-Code soll uns dabei helfen mögliche Übertragungsfehler zu korrigieren, die durchaus bei einer Schallübertragung vorkommen. Im Prinzip wird unsere zu übertragende Bits verlängert, wodurch darin mehr Informationen enthalten sind, die zur Fehlerkorrektur beitragen. Bei Hamming werden aus unserer Bit-Übertragung immer nacheinander 4 aufeinanderfolgende Bits mithilfe der Umwandlungsmatrix G in 7 Bits umgewandelt. Damit ist es nun möglich, dass jeder 7. Fehler korrigiert wird, jedoch müssen die Fehler auch einen Abstand von 7 Bits einhalten.

four_to_seven_bit_code

Überblick entstandener 7er Bits Bevor die Bits durch Schall übertragen werden, muss der Hamming-Code auf sie angewendet worden sein. Aus unserer Bit-Liste werden dabei nacheinander 4er Bit-Blöcke mit der Umwandlungsmatrix G in modulo 2 multipliziert und erhalten eben unseren fertigen 7er Bit-Code. Übersicht in nebenstehender Skizze. Modulo 2 bedeutet, dass der Rest der Division aus unserer Zahl durch 2 hingeschrieben wird. Die Funktionsweise der Erkennungsmelodie in unserem Beispiel-Code, die um unseren Haupt-Bit-Strang erweitert wird, wird später noch erläutert.

Im folgenden Code

def four_to_seven_bit_code(l):
	n=0
	i=[1,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,1,1,1,1,1] #Erkennungsmelodie
	G = np.matrix([[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1],[1,1,0,1],[1,0,1,1],[0,1,1,1]]) #Umformungsmatrix
 
	while True:
		k=np.matrix(l[0+n*4:4+n*4])
		if k.shape[1]<4: #letztes Schnipsel an Code, dass kleiner 4 ist, wird nicht gelesen (dürfte nicht vorkommen)
			break #Sicherheitsbreak
		m=(np.fmod(G.dot(k.reshape(4,1)),2)).reshape(1,7) #viele Syntaxumwandlungen nötig
		i.extend(np.array(m).flatten().tolist())          # ""          ""         ""
		n+=1
 
	#print k #letztes Schnipsel an Code
	return i #umgewandelter Code
ss15/hamming-code.1442238547.txt.gz · Zuletzt geändert: 2016/05/10 14:46 (Externe Bearbeitung)