Dies ist eine alte Version des Dokuments!
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.
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