Autor: Edison Del Rosario

  • 1Eva_IIT2017_T4 Multiplexor conexiones dos tipos - colas

    1ra Evaluación II Término 2017-2018. Noviembre 28, 2017

    Tema 4. (35 puntos) Para transmisión de datos se dispone de un enlace con capacidad de 5 MB/s que sirve a dos clases de conexiones, tipo 1 y tipo 2, usando un multiplexor semejante al descrito en el tema anterior.

    Peticiones de conexión tipo 1 llegan acorde a un proceso Poisson con tasa λ1 y ocupan 1Mb del ancho de banda del enlace con un tiempo de uso exponencialmente distribuido con parámetro µ1.

    Peticiones conexión tipo 2 llegan acorde a un proceso Poisson con tasa λ2 y ocupan 2Mb del ancho de banda del enlace con un tiempo de uso exponencialmente distribuido con parámetro µ2.

    Se requiere un modelo de colas para el comportamiento del sistema cuando λ1 y λ2 y son positivas.

    a) Determine el espacio de estados del sistema

    b) Dibuje y etiquete el diagrama de estados del sistema

    c) Plantee las ecuaciones de estados del sistema

    d) Determine la probabilidad de pérdidas de conexiones tipo 1 y tipo 2, y la probabilidad de pérdidas del sistema

    e) ¿Cuál probabilidad de pérdidas es más alta? Para conexiones tipo 1 o 2, describa su respuesta

    f) Calcule la utilización del enlace por cada tipo

    Nota: Para los estados utilice la nomenclatura (tp1, tp2), donde tpi corresponde a la cantidad de atención de enlaces tipo i.
    Para el factor de utilización, puede ponderar el ancho de banda con las probabilidades de estado asociado; es decir, cuando los servidores están ocupados, los clientes llegan juntos a una tasa de λ = λ1 + λ2 y el cliente tipo 1 se encuentra con una probabilidad de λ1/λ y de tipo 2 con una probabilidad de λ2/λ

    Rúbrica: Literal a (5 puntos), literal b (10 puntos), literal c (10 puntos), literal d (5 puntos).

    Referencia: Lakatos, Szeidl, Telek (2013). Introducción a sistemas de colas con telecomunicaciones. Ejercicios 11.1

  • 1Eva_IIT2017_T3 Multiplexor-Colas

    1ra Evaluación II Término 2017-2018. Noviembre 28, 2017

    Tema 3. (15 puntos) En telecomunicaciones, la multiplexación permite transmitir varias comunicaciones de forma simultánea combinando dos o más comunicaciones en la entrada y entregando un solo canal/ medio de salida.

    Para transmisión de datos se dispone de un multiplexor con capacidad de 5 MB/s que sirve a conexiones que llegan acorde a un proceso Poisson con tasa λ y ocupan 1Mb del ancho de banda del enlace con un tiempo de uso exponencialmente distribuido con parámetro µ.

    a) Determine el espacio de estados del sistema

    b) Dibuje y etiquete el diagrama de estados del sistema

    c) Calcule las probabilidades de cada estado (PMF)

    d) Encuentre la probabilidad de pérdidas de conexiones.

    e) ¿Cuál es el factor de utilización del enlace?

    Rúbrica: literal a y b (5 puntos), literal c (8 puntos), literal d y e (2 puntos)

    Referencia: Erlang’s loss System. Ross 8.9.1. p.563, M/M/c/c Queueing System. León-García 12.4.3

  • 1Eva_IIT2017_T2 Radio-enlaces con Markov

    1ra Evaluación II Término 2017-2018. Noviembre 28, 2017

    Tema 2. (35 puntos) Para comunicar dos ciudades se instalan tres radio-enlaces digitales de larga distancia, cada uno conformado por un transmisor (Tx) y un receptor (Rx). Por ejemplo, las ciudades Guayaquil en la costa y Cuenca en la sierra, se comunican usando tres radio-enlaces que en puntos por tramos en las montañas.

    En un radio-enlace el dígito binario 0 enviado por Tx se recibe en Rx con una probabilidad de error α, mientras que el dígito binario 1 presenta probabilidad de error β.

    Para un radio-enlace realice un modelo con una Cadena de Markov:

    a) Determine el espacio de estados

    b) Realice el diagrama de estados, etiquete claramente

    c) Escriba la matriz de transición y calcule la probabilidad de estado estable.

    Suponga que α=0.01, β=0.02 y determine para todo el enlace entre las ciudades:

    d) La matriz de transición entre las ciudades A y B
    e) Probabilidad de error para un dígito binario 0 (bit)
    f) Probabilidad de error para un bit con valor 1 (bit)
    g) El error al transmitir un bit en todo el enlace
    h) Observe y comente sus resultados.

    Rúbrica: literal a y b (6 puntos), literal c (4 puntos), literal d (10 puntos), literal e y f (3 puntos c/u) literal g (4 puntos), literal h (5 puntos)

    Referencia: Gubner(2006) problema 1.56, 3.28, ejemplo 3.13; León-García(2008) 1.5.1; FIEC03236-1ra Evaluación II Término 2011.

  • 1Eva_IIT2017_T1 Código Morse con Markov

    1ra Evaluación II Término 2017-2018. Noviembre 28, 2017

    Tema 1. (15 puntos) El código Morse fué muy usado en telegrafía, transmisiones por radio marítimas y aéreas. Conocido también como alfabeto Morse, cambia los caracteres alfanuméricos a códigos combinando puntos '.' y rayas '-'.
    La separación entre códigos morse se realiza con un espacio ' ', mientras que en la separación entre palabras se usan 3 espacios '   '.

    Ejemplo:
    un mensaje: ESPOL impulsando la sociedad del conocimiento
    . ... .--. --- .-..   .. -- .--. ..- .-.. ... .- -. -.. ---   .-.. .-   ... --- -.-. .. . -.. .- -..   -.. . .-..   -.-. --- -. --- -.-. .. -- .. . -. - --- 
    

    Realice un modelo en cadena de Markov para un experimento realizado sobre un texto codificado en morse.

    Use como referencia los símbolos = '.- ', en el experimento se contaron los cambios entre símbolos mostrado los valores resultantes en la matriz “conteo”.

    a) Determine el espacio de estados
    b) Realice el diagrama de estados
    c) Escriba la matriz de transición y ubique los valores encontrados en el diagrama.
    d) Calcule la probabilidad de estado estable o largo plazo.

    conteo = 
    [[36532, 35233, 51578],
     [36982, 23931, 30807],
     [49822, 32564, 32194]]
    

    Referencia: https://blog.espol.edu.ec/estg1003/morse-codificador-texto/
    Rúbrica: literal a y b (5 puntos), literal c (5 puntos), literal d (5 puntos)

  • 6. Morse cadena de Markov

    Para el texto en código Morse obtenido en el ejercicio "Morse codificador texto", se requiere realizar la correspondiente cadena de Markov.

    Se tiene como archivo de entrada: elaguacate_morse.txt

    - ..- . .-. . ... -- .. .- -- --- .-. 
    -- .. -.. .. -.-. .... .- -.-- -- .. - . ... --- .-. --- 
    -- .. ... --- .-.. --- . -. -.-. .- -. - --- 
    -.-- -- .. .. .-.. ..- ... .. --- -. .-.-.-
    1. Determine el espacio de estados: S= {...}
    2. Realice el diagrama de transición de estados.
    3. Realice el conteo correspondiente de las transiciones entre estados
    4. Elabore la matriz de transición usando el resultado anterior
    5. Ubique en el diagrama los valores correspondientes a las transiciones
    6. Encuentre la matriz de transición en estado estable, o largo plazo.
    7. Compare los resultados de estado estable con la pmf obtenida en el ejercicio "Morse codificador texto"
    8. Presente las observaciones
    9. Escriba las recomendaciones.

    Instrucciones en Python

    Un ejemplo de instrucciones para realizar el conteo de las transiciones.

    # Matriz de transicion de Código Morse
    # Tarea: Realizar la matriz de transición
    # para la cadena de Markov
    import numpy as np
    
    # INGRESO
    narchivo = 'elaguacate_morse.txt'
    archivo  = open(narchivo, 'r')
    
    # PROCEDIMIENTO
    s = '.- '
    n = len(s)
    conteo = np.zeros(shape=(n,n), dtype=int)
    linea  = archivo.readline()
    while not(linea ==''):
        linea = linea.strip('\n')
        m = len(linea)
        for i in range(0,m-1,1):
            simbolo = linea[i]
            simbolosigue = linea[i+1]
            f = s.find(simbolo)
            c = s.find(simbolosigue)
            conteo[f,c] = conteo[f,c] +1
        
        print(linea)
        linea = archivo.readline()
    
    # SALIDA
    print('matriz de conteo: ')
    print('   .   -  espacio')
    print(conteo)
    

    Resultado del algoritmo

    matriz de conteo: 
       .   -  espacio
    [[123 116 145]
     [100  93 123]
     [156  92 102]]
    
  • Media, Varianza correlacion

    Procesos aleatorios Discretos en tiempo

    Media:

    m_X(n) = E[X(n)]

    Varianza:

    VAR[X(n)] = E[(X(n) - m_X(n))^2]

    Autocorrelación

    R_X(n_1,n_2) = E[X(n_1,n_2)]

    Autocovarianza:

    C_X(n_1,n_2) = E[\{X(n_1) - m_X(n_1) \} \{ X(n_2) - m_X(n_2)\} C_X(n_1,n_2) = R_X(n_1,n_2) - m_X(n_1) m_X(n_2)
  • 5. Morse codificador texto

    Para la transmisión de texto, por ejemplo la letra de una canción, se puede codificar a Morse usando inicialmente el procedo de los ejemplos anteriores.

    Por ejemplo, una parte del archivo origen: elaguacate_Letra.txt

    Tu eres mi amor 
    mi dicha y mi tesoro 
    mi sólo encanto 
    y mi ilusión.

    se convertiría en: elaguacate_morse.txt

    - ..- . .-. . ... -- .. .- -- --- .-. 
    -- .. -.. .. -.-. .... .- -.-- -- .. - . ... --- .-. --- 
    -- .. ... --- .-.. --- . -. -.-. .- -. - --- 
    -.-- -- .. .. .-.. ..- ... .. --- -. .-.-.-

    que puede ser guardado en otro archivo  y procesado como un proceso estocástico.

    Hay que considerar que en la codificación estandar Morse, no existen las letras con tíldes ('áéíóú') que para la transmisión se debe quitar las tildes.


    Funciones complementarias

    Se usa como función básica como codificador Morse la descrita en el problema básico.

    Cuando el tema a tratar es un texto más largo, se abordan más detalles del procesamiento del texto, como el quitar las tildes antes de codificar la letra. En el estándar de la codificación Morse (origen en inglés) no se usaban las tildes en las letras, para ésta operación se usa la funcion quitatildes().

    Como complemento se añaden las funciones de codificación por línea, otra función para el conteo de símbolos,

    La codificación en python usada para el ejemplo se adjunta:

    # Código Morse -  codificador de texto
    # propuesta: edelros@espol.edu.ec
    import numpy as np
    import matplotlib.pyplot as plt
    
    def morsecodec(caracter):
        equivale={
            'A':'.-', 'B':'-...', 'C':'-.-.', 
            'CH':'----', 'D':'-..', 'E':'.', 
            'F':'..-.', 'G':'--.', 'H':'....', 
            'I':'..', 'J':'.---', 'K':'-.-',
            'L':'.-..', 'M':'--', 'N':'-.', 
            'Ñ':'--.--', 'O':'---', 'P':'.--.', 
            'Q':'--.-', 'R':'.-.', 'S':'...', 
            'T':'-', 'U':'..-', 'V':'...-',
            'W':'.--', 'X':'-..-', 'Y':'-.--', 
            'Z':'--..',
            '0':'-----', '1':'.----', '2':'..---', 
            '3':'...--', '4':'....-', '5':'.....', 
            '6':'-....', '7':'--...', '8':'---..', 
            '9':'----.', 
            '.':'.-.-.-', ',':'-.-.--', '?':'..--..', 
            '"':'.-..-.', '!':'--..--', ' ':' '}
        # Si caracter no está en equivale
        codigo = caracter
        # codifica a morse
        caracter = caracter.upper()
        if (caracter in equivale):
            codigo = equivale[caracter]    
        return(codigo)
    
    def quitatildes(linea):
        sintilde = {'á':'a', 'é':'e', 'í':'i',
                    'ó':'o', 'ú':'u'}
        nueva = ''
        for caracter in linea:
            if (caracter in sintilde):
                caracter = sintilde[caracter]
            nueva = nueva + caracter
        return(nueva)
    
    def morselinea(linea):
        linea = linea.strip('\n')
        linea = linea.strip(' ')
        linea = quitatildes(linea)
        lineamorse = ''
        for caracter in linea:
            enmorse = morsecodec(caracter)
            lineamorse = lineamorse + enmorse + ' '
        return(lineamorse)
    
    def cuentasimbolo(texto,simbolos):
        k = len(simbolos)
        veces = np.zeros(k,dtype=int)
        n = len(texto)
        for fila in range(0,n,1):
            unalinea = texto[fila]
            unalinea = unalinea.strip('\n')
            m = len(unalinea)
            for caracter in unalinea:
                donde = simbolos.find(caracter)
                if (donde>=0): #Si no encuentra es negativo
                    veces[donde] = veces[donde]+1
        total = np.sum(veces)
        return(veces)
    
    # PROGRAMA -----------------------------
    
    # INGRESO
    nombrearchivo = 'elaguacate_Letra.txt'
    
    # PROCEDIMIENTO
    # procesa el archivo
    archivo  = open(nombrearchivo,'r')
    unalinea = archivo.readline()
    codificado = []
    while not(unalinea==''):
        unalinea = unalinea.strip('\n')
        unalinea = unalinea.lower()
        lineamorse = morselinea(unalinea)
        codificado.append(lineamorse)
        unalinea = archivo.readline()
    archivo.close()
    
    # cuenta símbolos
    simbolos = '.- '
    conteo   = cuentasimbolo(codificado,simbolos)
    total    = np.sum(conteo)
    pmf      = conteo/total
    
    # SALIDA
    print('Texto en morse: ')
    n = len(codificado)
    etiquetas = ['punto','raya','espacio']
    for i in range(0,n,1):
        print(codificado[i])
    
    # PMF
    print('PMF')
    print(etiquetas)
    print(pmf)
    
    # GRAFICA
    x = np.arange(0,len(conteo),1)
    plt.stem(x,pmf)
    plt.xticks(x,etiquetas)
    plt.title('pmf')
    plt.show()
    
    # ARCHIVO
    narchivo = 'morsetexto.txt'
    archivo  = open(narchivo,'w')
    for i in range(0,n,1):
        linea = codificado[i]+'\n'
        archivo.write(linea)
    archivo.close()
    

    Al final se presenta la pmf, sus valores y gráficas, junto al archivo morsetexto.txt como resultado.

    PMF
    ['punto', 'raya', 'espacio']
    [ 0.3588785   0.2953271   0.34579439]
    

    Tarea: Procese los datos necesarios para generar la función de distribución acumulada (cdf), el valor esperado, varianza y desviación estándar.

    Realice las observaciones y recomendaciones necesarias para mejorar el algoritmo que haya encontrado al usar su propio texto.

  • Suma y Retraso de procesos estocásticos

    Referencia: León García ejemplos 10.4 y 10.5 p58, Gubner Ejemplo 10.18 p396

    Suma de dos procesos

    Encuentre la densidad espectral de potencia de Z(t) = X(t) + Y(t), donde X(t) y Y(t) son procesos conjuntamente estacionarios en el sentido amplio WSS.

    Solución

    Autocorelación de Z(t) es

    R_Z(\tau) = E[Z(t + \tau )Z(t)] =

    = E[(X(t+ \tau)+ Y(t + \tau ))(X(t) + Y(t))]

    R_Z(\tau) = R_X(\tau) + R_{XY}(\tau) +R_{YX}(\tau) + R_Y(\tau)

    La densidad espectral de potencia se calcula como:

    S_Z(f) = Fourier\{ R_X(\tau) + R_{XY}(\tau) +R_{YX}(\tau) + R_Y(\tau) \}

    S_Z(f) = S_X(f) + S_{XY}(f) +S_{YX}(f) + S_Y(f)


    Referencia: León García Ejemplo 10.5 p.582, Gubner Ejemplo 10.18 p396

    Retraso

    Sea Y(t) = X(t- d), donde d es una constante de retraso y donde X(t) es estacionario en el sentido amplio WSS.
    Encuentre RYX(τ), SYX(f), RY(τ) y SY(f)

    Solución

    Usando las definiciones se tiene que:

    R_{YX}(\tau) = E[Y(t + \tau )X(t)] =

    = E[X(t + \tau - d)X(t)] =

    R_{YX}(\tau) = R_X (\tau - d)

    que usando la propiedad de desplazamiento en tiempo de la transformada de Fourier:

    S_{YX}(f) = Fourier\{ R_X(\tau - d) \} =

    = S_X(f) e^{-j2 \pi fd} =

    = S_X(f) \cos (2\pi fd) - jS_x(f) sin (2 \pi fd)

    Finalmente.

    R_Y(\tau) = E[Y(t + \tau)Y(t)] =

    = E[X(t + \tau - d)X(t - d)] = R_X(\tau)

    S_Y(f) = Fourier\{ R_Y(\tau) \} = Fourier\{ R_X(\tau) \} =

    S_Y(f) = S_X(f)

    Note que la densidad espectral de potencia crusada es compleka, y que SX(f) = SY (f) sin importar el hecho que X(t) ≠ Y(t). Entonces SX(f) = SY(f) lo que no implica que X(t) = Y(t)

  • Alfabeto - Matriz Transición

    Referencia: Ross 2.2 p25, Telex, TTY o teletipo(Wikipedia)

    Funciones de Matriz de transición de alfabeto

    Es posible determinar la matriz de transición entre las letras del alfabeto continuando con el ejercicio de Funciones de probabilidad o masa.

    Para procesar el texto se usa como entrada un archivo en formato .txt, analizando por línea, por símbolo y contando las veces que hay transición desde una letra del alfabeto.

    Nota: Considere solo el total de letras, no el total de símbolos (no incluye ",;.!?" etc.)

    El resultado que se obtiene es la matriz en los archivo adjuntos:

    transicionesletras.txt

    transicionesletrasfreq.txt

    pueden ser importados para otro algoritmo, programa u hoja electrónica

    matriz de conteo: 
    [[   1 318 440 874   14  31  56  59    8  20  0 729 314  631 27   0   78   43  749  745  210  85  64  1  27 67 38]
     [ 134   0   0   0   86   0   0   0  153   8  0 184   0    2  0  56    0    0  167   67    3  40   0  0   0  1  0]
     [ 427   0  69   0  318   1   0 135 1064   0  2  63   0    0  0 877    0    0   82    0  174 394   0  0   0  0  0]
     [ 677   0   0   0 1872   0   8   1  513   1  0   1  20    0  0 689    0    2   36    0    4  71   5  0   0  0  0]
     [ 155  82 416 229   12  53 134   3   21  60 17 655 340 1921 12  34  112   18 1328 1479  138  27  61 24 139 37 40]
     [  45   0   0   0  111   0   0   0  194   0  0  18   0    0  0  48    0    0   25    0    0 160   0  0   0  0  0]
     [  90   0   0   0  104   0   1   0  108   0  1  22   2   30  0 114    0    0  105    2    1 146   0  0   0  0  0]
     [ 261   0   0   0   99   0   0   0   15   0  0   0   3    3  0 183    0    0    1    1    7  42   0  1   0  0  0]
     [ 499 165 439 546  473 123 155   3    0   6  0 143 371  778  4 326   60   12  281  326  285   2 162  0   1  0 37]
     [  29   0   0   0   48   0   0   0    6   0  0   0   0    0  0  46    0    0    0    0    0  29   0  0   0  0  0]
     [  19   0   0   0   12   0   0   0    0   0  0   0   0    0  0   1    0    0    0    0    0   0   0  0   0  0  0]
     [1299   0  19  20  513   3  53   0  281   0  1 172  46    2  0 560    5   28    4   27   97 152  12  0   0  3  0]
     [ 379  80   0   0  531   0   0   0  374   0  0   0   6    2  0 588  312    0   12    1    1  66   0  0   0  1  0]
     [ 501   2 447 379  361  63  86   0  385   6  1   0  33   13  0 541    1   16    2  214 1034 100  38  1   0  0 34]
     [  20   0   0   0    3   0   0   0    0   0  0   0   0    0  0  22    0    0    0    0    0   0   0  0   0  0  0]
     [   0 108 116 197   43  28  54   4   10  12  0 165 404  768  3   0  125    2  628 1356   97   6  18  0   5 11  5]
     [ 334   0  32   0  310   0   0   2  116   0  0 193   0    0  0 560    1    0  412    1   29 222   0  0   0  0  0]
     [   0   0   0   0    0   0   0   0    0   0  0   0   0    0  0   0    0    0    0    0    0 692   0  0   0  0  0]
     [1058  16  74 111  774  22  57   0  486   1  1  40  93   35  0 522   21   13  105  129  191  39  24  0   0  3 51]
     [ 306   2 118  31  576  40   0   2  694   0  2   2  92    0  0 333  150    5    0    4  731 374   2  1   0  0  0]
     [ 840   0   4   0  954   0   1   8  429   0  0   3   0    3  0 771    0    0  475    1    6 150   0  0   0  0  4]
     [ 232  50 100  54  976   9  25   1  134   5  0 166  82  758  0  12   69    0  115  166   83   0   9  0   0 38  9]
     [ 112   0   0   0  272   0   0   0  168   0  0   0   0    0  0  68    0    0    1    0    0  10   0  0   0  0  0]
     [   0   0   0   0    9   0   0   0    1   0  0   0   0    0  0   0    0    0    0    1   21   0   0  0   0  0  0]
     [  14   0  13   0    0   0   0   0   81   0  0   0   0    0  0   0   46    0    0    0   21   0   0  0   0  0  0]
     [  33   0   0   0   22   0   0   0    0   0  0   0   0    2  0  36    0    0    0    0    0   2   0  0   0  0  0]
     [ 117   0   7   0    0   0   3   0    0   0  0   0   0    0  0  22    0    0    0    0    2   3   0  0   0  0  0]]
    
    matriz de conteo:
    [[  1.77e-04  5.64e-02  7.81e-02  1.55e-01   2.48e-03  5.50e-03  9.94e-03  1.04e-02   1.42e-03  3.55e-03  0.00e+00  1.29e-01   5.57e-02  1.12e-01  4.79e-03  0.00e+00   1.38e-02  7.63e-03  1.33e-01  1.32e-01   3.73e-02  1.51e-02  1.13e-02  1.77e-04   4.79e-03  1.19e-02  6.75e-03]
     [  1.48e-01  0.00e+00  0.00e+00  0.00e+00   9.54e-02  0.00e+00  0.00e+00  0.00e+00   1.69e-01  8.87e-03  0.00e+00  2.04e-01   0.00e+00  2.21e-03  0.00e+00  6.21e-02   0.00e+00  0.00e+00  1.85e-01  7.43e-02   3.32e-03  4.43e-02  0.00e+00  0.00e+00   0.00e+00  1.10e-03  0.00e+00]
     [  1.18e-01  0.00e+00  1.91e-02  0.00e+00   8.81e-02  2.77e-04  0.00e+00  3.74e-02   2.95e-01  0.00e+00  5.54e-04  1.74e-02   0.00e+00  0.00e+00  0.00e+00  2.43e-01   0.00e+00  0.00e+00  2.27e-02  0.00e+00   4.82e-02  1.09e-01  0.00e+00  0.00e+00   0.00e+00  0.00e+00  0.00e+00]
     ...
     [  7.59e-01  0.00e+00  4.54e-02  0.00e+00   0.00e+00  0.00e+00  1.94e-02  0.00e+00   0.00e+00  0.00e+00  0.00e+00  0.00e+00   0.00e+00  0.00e+00  0.00e+00  1.42e-01   0.00e+00  0.00e+00  0.00e+00  0.00e+00   1.29e-02  1.94e-02  0.00e+00  0.00e+00   0.00e+00  0.00e+00  0.00e+00]]
    

    Instrucciones en Python

    # procesar un archivo de texto
    # Determinar la matriz de transición
    # para las letras del alfabeto(incluye ñ)
    import numpy as np
    
    # INGRESO
    # archivo=input('archivo a leer.txt: ')
    nombrearchivo =' eureka_poe_edgar_allan.txt'
    
    # PROCEDIMIENTO
    alfabeto = 'abcdefghijklmnñopqrstuvwxyz'
    k = len(alfabeto)
    matriz     = np.zeros(shape=(k,k),dtype=int)
    transicion =
    np.zeros(shape=(k,k),dtype=float)
    total = 0
    
    # procesa el archivo
    archivo  = open(nombrearchivo,'r')
    unalinea = archivo.readline()
    while not(unalinea == ''):
        unalinea = unalinea.strip('\n')
        unalinea = unalinea.lower()
        m = len(unalinea)
        for j in range(0,m-1,1):
            unsimbolo = unalinea[j]
            donde = alfabeto.find(unsimbolo)
            siguiente = unalinea[j+1]
            dondesig  = alfabeto.find(siguiente)
            if (donde>=0 and dondesig>=0):
                #Si no encuentra es negativo
                matriz[donde][dondesig] = matriz[donde][dondesig]+1
                total = total + 1
        unalinea = archivo.readline()
    archivo.close()
    
    # Determina matriz de transicion
    for i in range(0,k,1):
        suma = np.sum(matriz[i,:])
        transicion[i]=matriz[i,:]/suma
    
    # Salida
    print('matriz de conteo: ')
    print(matriz)
    print('matriz de transición:')
    print(transicion)
    np.savetxt('transicionletras.txt',matriz, fmt='%d')
    np.savetxt('transicionletrasfreq.txt',transicion)
  • Densidad espectral de Potencia de PM

    Referencia: León-García Ejemplo 10.2 p581, Gubner Ejemplo 10.21 p399

    Ejercicio

    Sea X(t) = a cos(ω t + Θ), donde Θ es uniforme en el intervalo (0,2π) Encontrar la autocovarianza de X(t).
    Encuentre la densidad espectral de potencia de SX(f):

    Solución

    S_X(f) = Fourier\{ R_X (\tau) \}


    Autocorrelación

    R_X (t_1,t_2) = E[(a \cos(\omega t_1 + \Theta)) (a \cos(\omega t_2 +\Theta))]

    Recordando que:

    E[g(x)] = \int_{-\infty}^{\infty} g(x) f(x) dx

    cos(x) cos(y) = \frac{cos(x-y) + cos(x+y) }{2}

    se tiene que:

    = \int_{-\pi}^{\pi} [a\cos(\omega t_1 + \Theta) a\ cos(\omega t_2 +\Theta)] \frac{1}{2\pi} d\Theta

    = \int_{-\pi}^{\pi} a^2 \frac{\cos(\omega (t_1 - t_2))+\cos(\omega (t_1 + t_2)+ 2\Theta)}{2} \frac{1}{2\pi} d\Theta

    = a^2 \int_{-\pi}^{\pi} \frac{cos(\omega (t_1 - t_2))}{2} \frac{1}{2\pi} d\Theta + a^2\int_{-\pi}^{\pi} \frac{cos(\omega (t_1 + t_2 )+ 2\Theta)}{2} \frac{1}{2\pi} d\Theta

    El primer integral, el coseno no depende de Θ, mientras que el segundo integral es semejante al intergral de la media y cuyo resultado es cero.

    = a^2 \left. \frac{cos(\omega (t_1 - t_2))}{2} \frac{\Theta}{2\pi} \right|_{-\pi}^{\pi} + 0

    R_X (t_1,t_2) = \frac{a^2}{2} cos(\omega (t_1 - t_2))

    R_X (t_1,t_2) = \frac{a^2}{2} cos(\omega \tau)


    La densidad espectral de potencia entonces es:

    S_X(f) = Fourier\{ R_X (\tau) \}

    = Fourier\{ \frac{a^2}{2} cos(\omega \tau) \}

    = \frac{a^2}{2} Fourier\{ cos(\omega \tau) \}

    = \frac{a^2}{2} Fourier\{ cos(2\pi f_0 \tau) \}

    usando las tablas de transformadas de Fourier:

    = \frac{a^2}{2} (\frac{1}{2}\delta (f-f_0) + \frac{1}{2} \delta (f+f_0))

    = \frac{a^2}{4} \delta (f-f_0) + \frac{a^2}{4} \delta (f+f_0))

    El promedio de potencia de la señal es RX(0) = a2/2.
    De toda esta potencia, se concentra en las frecuencias en f0 positiva y negativa, por lo que la densidad espectral de potencia en esta frecuencias es infinita.