{"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-01-01T06:51:40","modified_gmt":"2026-01-01T11:51:40","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<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\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<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<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<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: 12; 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<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: 18; 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<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: 25; title: ; notranslate\" title=\"\">\n# Gr\u00e1ficas\nimport matplotlib.pyplot as plt\nplt.stem(ni, senal)\n\nplt.xlabel('n')\nplt.ylabel('se\u00f1al x&#x5B;n]')\nplt.grid()\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<h2 class=\"wp-block-heading\" id=\"algoritmo\">Algoritmo en Python<\/h2>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# Se\u00f1ales discretas\nimport numpy as np\nimport matplotlib.pyplot as plt\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# Gr\u00e1ficas\nplt.stem(ni, senal)\nplt.xlabel('n')\nplt.ylabel('se\u00f1al x&#x5B;n]')\nplt.grid()\nplt.show()\n<\/pre><\/div>","protected":false},"excerpt":{"rendered":"<p>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 1, se genera una secuencia num\u00e9rica cuya gr\u00e1fica [&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":6,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/17796\/revisions"}],"predecessor-version":[{"id":20674,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/17796\/revisions\/20674"}],"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}]}}