# Um Vektoren darzustellen koennt ihr Listen benutzen: v := [ 1,0,1,1,0]; stellt zum Beispiel ein Vektor aus {0,1}^5 dar. Matrizen koennt ihr mit # M := Matrix(Integers(), 3,2, [1,0,1,1,0,0]); # mit M[2]; erhaltet ihr die Zweite Zeile der Matrix M und mit M[2][1]; das erste Element der zweiten Zeile. # Beachte, dass M[2] keine Liste ist: Mit List(M[2]) koennt ihr aber daraus eine Liste machen. # Mit Concatenation([1,0], [0,1]); koennt ihr Listen zusammenfuegen. # C koennt ihr als Liste, etwa C := [ [ 1,0,1,0,1,0], [0,1,0,1,0,1], [0,0,0,0,0,0], [ 1,1,1,1,1,1]]; darstellen (Hier Wiederholungscode mit n=6, l=3, d.h. # der Source besteht aus Worten der Laenge 2) # oder als Matrix M := Matrix(Integers(), 4,6, [ 1,0,1,0,1,0, 0,1,0,1,0,1, 0,0,0,0,0,0, 1,1,1,1,1,1]); NoisyChannel := function(p, v) ## erhaelt ein 0 < p < 0.5 und einen codierten Vektor v ## und gibt einen local xx,aa,erg; erg := Copy(v); for xx in [1..Length(v)] do aa := RandomBits(7); if aa < p*100 then erg[xx] := (v[xx]+1) mod 2; else erg[xx] := v[xx]; fi; od; return(erg); end; EncodeRepetition := function(v,l) #### v=Vektor der zu codieren ist, l = Anzahl der Wiederholungen local a,b; Print("Encode...\n"); end; DecodeRepetition := function(v,l) ### erhaelt einen codierten und ueber den Kanal transformierten Vektor v mit Wiederholung l local a,b; Print("Decode ..\n"); end;