Ejemplo n.º 1
0
def criarTrelica(m, G):
    # m -> Quantidade de memórias
    # G -> Conjunto de polinômios geradores
    # treliça -> (M, u, V, MF)
    # Criar o conjunto de memórias
    M = []
    # trelica
    trelica = []
    alpha = [0, 1]
    if m == 3:
        M = [[a, b, c] for a in alpha for b in alpha for c in alpha]
    elif m == 4:
        M = [[a, b, c, d] for a in alpha for b in alpha for c in alpha
             for d in alpha]
    else:
        M = [[a, b, c, d, e] for a in alpha for b in alpha for c in alpha
             for d in alpha for e in alpha]

    # Realizar a codificação de cada memória possível para cada entrada possível
    for m in M:
        for u in alpha:
            mfaux = []
            V = [0, 0, 0]
            codificar(u, G, m, V, mfaux)
            trelica.append((m, u, V, mfaux))
    return trelica
Ejemplo n.º 2
0
def criarTrelica(m, G, cond):
    # m -> Quantidade de memórias
    # G -> Conjunto de polinômios geradores
    # treliça -> (M, u, V, MF)
    # Criar o conjunto de memórias
    M = []
    # trelica
    trelica = []
    alpha = [0, 1]
    if m == 3:
        M = [[a, b, c] for a in alpha for b in alpha for c in alpha]
    elif m == 4:
        M = [[a, b, c, d] for a in alpha for b in alpha for c in alpha
             for d in alpha]
    else:
        M = [[a, b, c, d, e, f] for a in alpha for b in alpha for c in alpha
             for d in alpha for e in alpha for f in alpha]

    # Realizar a codificação de cada memória possível para cada entrada possível
    for m in M:
        for u in alpha:
            mfaux = []
            V = [0, 0, 0]
            codificar(u, G, m, V, mfaux)
            # Modifica ligeriamente a treliça para que os ramos estejam na modulação BPSK
            if cond == 2:
                Vaux = []
                for elemento in V:
                    if elemento == 0:
                        Vaux.append(-1)
                    else:
                        Vaux.append(1)
                trelica.append((m, u, Vaux, mfaux))
            else:
                trelica.append((m, u, V, mfaux))
    return trelica
Ejemplo n.º 3
0
                    break
    u.reverse()

    return u
    #print(estadoAtual)
    # Nesse ponto, basta percorrer o caminho que gera a decodificação


if __name__ == "__main__":
    m = 3
    G = [[1, 1, 0, 1], [1, 0, 1, 1], [1, 1, 1, 1]]
    u = [0, 1, 1, 0, 1, 0, 1, 0, 1, 1]
    T = []
    mf = []
    M = [0, 0, 0]
    for ele in u:
        V = [0, 0, 0]
        codificar(ele, G, M, V, mf)
        #print(mf)
        T.append(V)
        M.clear()
        M.extend(mf)
        mf.clear()
    print(T)
    trelica = criarTrelica(m, G)
    T = [[0, 0, 1], [1, 0, 1], [1, 0, 0], [0, 1, 0], [1, 0, 1], [1, 1, 0],
         [0, 1, 0], [1, 0, 0], [0, 1, 0], [0, 0, 1]]
    #print(T)
    print(u)
    print(decodificar(m, T, trelica))