{"id":299,"date":"2017-02-12T22:52:59","date_gmt":"2017-02-13T03:52:59","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/telg1001\/?p=299"},"modified":"2026-04-05T21:44:54","modified_gmt":"2026-04-06T02:44:54","slug":"sigma-delta-con-audio","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/ss-u01\/sigma-delta-con-audio\/","title":{"rendered":"1.10 Sigma-Delta con audio en Python"},"content":{"rendered":"\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#codificadorwav\">codificador wav-txt<\/a><\/p>\n\n\n\n<p><a href=\"#decodificadortxt\">decodificador txt-graf<\/a><\/p>\n\n\n\n<p><a href=\"#modulacion\">modula sen()<\/a><\/p>\n\n\n\n<p><a href=\"#codecft\">codec f(t)<\/a><\/p>\n\n\n\n<p><a href=\"#decofn\">deco f[n]<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"ejercicio\">1. Ejercicio<\/h2>\n\n\n\n<p>Usando los conceptos descritos para abrir un archivo de <a href=\"https:\/\/blog.espol.edu.ec\/ccpg1001\/archivos-de-audio-wav-abrir-extraer-una-porcion\/\">audio .wav<\/a>, realice en Python lo siguiente:<\/p>\n\n\n\n<p>a) Codificador: Realice la codificaci\u00f3n en \u2211\u0394 para el audio del ejemplo, y crear el archivo correspondiente al resultado.<\/p>\n\n\n\n<p>b) Decodificador: Reconstruya la se\u00f1al de audio a partir del archivo del literal anterior, de \u2211\u0394 a .wav, y pruebe su resultado ejecutando el archivo con un programa como \" Reproductor Multimedia\" de Windows<\/p>\n\n\n\n<figure class=\"wp-block-image alignright size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"453\" height=\"260\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/02\/Confucio_aprendi01.png\" alt=\"Confucio aprend\u00ed 01\" class=\"wp-image-19499\" \/><\/figure>\n\n\n\n<p>c) Realice las observaciones correspondientes al proceso realizado.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Trabajo extra, opcional<\/h3>\n\n\n\n<p>d) Cree un archivo de audio en formato .wav dictando una frase como la mostrada, y repita el proceso anterior.<\/p>\n\n\n\n<p>e) Realice las observaciones correspondientes al proceso realizado.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#codificadorwav\">codificador wav-txt<\/a><\/p>\n\n\n\n<p><a href=\"#decodificadortxt\">decodificador txt-graf<\/a><\/p>\n\n\n\n<p><a href=\"#modulacion\">modula sen()<\/a><\/p>\n\n\n\n<p><a href=\"#codecft\">codec f(t)<\/a><\/p>\n\n\n\n<p><a href=\"#decofn\">deco f[n]<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"codificadorwav\">2. Codificador Sigma-Delta<\/h2>\n\n\n\n<p>Se adjunta un algoritmo en Python de referencia al que hay que a\u00f1adir la parte de manejo del audio.<\/p>\n\n\n\n<p>- En el bloque de ingreso complete las instrucciones para leer el archivo. Observe los nombres de las variables.<\/p>\n\n\n\n<p>Algoritmo en Python<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# Modulacion Delta - Codificador de audio\n# entrada x(t), salida: ysalida&#x5B;n]\n# propuesta: edelros@espol.edu.ec\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport scipy.io.wavfile as waves\nimport scipy.signal as senal\n\n# INGRESO\n# archivo=......\n# fsonido, sonido = ......\n\n# PROCEDIMIENTO\n\n# Anal\u00f3gica de referencia\ndeltaT  = 1\/(2*np.pi*fsonido)\nxanalog = sonido&#x5B;:,0] # Canal izquierdo\nxmax    = np.max(xanalog)\nnsonido = len(xanalog)\nt0 = 0\ntn = nsonido*deltaT\nt  = np.arange(0,tn,deltaT)\n\n# Codificacion Sigma-Delta\nsalto  = 1 #usa todas las muestras sin saltar\ndeltaY = xmax\/\/10\nnd = nsonido\/\/salto\ntd = np.arange(0,nd,1) # eje tiempo&#x5B;n] digital\nxdigital = np.zeros(nd,dtype=float)\nysalida  = np.zeros(nd,dtype=int)\nmuestra  = xanalog&#x5B;0]\ni = 1\nwhile not(i &gt;= nd):\n    muestra = xanalog&#x5B;i*salto] # referencia anal\u00f3gica\n    diferencia = muestra-xdigital&#x5B;i-1]\n    if (diferencia&gt;0):\n        bit = 1\n    else:\n        bit = -1\n    xdigital&#x5B;i] = xdigital&#x5B;i-1]+bit*deltaY\n    ysalida&#x5B;i]  = bit\n    i = i + 1\nfsalida = fsonido\/salto\nparametros = np.array(&#x5B;deltaT,deltaY,fsalida])\n\n# SALIDA\nprint(ysalida)\nprint(parametros)\n\n# Graba archivo\nnp.savetxt('sigmadelta_datos.txt',ysalida,fmt='%i')\nnp.savetxt('sigmadelta_parametros.txt',parametros)\n\n# Grafico\n# Escala y RANGO ejex del gr\u00e1fico\na = int(nsonido*0.35)\nb = int(nsonido*0.355)\n\nplt.figure(1)       # define la grafica\nplt.suptitle('Codificador Sigma-Delta Audio.wav')\n\n# grafica de 3x1 y subgrafica 1\nplt.subplot(311)\nplt.ylabel('x(t)')\n# rango en el eje y\nxmax = np.max(xanalog)+0.1*np.max(xanalog)\nxmin = np.min(xanalog)-0.1*np.max(xanalog)\nplt.axis((a*deltaT, b*deltaT, xmin, xmax))\nplt.plot(t&#x5B;a:b],xanalog&#x5B;a:b], 'g')\nplt.ylabel('xanalogica&#x5B;n]')\n\n# grafica de 3x1 y subgrafica 2\nplt.subplot(312) \nplt.ylabel('xdigital&#x5B;n]')\n# rango en el eje\nmxa=np.max(xdigital&#x5B;a:b])\nmna=np.min(xdigital&#x5B;a:b])\nplt.axis((a,b,mxa,mna))\n#plt.plot(td,xdigital,'bo')\nplt.step(td&#x5B;a:b],xdigital&#x5B;a:b], where='post',color='m')\n\n# grafica de 3x1 y subgrafica 3\nplt.subplot(313) \nplt.ylabel('ysalida&#x5B;n]')\nplt.axis((a,b,-1.1,1.1))\nplt.step(td&#x5B;a:b],ysalida&#x5B;a:b], where='post',color='b')\nplt.show()\n<\/pre><\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#codificadorwav\">codificador wav-txt<\/a><\/p>\n\n\n\n<p><a href=\"#decodificadortxt\">decodificador txt-graf<\/a><\/p>\n\n\n\n<p><a href=\"#modulacion\">modula sen()<\/a><\/p>\n\n\n\n<p><a href=\"#codecft\">codec f(t)<\/a><\/p>\n\n\n\n<p><a href=\"#decofn\">deco f[n]<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"decodificadortxt\">3. Decodificador Sigma-Delta<\/h2>\n\n\n\n<p>El resultado gr\u00e1fico al decodificar el archivo de \u2211\u0394 se muestra, se debe a\u00f1adir la instrucci\u00f3n para generar el archivo de audio y poder escucharlo.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1155\" height=\"601\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/02\/SigmaDelta01.png\" alt=\"Sigma Delta 01\" class=\"wp-image-19501\" \/><\/figure>\n\n\n\n<p>modifique la seccion de #Salida para crear el arhivo de audio con nombre: 'sigmadeltaaudio.wav'.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# Modulacion Sigma-Delta Decodificador\n# entrada yentrada&#x5B;n], salida: x&#x5B;t]\n# propuesta:edelros@espol.edu.ec\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport scipy.io.wavfile as waves\n\n# INGRESO\narchivodatos = 'sigmadelta_datos.txt'\narchivoparam = 'sigmadelta_parametros.txt'\n\n# PROCEDIMIENTO\n# lectura de archivo\nyentrada = np.loadtxt(archivodatos,dtype=int)\ndatos    = np.loadtxt(archivoparam,dtype=float)\ndeltaD   = datos&#x5B;0]\ndeltaY   = datos&#x5B;1]\nfsonido  = datos&#x5B;2]\n# muestras para gr\u00e1fica\nk = len(yentrada) \n\n# Arreglos para datos\nxdigital = np.zeros(k, dtype='int16')\npunto    = np.zeros(k, dtype=int)\ntd       = np.zeros(k, dtype=float) # eje n digital\n\n# calcula los valores para digital\nxdigital&#x5B;0] = yentrada&#x5B;0]\npunto&#x5B;0] = 0\ntd&#x5B;0]    = 0\nfor i in range(1,k):\n    punto&#x5B;i] = i\n    td&#x5B;i]    = deltaD*i\n    xdigital&#x5B;i] = xdigital&#x5B;i-1]+yentrada&#x5B;i]*deltaY\n\n# SALIDA\nprint(xdigital)\n#Archivo de audio\n# CREAR EL ARCHIVO DE AUDIO ***********************\n\n#Gr\u00e1fico\na = int(k*0.25) # RANGO ejex del gr\u00e1fico\nb = int(k*0.252)\n\nplt.figure(1) # define la grafica\nplt.suptitle('Decodifica Sigma_Delta')\n\nplt.subplot(211) # grafica de 2x1 y subgrafica 1\nplt.ylabel('entrada: y&#x5B;n]')\nplt.axis((a,b,-1.1,1.1))\n#plt.plot(punto&#x5B;a:b],yentrada&#x5B;a:b],'b')\nplt.step(punto&#x5B;a:b],yentrada&#x5B;a:b], where='post', color='b')\n\nplt.subplot(212) # grafica de 2x1 y subgrafica 2\nplt.ylabel('salida: x&#x5B;t]')\nxmax = np.max(xdigital&#x5B;a:b]) # rango en el eje\nxmin = np.min(xdigital&#x5B;a:b])\nplt.axis((a*deltaD,b*deltaD,xmin,xmax))\n#plt.plot(td&#x5B;a:b],xdigital&#x5B;a:b],'m')\nplt.step(td&#x5B;a:b],xdigital&#x5B;a:b], where='post', color='m')\nplt.show()\n<\/pre><\/div>\n\n\n<p>La gr\u00e1fica muestra solo el intervalo de tiempo entre a=0.25 y b=0.252 del total de tiempo del audio, el prop\u00f3sito es la observaci\u00f3n visual complementar\u00e1 a la de escuchar el audio resultante.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#codificadorwav\">codificador wav-txt<\/a><\/p>\n\n\n\n<p><a href=\"#decodificadortxt\">decodificador txt-graf<\/a><\/p>\n\n\n\n<p><a href=\"#modulacion\">modula sen()<\/a><\/p>\n\n\n\n<p><a href=\"#codecft\">codec f(t)<\/a><\/p>\n\n\n\n<p><a href=\"#decofn\">deco f[n]<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"modulacion\">4. Sigma-Delta - Modulaci\u00f3n con Python<\/h2>\n\n\n\n<p><strong><em>Referencia<\/em><\/strong>: Leon-Couch, 3\u20138 Modulaci\u00f3n Delta, p.192 ; <a href=\"https:\/\/en.wikipedia.org\/wiki\/Delta-sigma_modulation\">Delta-sigma_modulation Wikipedia<\/a><\/p>\n\n\n\n<p>La modulaci\u00f3n Sigma-Delta (\u2211\u0394 ) codifica una se\u00f1al anal\u00f3gica a digital generando una secuencia de +1 y -1 (impulsos) que representan la diferencia entre la se\u00f1al anal\u00f3gica muestreada y la se\u00f1al digital acumulada. Tiene aplicaciones en sintetizadores de frecuencia, fuentes de poder conmutadas y controladores de motor.<\/p>\n\n\n\n<p>El sistema en diagrama de bloques en Simulink se muestra en la figura:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1249\" height=\"509\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/02\/FIEC05058_SigmaDelta_Bloques.png\" alt=\"FIEC05058 Sigma Delta Bloques\" class=\"wp-image-19502\" \/><\/figure>\n\n\n\n<p>La se\u00f1al de entrada (Sine Wave) se cuantifica en (Zero-Order Hold).<\/p>\n\n\n\n<p>Luego se obtiene el signo (sign) de la diferencia entre la se\u00f1al de entrada y la se\u00f1al digital acumulada (\u2211) que genera la secuencia de +1 y -1 en la salida del codificador.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"736\" height=\"572\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/02\/DeltaSigma04.png\" alt=\"Delta Sigma 04\" class=\"wp-image-19504\" \/><\/figure>\n\n\n\n<p>El valor de la ganancia \u0394=0.3 representa el valor del escal\u00f3n de subida o bajada de la se\u00f1al digital acumulada, representada en color magenta.<\/p>\n\n\n\n<p>La secuencia de salida +1 y -1, de nuevo acumulada en el decodificador, permite obtener una versi\u00f3n digital cercana a la se\u00f1al anal\u00f3gica inicial.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#codificadorwav\">codificador wav-txt<\/a><\/p>\n\n\n\n<p><a href=\"#decodificadortxt\">decodificador txt-graf<\/a><\/p>\n\n\n\n<p><a href=\"#modulacion\">modula sen()<\/a><\/p>\n\n\n\n<p><a href=\"#codecft\">codec f(t)<\/a><\/p>\n\n\n\n<p><a href=\"#decofn\">deco f[n]<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"codecft\">5. CODIFICADOR Sigma-Delta<\/h2>\n\n\n\n<p>La se\u00f1al de entrada para el ejemplo tiene frecuencia fs=1 Hz, \u0394=deltaY=0.3, rango [0,tn] hasta 2 segundos con divisiones k=40 en el rango de tiempo.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&gt;&gt;&gt; \nrango &#091;0,tn]:2\nSecciones en el rango k:40\n&#091; 0  1  1  1  1 -1  1 -1 -1 -1 -1 -1 -1 -1 -1\n  1 -1  1  1  1  1  1  1  1  1 -1  1 -1 -1 -1\n -1 -1 -1 -1 -1  1 -1  1  1  1]\n&#091;  0.05   0.3   40.  ]<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"736\" height=\"572\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/02\/DeltaSigma04.png\" alt=\"Delta Sigma 04\" class=\"wp-image-19504\" \/><\/figure>\n\n\n\n<p>El script genera la gr\u00e1fica y los archivos para datos y par\u00e1metros en formato texto.<\/p>\n\n\n\n<p>La se\u00f1al de entrada y los valores pueden ser modificados en el script adjunto:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# Modulacion Delta - Codificador\n# entrada x(t), salida: y&#x5B;n]\n# propuesta:edelros@espol.edu.ec\nimport numpy as np\nimport matplotlib.pyplot as plt\n\n# Definir la funcion de Entrada\ndef entradax(t,fs):\n    x = np.sin(2*np.pi*fs*t)\n    return(x)\n\n# PROGRAMA para la modulaci\u00f3n\n# INGRESO\nt0 = 0\ntn = float(input('rango &#x5B;0,tn]:'))\nk  = int(input('Secciones en el rango k:'))\n\n# PROCEDIMIENTO\n# Anal\u00f3gica Referencia\nfs = 1\nm  = 500  # puntos en eje t para gr\u00e1fico anal\u00f3gica\ndm = (tn-t0)\/m\nt  = np.arange(0,tn,dm)  # eje tiempo anal\u00f3gica\n\nxanalog = np.zeros(m, dtype=float)\nfor i in range(0,m):\n    xanalog&#x5B;i] = entradax(t&#x5B;i],fs)\n\n# Codificar Sigma-Delta\ndeltaY = 0.3          # Tama\u00f1o delta en eje Y\ndeltaT = (tn-t0)\/k    # Tama\u00f1o delta en eje tiempo\ntd     = np.arange(0,tn,deltaT)    # tiempo muestreo\nmuestra  = np.zeros(k, dtype=float) # anal\u00f3gica para comparar\nxdigital = np.zeros(k, dtype=float) # digital\nysalida  = np.zeros(k, dtype=int)   # Salida de +1|-1\n\ntd&#x5B;0] = t0\nmuestra&#x5B;0] = entradax(td&#x5B;0],fs)\nysalida&#x5B;0] = 0\nfor i in range(1,k):\n    muestra&#x5B;i] = entradax(td&#x5B;i],fs) # referencia anal\u00f3gica\n    diferencia = muestra&#x5B;i]-xdigital&#x5B;i-1]\n    if (diferencia&gt;0):\n        bit = 1\n    else:\n        bit = -1\n    xdigital&#x5B;i] = xdigital&#x5B;i-1]+bit*deltaY\n    ysalida&#x5B;i]  = bit\nparametros = np.array(&#x5B;deltaT,deltaY,k])\n\n# SALIDA\nprint(ysalida)\nprint(parametros)\nnp.savetxt('sigmadelta_datos.txt',ysalida,fmt='%i')\nnp.savetxt('sigmadelta_parametros.txt',parametros)\n\n# Graficar\nplt.figure(1)       # define la grafica\nplt.suptitle('Codificador Sigma-Delta')\n\nplt.subplot(211)    # grafica de 2x1 y subgrafica 1\nplt.ylabel('x(t), x&#x5B;n]')\nxmax=np.max(xanalog)+0.1*np.max(xanalog) # rango en el eje y\nxmin=np.min(xanalog)-0.1*np.max(xanalog)\nplt.axis((t0,tn,xmin,xmax)) # Ajusta ejes\nplt.plot(t,xanalog, 'g')\nplt.axis((t0,tn,xmin,xmax))\nplt.plot(td,xdigital,'bo')  # Puntos x&#x5B;n]\nplt.step(td,xdigital, where='post',color='m')\n\nplt.subplot(212)    # grafica de 2x1 y subgrafica 2\nplt.ylabel('y&#x5B;n]')\nplt.axis((0,k,-1.1,1.1))\nplt.plot(ysalida, 'bo')     # Puntos y&#x5B;n]\npuntos = np.arange(0,k,1)     #posicion eje x para escalon\nplt.step(puntos,ysalida, where='post')\n\nplt.show()\n<\/pre><\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#codificadorwav\">codificador wav-txt<\/a><\/p>\n\n\n\n<p><a href=\"#decodificadortxt\">decodificador txt-graf<\/a><\/p>\n\n\n\n<p><a href=\"#modulacion\">modula sen()<\/a><\/p>\n\n\n\n<p><a href=\"#codecft\">codec f(t)<\/a><\/p>\n\n\n\n<p><a href=\"#decofn\">deco f[n]<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"decofn\">6. Decodificador Sigma-Delta<\/h2>\n\n\n\n<p>Para observar el resultado, se decodifican los datos y se obtiene el siguiente resultado:<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>&gt;&gt;&gt;\nentrada: &#091; 0  1  1  1  1 -1  1 -1 -1 -1 -1 -1 -1 -1 -1\n           1 -1  1  1  1  1  1  1  1  1 -1  1 -1 -1 -1\n          -1 -1 -1 -1 -1  1 -1  1  1  1]\nsalida: \n&#091; 0.0000000e+00   3.0000000e-01   6.0000000e-01   9.0000000e-01\n  1.2000000e+00   9.0000000e-01   1.2000000e+00   9.0000000e-01\n  6.0000000e-01   3.0000000e-01  -1.1102230e-16  -3.0000000e-01\n -6.0000000e-01  -9.0000000e-01  -1.2000000e+00  -9.0000000e-01\n -1.2000000e+00  -9.0000000e-01  -6.0000000e-01  -3.0000000e-01\n -1.1102230e-16   3.0000000e-01   6.0000000e-01   9.0000000e-01\n  1.2000000e+00   9.0000000e-01   1.2000000e+00   9.0000000e-01\n  6.0000000e-01   3.0000000e-01  -1.1102230e-16  -3.0000000e-01\n -6.0000000e-01  -9.0000000e-01  -1.2000000e+00  -9.0000000e-01\n -1.2000000e+00  -9.0000000e-01  -6.0000000e-01  -3.0000000e-01]<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"704\" height=\"558\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/02\/DeltaSigma05.png\" alt=\"Delta Sigma 05\" class=\"wp-image-19505\" \/><\/figure>\n\n\n\n<p>realizado usando el siguiente script de python:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# Modulacion Sigma-Delta Decodificador\n#  entrada y&#x5B;n], salida: x&#x5B;n]\n# propuesta:edelros@espol.edu.ec\nimport numpy as np\nimport matplotlib.pyplot as plt\n\n# INGRESO\narchivodatos = 'sigmadelta_datos.txt'\narchivoparam = 'sigmadelta_parametros.txt'\n\n# PROCEDIMIENTO\n# Lectura de datos desde archivos\nyentrada = np.loadtxt(archivodatos,dtype=int)\ndatos    = np.loadtxt(archivoparam,dtype=float)\n\ndeltaT = datos&#x5B;0] # Tama\u00f1o delta en eje tiempo\ndeltaY = datos&#x5B;1] # Tama\u00f1o delta en eje Y\n\n# n\u00famero de muestras\nk = len(yentrada) \nxdigital = np.zeros(k, dtype=float)\npunto    = np.zeros(k, dtype=int)   # n\u00famero de muestra\ntd       = np.zeros(k, dtype=float) # tiempo muestreo\n\n# DECOdifica Sigma-Delta\nxdigital&#x5B;0] = yentrada&#x5B;0]\npunto&#x5B;0] = 0\ntd&#x5B;0]    = 0\nfor i in range(1,k):\n    punto&#x5B;i] = i\n    td&#x5B;i]    = deltaT*i\n    xdigital&#x5B;i] = xdigital&#x5B;i-1]+yentrada&#x5B;i]*deltaY\n\n# SALIDA\nprint('entrada:', yentrada)\nprint('salida:',xdigital,)\n\n# Graficar\nplt.figure(1)       # define la grafica\nplt.suptitle('Decodifica Sigma_Delta')\n\nplt.subplot(211)    # grafica de 2x1 y subgrafica 1\nplt.ylabel('entrada: y&#x5B;n]')\nplt.axis((0,k-1,-1.1,1.1)) # Ajusta ejes\nplt.plot(punto,yentrada,'bo') # Puntos y&#x5B;n]\nplt.step(punto,yentrada, where='post')\n\nplt.subplot(212)    # grafica de 2x1 y subgrafica 2\nplt.ylabel('salida: x&#x5B;t]')\n# rango en el eje y\nxmax = np.max(xdigital)+0.1*np.max(xdigital)\nxmin = np.min(xdigital)-0.1*np.max(xdigital)\nplt.axis((0,td&#x5B;k-1],xmin,xmax)) # Ajusta ejes\nplt.plot(td,xdigital,'bo')\nplt.step(td,xdigital, where='post', color='m')\n\nplt.show()\n<\/pre><\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">Tarea<\/h2>\n\n\n\n<p>Realice observaciones cambiando:<\/p>\n\n\n\n<p>a) la frecuencia de la se\u00f1al de entrada,<\/p>\n\n\n\n<p>b) el valor para deltaY<\/p>\n\n\n\n<p>c) el rango t<sub>n<\/sub><\/p>\n\n\n\n<p>d) el n\u00famero de secciones en el tiempo<\/p>\n\n\n\n<p>e) la forma de la se\u00f1al de entrada a triangular, diente de sierra, exponencial peri\u00f3dica, etc.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#codificadorwav\">codificador wav-txt<\/a><\/p>\n\n\n\n<p><a href=\"#decodificadortxt\">decodificador txt-graf<\/a><\/p>\n\n\n\n<p><a href=\"#modulacion\">modula sen()<\/a><\/p>\n\n\n\n<p><a href=\"#codecft\">codec f(t)<\/a><\/p>\n\n\n\n<p><a href=\"#decofn\">deco f[n]<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n","protected":false},"excerpt":{"rendered":"<p>Ejercicio codificador wav-txt decodificador txt-graf modula sen() codec f(t) deco f[n] 1. Ejercicio Usando los conceptos descritos para abrir un archivo de audio .wav, realice en Python lo siguiente: a) Codificador: Realice la codificaci\u00f3n en \u2211\u0394 para el audio del ejemplo, y crear el archivo correspondiente al resultado. b) Decodificador: Reconstruya la se\u00f1al de audio [&hellip;]<\/p>\n","protected":false},"author":8043,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"wp-custom-template-entrada-ss-unidades","format":"standard","meta":{"footnotes":""},"categories":[165],"tags":[],"class_list":["post-299","post","type-post","status-publish","format-standard","hentry","category-ss-u01"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/299","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/users\/8043"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/comments?post=299"}],"version-history":[{"count":7,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/299\/revisions"}],"predecessor-version":[{"id":23977,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/299\/revisions\/23977"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=299"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=299"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=299"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}