{"id":17796,"date":"2017-02-03T09:05:24","date_gmt":"2017-02-03T14:05:24","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/fiec05058\/?p=17"},"modified":"2026-09-22T16:26:28","modified_gmt":"2026-09-22T21:26:28","slug":"senales-discretas","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/ss-u01\/senales-discretas\/","title":{"rendered":"1.2 Se\u00f1ales Discretas con 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=\"#inicio\">Inicio\/Ingreso<\/a><\/p>\n\n\n\n<p><a href=\"#procedimiento\">Procedimiento<\/a><\/p>\n\n\n\n<p><a href=\"#salida\">Salida<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">Gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">Algoritmo<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"580\" height=\"417\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/02\/senalDiscreta01.png\" alt=\"se\u00f1al Discreta gr\u00e1fica\" class=\"wp-image-18196\" \/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<h2 class=\"wp-block-heading\" id=\"ejercicio\">1. Ejercicio<\/h2>\n\n\n\n<p><strong><em>Referencia<\/em><\/strong>: Oppenheim 1.3.2 fig.1.25 p24, Lathi 1.3.1 p78, Hsu 1.2.A p1<\/p>\n\n\n\n<p>Las&nbsp;se\u00f1ales discretas tienen un dominio que se especifica \u00fanicamente para valores finitos de tiempo, generalmente definidos con n\u00fameros enteros. Por ejemplo, para una se\u00f1al discreta en un intervalo desde <strong>n<\/strong><sub>0<\/sub>, con <strong>m<\/strong> muestras, tama\u00f1o de paso 1, se genera una secuencia num\u00e9rica cuya gr\u00e1fica es:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\sin [\\omega n] <\/span>\n<\/div>\n<\/div>\n\n\n\n<p>El muestreo para cada valor <strong>n<\/strong> se establece en el&nbsp; intervalo <strong>[<\/strong>0, m<strong>)<\/strong> , para <strong>m<\/strong> muestras y con frecuencia <strong>\u03c9<\/strong> = 2\u03c0\/12 radianes\/segundo.<\/p>\n\n\n\n<p>Para el ejercicio se usa <strong>m<\/strong>=12<\/p>\n\n\n\n<p>Semejante a las gr\u00e1ficas de se\u00f1ales cont\u00ednua, el bloque de INICIO a\u00f1ade las librer\u00edas de Numpy y Matplotlib.<\/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=\"#inicio\">Inicio\/Ingreso<\/a><\/p>\n\n\n\n<p><a href=\"#procedimiento\">Procedimiento<\/a><\/p>\n\n\n\n<p><a href=\"#salida\">Salida<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">Gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">Algoritmo<\/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=\"inicio\">2. Inicio e Ingreso de par\u00e1metros<\/h2>\n\n\n\n<p>El bloque de INGRESO define los valores de los par\u00e1metros, la se\u00f1al f(x) en formato simplificado lambda, con variable independiente <strong>n<\/strong>, el punto inicial <strong>n<\/strong><sub>0<\/sub> y el n\u00famero de muestras <strong>m<\/strong> (recuerde contar el cero)<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# Se\u00f1ales discretas\nimport numpy as np\n\n# INGRESO - par\u00e1metros\nw  = 2*np.pi\/12\nfx = lambda n: np.sin(w*n)\n\nn0 = 0  # intervalo en un periodo\nmuestras = 12+1\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=\"#inicio\">Inicio\/Ingreso<\/a><\/p>\n\n\n\n<p><a href=\"#procedimiento\">Procedimiento<\/a><\/p>\n\n\n\n<p><a href=\"#salida\">Salida<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">Gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">Algoritmo<\/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=\"procedimiento\">3. Procedimiento<\/h2>\n\n\n\n<p>En el bloque de Procedimiento, los valores discretos de <strong>n<\/strong> se almacenan en un vector de tama\u00f1o <strong>m<\/strong>. La se\u00f1al se puede crear usando la funci\u00f3n <strong>sin<\/strong>() incluida en <code>numpy<\/code>.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; first-line: 11; title: ; notranslate\" title=\"\">\n# PROCEDIMIENTO\n# vector ni discreto &#x5B;n0,n0+muestras]\nni = np.arange(n0,n0+muestras,1)\n\nsenal = fx(ni)\n<\/pre><\/div>\n\n\n<p>Observe que los valores para <strong>n<\/strong> corresponden a una secuencia num\u00e9rica.<\/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=\"#inicio\">Inicio\/Ingreso<\/a><\/p>\n\n\n\n<p><a href=\"#procedimiento\">Procedimiento<\/a><\/p>\n\n\n\n<p><a href=\"#salida\">Salida<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">Gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">Algoritmo<\/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=\"salida\">4. Salida<\/h2>\n\n\n\n<p>El bloque de SALIDA puede mostrar los resultados en forma num\u00e9rica o gr\u00e1fica.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; first-line: 17; title: ; notranslate\" title=\"\">\n# SALIDA\nnp.set_printoptions(precision=4)\nprint('n: ')\nprint(ni)\nprint('se\u00f1al x&#x5B;n]: ')\nprint(senal)\n<\/pre><\/div>\n\n\n<pre class=\"wp-block-code\"><code>n: \n&#091; 0  1  2  3  4  5  6  7  8  9 10 11 12]\nse\u00f1al x&#091;n]: \n&#091; 0.0000e+00  5.0000e-01  8.6603e-01  1.0000e+00\n  8.6603e-01  5.0000e-01  1.2246e-16 -5.0000e-01\n -8.6603e-01 -1.0000e+00 -8.6603e-01 -5.0000e-01\n -2.4493e-16]<\/code><\/pre>\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=\"#inicio\">Inicio\/Ingreso<\/a><\/p>\n\n\n\n<p><a href=\"#procedimiento\">Procedimiento<\/a><\/p>\n\n\n\n<p><a href=\"#salida\">Salida<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">Gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">Algoritmo<\/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=\"grafica\">5. Gr\u00e1fica<\/h2>\n\n\n\n<p>Para observar el resultado de la se\u00f1al, se realiza la gr\u00e1fica <strong>n<\/strong><sub>i<\/sub> vs <strong>se\u00f1al<\/strong>[n], a\u00f1adiendo las etiquetas para cada eje, y mostrando el resultado con <code>plt.show()<\/code>.<\/p>\n\n\n\n<p>Se usa la gr\u00e1fica <strong>stem<\/strong>() para obtener en la gr\u00e1fica el punto y una l\u00ednea que muestre la magnitud, semejante a las gr\u00e1ficas de los libros de texto.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; first-line: 24; title: ; notranslate\" title=\"\">\n# GRAFICA\nimport matplotlib.pyplot as plt\ntitulo = 'Se\u00f1al Discreta'\n\nplt.stem(ni, senal)\n\n# entorno de grafica\nplt.xlabel('n')\nplt.ylabel('se\u00f1al x&#x5B;n]')\nplt.title(titulo)\nplt.grid()\nplt.tight_layout()\n\nplt.show()\n<\/pre><\/div>\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"580\" height=\"417\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/02\/senalDiscreta01.png\" alt=\"se\u00f1al Discreta gr\u00e1fica\" class=\"wp-image-18196\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Tarea<\/h3>\n\n\n\n<p>Para \u00e9sta secci\u00f3n, se cambiar\u00e1n los par\u00e1metros de <strong>n<\/strong> y <strong>\u03c9<\/strong>.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>muestras = 50<\/li>\n\n\n\n<li>\u03c9<sub>0<\/sub> = \u03c0\/4 y \u03c9<sub>0<\/sub> = 15\u03c0\/8<\/li>\n\n\n\n<li>cambiar la funci\u00f3n a np.cos()<\/li>\n\n\n\n<li>\u00bfse puede cambiar la amplitud de la se\u00f1al a 2 y \u03c9<sub>0<\/sub>=1\/6?<\/li>\n<\/ul>\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=\"#inicio\">Inicio\/Ingreso<\/a><\/p>\n\n\n\n<p><a href=\"#procedimiento\">Procedimiento<\/a><\/p>\n\n\n\n<p><a href=\"#salida\">Salida<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">Gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">Algoritmo<\/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=\"algoritmo\">6. Algoritmo en Python<\/h2>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# Se\u00f1ales discretas\nimport numpy as np\n\n# INGRESO - par\u00e1metros\nw  = 2*np.pi\/12\nfx = lambda n: np.sin(w*n)\n\nn0 = 0  # intervalo &#x5B;n0,n0+muestras]\nmuestras = 12+1\n\n# PROCEDIMIENTO\n# vector n de muestras &#x5B;n0,n0+muestras]\nni = np.arange(n0,n0+muestras,1)\n\nsenal = fx(ni)\n\n# SALIDA\nnp.set_printoptions(precision=4)\nprint('n: ')\nprint(ni)\nprint('se\u00f1al x&#x5B;n]: ')\nprint(senal)\n\n# GRAFICA\nimport matplotlib.pyplot as plt\ntitulo = 'Se\u00f1al Discreta'\n\nplt.stem(ni, senal)\n\n# entorno de grafica\nplt.xlabel('n')\nplt.ylabel('se\u00f1al x&#x5B;n]')\nplt.title(titulo)\nplt.grid()\nplt.tight_layout()\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=\"#inicio\">Inicio\/Ingreso<\/a><\/p>\n\n\n\n<p><a href=\"#procedimiento\">Procedimiento<\/a><\/p>\n\n\n\n<p><a href=\"#salida\">Salida<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">Gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">Algoritmo<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n","protected":false},"excerpt":{"rendered":"<p>Ejercicio Inicio\/Ingreso Procedimiento Salida Gr\u00e1fica Algoritmo 1. Ejercicio Referencia: Oppenheim 1.3.2 fig.1.25 p24, Lathi 1.3.1 p78, Hsu 1.2.A p1 Las&nbsp;se\u00f1ales discretas tienen un dominio que se especifica \u00fanicamente para valores finitos de tiempo, generalmente definidos con n\u00fameros enteros. Por ejemplo, para una se\u00f1al discreta en un intervalo desde n0, con m muestras, tama\u00f1o de paso [&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-17796","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\/17796","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=17796"}],"version-history":[{"count":9,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/17796\/revisions"}],"predecessor-version":[{"id":25949,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/17796\/revisions\/25949"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=17796"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=17796"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=17796"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}