p=0.1 % probabilita' di errore di un BSC C=1-entropy([p (1-p)]) % capacita' del canale (singolo uso) Pc= [ (1-p) p ; p (1-p)] %matrice di canale Pc2=kron(Pc,Pc) %matrice di canale del canale esteso di ordine 2 Pc3=kron(Pc,Pc2) % ............................................3 Pc4=kron(Pc,Pc3) % matrice di canale del canale esteso di ordine 4 B=[ 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ; 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 ; 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 ; 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 ; 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 ; 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 ; 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 ; 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0] % matrice di un codificatore 3/4 a parita' (pari) Pcc=B*Pc4 %matrice di equivalente codec-canale [Y I]=max(Pcc) % Calcolo del massimo indice per ogni colonna di Pcc per il ricevitore ML DML=[ 1 0 0 0 0 0 0 0; 1 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0; 1 0 0 0 0 0 0 0; 0 0 1 0 0 0 0 0; 1 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0; 0 0 0 1 0 0 0 0; 0 0 0 0 1 0 0 0; 0 0 0 0 1 0 0 0; 0 0 0 0 1 0 0 0; 0 0 0 0 0 1 0 0; 0 0 0 0 1 0 0 0; 0 0 0 0 0 0 1 0; 0 0 0 0 0 0 0 1; 0 0 0 0 0 1 0 0] % matrice del decodificatore ML (bisogna prima far girare la parte preccedente) Pt=B*Pc4*DML % matrice della cascata codec-canale-decoder pe=1- (1/8)*(diag(Pt)'* ones(8,1)) %Probabilita' di errore del ric ML con sorgente uniforme % assumere che i bit alla sorgente binaria non siano equiprobabili ps=[0.4 0.6]; ps2=kron(ps,ps) %distr. della sorgente estesa di ordine 2 ps3=kron(ps,ps2) %distr della sorgente estesa di ordine 3 % ottenere il decodificatore MAP (DMAP) dopo aver calcolato le matrice delle prob. a posteriori Pp=apost(ps3',Pcc) [Y I]=max(Pp) % calcolare la probabilita' di errore del DMAP e confrontarla con quella del DML DMAP=[ 0 1 0 0 0 0 0 0; 1 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0; 0 0 0 1 0 0 0 0; 0 0 1 0 0 0 0 0; 0 0 0 1 0 0 0 0; 0 0 0 0 0 0 0 1; 0 0 0 1 0 0 0 0; 0 0 0 0 1 0 0 0; 0 0 0 0 0 1 0 0; 0 0 0 0 0 0 0 1; 0 0 0 0 0 1 0 0; 0 0 0 0 0 0 0 1; 0 0 0 0 0 0 1 0; 0 0 0 0 0 0 0 1; 0 0 0 0 0 0 0 1] Ptt=B*Pc4*DMAP % matrice della cascata codec-canale-decoder peMAP=1-(diag(Ptt)'* ps3') %Probabilita' di errore del ric MAP PeML=1-(diag(Pt)'* ps3') %prob di errore del ric. ML con sorgente non uniforme