{"id":17795,"date":"2017-02-02T09:00:05","date_gmt":"2017-02-02T14:00:05","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/fiec05058\/?p=6"},"modified":"2026-01-01T06:47:31","modified_gmt":"2026-01-01T11:47:31","slug":"senales-continuas","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/ss-u01\/senales-continuas\/","title":{"rendered":"1.1 Se\u00f1ales Cont\u00ednuas con Python"},"content":{"rendered":"\n<p><strong><em>Referencia<\/em><\/strong>: Oppenheim 1.1 p1 pdf32, Lathi 1.3.1 p78, Hsu 1.2.A p1<\/p>\n\n\n\n<p>Un ejemplo cl\u00e1sico de una se\u00f1al cont\u00ednua es una de forma sinusoidal.<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\sin (\\omega t) <\/span>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"580\" height=\"416\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/02\/senalcontinua01.png\" alt=\"se\u00f1al cont\u00ednua gr\u00e1fica\" class=\"wp-image-18193\" \/><\/figure>\n\n\n\n<p>La funci\u00f3n de la se\u00f1al en el tiempo se define en el intervalo <strong>[<\/strong>t<sub>0<\/sub>, t<sub>n<\/sub><strong>)<\/strong> para <strong>n<\/strong> tramos y una frecuencia angular <strong>\u03c9<\/strong> en radianes\/segundo. Recordar que <strong>\u03c9<\/strong> = 2\u03c0<strong>f<\/strong>, siendo <strong>f<\/strong> la frecuencia en Hz o unidades de 1\/s, por si requiere hacer la conversi\u00f3n de frecuencias.<\/p>\n\n\n\n<p>Para facilitar la tarea, en Python se usan las librer\u00edas para el manejo de vectores y gr\u00e1ficas:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>vectores - Numpy<\/li>\n\n\n\n<li>gr\u00e1ficas - Matplotlib.pyplot<\/li>\n<\/ul>\n\n\n\n<p>Un resumen de <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-unidades\/fp-u08\/graficas-2d-linea\/\" data-type=\"post\" data-id=\"7956\">gr\u00e1ficas en 2D de l\u00ednea<\/a> se presenta tambi\u00e9n en el curso MATG1052 de m\u00e9todos num\u00e9ricos<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Se\u00f1ales Cont\u00ednuas y se\u00f1ales Discretas, gr\u00e1ficas con Python\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/mpaQe9HSWQc?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Inicio e Ingreso de par\u00e1metros<\/h2>\n\n\n\n<p>En el bloque de INICIO se a\u00f1aden las librer\u00edas Numpy y Matplotlib. Luego se definen los par\u00e1metros de la se\u00f1al a usar y se describe la se\u00f1al con la expresi\u00f3n matem\u00e1tica en su forma simplificada lambda.<\/p>\n\n\n\n<p>Se a\u00f1ade el intervalo de observaci\u00f3n y el n\u00famero de muestras para la gr\u00e1fica.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# Se\u00f1ales continuas\nimport numpy as np\n\n# INGRESO\nw  = 1\nfx = lambda t: np.sin(w*t)\n\nt0 = 0   # intervalo &#x5B;t0,tn]\ntn = 2*np.pi\nmuestras = 51\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\">Procedimiento - calcular valores<\/h2>\n\n\n\n<p>Para la gr\u00e1fica, las muestras de tiempo <strong>t<\/strong> se almacenan en un vector de tama\u00f1o <strong>n<\/strong>. Entre cada valor de <strong>t<\/strong> existe una diferencia <strong>dt<\/strong> determinada por <strong>n<\/strong>.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; first-line: 12; title: ; notranslate\" title=\"\">\n# PROCEDIMIENTO\n# vector de tiempo\nti = np.linspace(t0,tn,muestras)\n\n# se\u00f1al\nsenal = fx(ti)\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\">Salida - valores y gr\u00e1fica<\/h2>\n\n\n\n<p>El resultado puede ser observado de dos formas:<br>- mostrando sus valores o<br>- sus gr\u00e1ficas.<\/p>\n\n\n\n<p>Se presentan las dos opciones a escoger.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; first-line: 19; highlight: [20]; title: ; notranslate\" title=\"\">\n# SALIDA\nnp.set_printoptions(precision = 4)\nprint('tiempo: ')\nprint(ti)\nprint('se\u00f1al: x(t) ')\nprint(senal)\n<\/pre><\/div>\n\n\n<pre class=\"wp-block-code\"><code>tiempo: \n&#091;0.     0.1257 0.2513 0.377  0.5027 0.6283 0.754 \n 0.8796 1.0053 1.131  1.2566 1.3823 1.508  1.6336\n 1.7593 1.885  2.0106 2.1363 2.2619 2.3876 2.5133\n 2.6389 2.7646 2.8903 3.0159 3.1416 3.2673 3.3929\n 3.5186 3.6442 3.7699 3.8956 4.0212 4.1469 4.2726\n 4.3982 4.5239 4.6496 4.7752 4.9009 5.0265 5.1522\n 5.2779 5.4035 5.5292 5.6549 5.7805 5.9062 6.0319\n 6.1575]\nse\u00f1al: x(t) \n&#091; 0.0000e+00  1.2533e-01  2.4869e-01  3.6812e-01\n  4.8175e-01  5.8779e-01  6.8455e-01  7.7051e-01\n  8.4433e-01  9.0483e-01  9.5106e-01  9.8229e-01\n  9.9803e-01  9.9803e-01  9.8229e-01  9.5106e-01\n  9.0483e-01  8.4433e-01  7.7051e-01  6.8455e-01\n  5.8779e-01  4.8175e-01  3.6812e-01  2.4869e-01\n  1.2533e-01 -3.2162e-16 -1.2533e-01 -2.4869e-01\n -3.6812e-01 -4.8175e-01 -5.8779e-01 -6.8455e-01\n -7.7051e-01 -8.4433e-01 -9.0483e-01 -9.5106e-01\n -9.8229e-01 -9.9803e-01 -9.9803e-01 -9.8229e-01\n -9.5106e-01 -9.0483e-01 -8.4433e-01 -7.7051e-01\n -6.8455e-01 -5.8779e-01 -4.8175e-01 -3.6812e-01\n -2.4869e-01 -1.2533e-01]<\/code><\/pre>\n\n\n\n<p>Para observar el resultado de la se\u00f1al, se realiza la gr\u00e1fica <strong>t<\/strong> vs <strong>se\u00f1al<\/strong>. Para mejor identificaci\u00f3n de ejes, se a\u00f1ade las etiquetas y las l\u00edneas de referencia.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; first-line: 26; title: ; notranslate\" title=\"\">\n# Gr\u00e1fica\nimport matplotlib.pyplot as plt\nplt.plot(ti,senal)\nplt.axhline(0, color='gray')\nplt.axvline(0, color='gray')\nplt.xlabel('t')\nplt.ylabel('se\u00f1al x(t)')\nplt.grid()\nplt.show()\n<\/pre><\/div>\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"580\" height=\"416\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/02\/senalcontinua01.png\" alt=\"se\u00f1al cont\u00ednua gr\u00e1fica\" class=\"wp-image-18193\" \/><\/figure>\n\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>Para \u00e9sta secci\u00f3n, se cambiar\u00e1n los par\u00e1metros de tiempo.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>tn=8\u03c0<\/li>\n\n\n\n<li>\u03c9=2<\/li>\n\n\n\n<li>cambiar la funci\u00f3n a <code>np.cos()<\/code><\/li>\n\n\n\n<li>\u00bfse puede cambiar la amplitud de la se\u00f1al a 4?<\/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 continuas\nimport numpy as np\nimport matplotlib.pyplot as plt\n\n# INGRESO\nw  = 1\nfx = lambda t: np.sin(w*t)\n\nt0 = 0   # intervalo &#x5B;t0,tn]\ntn = 2*np.pi\nmuestras = 51\n\n# PROCEDIMIENTO\n# vector de tiempo\nti = np.linspace(t0,tn,muestras)\n\n# se\u00f1al\nsenal = fx(ti)\n\n# SALIDA\nnp.set_printoptions(precision = 4)\nprint('tiempo: ')\nprint(ti)\nprint('se\u00f1al: x(t) ')\nprint(senal)\n\n# Gr\u00e1fica\nplt.plot(ti,senal)\nplt.axhline(0, color='gray')\nplt.axvline(0, color='gray')\nplt.xlabel('t')\nplt.ylabel('se\u00f1al x(t)')\nplt.grid()\nplt.show()\n<\/pre><\/div>","protected":false},"excerpt":{"rendered":"<p>Referencia: Oppenheim 1.1 p1 pdf32, Lathi 1.3.1 p78, Hsu 1.2.A p1 Un ejemplo cl\u00e1sico de una se\u00f1al cont\u00ednua es una de forma sinusoidal. La funci\u00f3n de la se\u00f1al en el tiempo se define en el intervalo [t0, tn) para n tramos y una frecuencia angular \u03c9 en radianes\/segundo. Recordar que \u03c9 = 2\u03c0f, siendo f [&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-17795","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\/17795","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=17795"}],"version-history":[{"count":9,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/17795\/revisions"}],"predecessor-version":[{"id":20670,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/17795\/revisions\/20670"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=17795"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=17795"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=17795"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}