{"id":91,"date":"2024-10-13T07:06:01","date_gmt":"2024-10-13T12:06:01","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/telg1034\/?p=91"},"modified":"2026-03-30T11:06:34","modified_gmt":"2026-03-30T16:06:34","slug":"senales-suma-por-fasores","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/dsp-unidades\/senales-suma-por-fasores\/","title":{"rendered":"1.3 Se\u00f1al - Suma por Fasores de igual frecuencia con Sympy-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=\"#fasores\">fasores<\/a><\/p>\n\n\n\n<p><a href=\"#ejemplo\">ejemplo<\/a><\/p>\n\n\n\n<p><a href=\"#analitico\">anal\u00edtico<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#funcion\">funci\u00f3n<\/a><\/p>\n\n\n\n<p><a href=\"#graficainteractiva\">interactiva<\/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=\"fasores\">1. Suma por Fasores<\/h2>\n\n\n\n<p><em><strong>Referencia<\/strong><\/em>: McClellan 2.6 p48<\/p>\n\n\n\n<p>Con <strong>se\u00f1ales de igual frecuencia<\/strong> en el mismo medio de transmisi\u00f3n las se\u00f1ales se suman. Una forma simplificada de sumar se\u00f1ales con diferente amplitud, fase e igual frecuencia es por medio de <strong>fasores<\/strong> , considerando:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> x(t) = \\sum_{k=1}^{N} A_k \\cos(\\omega_0 t + \\varphi_k) = A \\cos(\\omega_0 t + \\varphi) <\/span>\n\n\n\n<p>Se puede representar los cosenos en forma compleja<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> A \\cos(\\omega_0 t + \\varphi) = \\Re \\Big\\{ A e^{j(\\omega_0 t + \\varphi)} \\Big\\} = \\Re \\Big \\{ A e^{j\\varphi} e^{j \\omega_0 t} \\Big\\} <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\sum_{k=1}^{N} A_k e^{j\\varphi_k} = A e^{j \\varphi} <\/span>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2024\/11\/senalSumaFasores01_animate.gif\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"600\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2024\/11\/senalSumaFasores01_animate.gif\" alt=\"se\u00f1al Suma Fasores 01 animate\" class=\"wp-image-550\" \/><\/a><\/figure>\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=\"#fasores\">fasores<\/a><\/p>\n\n\n\n<p><a href=\"#ejemplo\">ejemplo<\/a><\/p>\n\n\n\n<p><a href=\"#analitico\">anal\u00edtico<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#funcion\">funci\u00f3n<\/a><\/p>\n\n\n\n<p><a href=\"#graficainteractiva\">interactiva<\/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=\"ejemplo\">2. Ejemplo - regla de suma de fasores<\/h2>\n\n\n\n<p><em><strong>Referencia<\/strong><\/em>: McClellan 2.6.3 p51<\/p>\n\n\n\n<p>Sumar dos se\u00f1ales sinusoidales de igual frecuencia usando fasores:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> x_1 (t) = 1.7\\cos(20 \\pi t + 70\\pi \/ 180) <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> x_2 (t) = 1.9\\cos(20 \\pi t + 200\\pi \/ 180) <\/span>\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=\"#fasores\">fasores<\/a><\/p>\n\n\n\n<p><a href=\"#ejemplo\">ejemplo<\/a><\/p>\n\n\n\n<p><a href=\"#analitico\">anal\u00edtico<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#funcion\">funci\u00f3n<\/a><\/p>\n\n\n\n<p><a href=\"#graficainteractiva\">interactiva<\/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=\"analitico\">3. Desarrollo anal\u00edtico<\/h2>\n\n\n\n<p>La frecuencia es 10 Hz para ambas se\u00f1ales.<br>Las suma de x<sub>1<\/sub>(t) + x<sub>2<\/sub>(t) mediante fasores tiene cuatro pasos:<\/p>\n\n\n\n<p>1. cada se\u00f1al se escribe usando fasores:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> X_1 = 1.7e^{j 70\\pi \/ 180} <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> X_2 = 1.9e^{j 200\\pi \/ 180} <\/span>\n\n\n\n<p>2. cada fasor se escribe en forma compleja (rectangular):<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> X_1 = 0.5814 + j 1.5975 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> X_2 = -1.7854 - j 0.6498 <\/span>\n\n\n\n<p>3. se suman las partes reales e imaginarias<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> X_3 = X_1 + X_2 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> = (0.5814 + j 1.5975) + (-1.7854 - j 0.6498) <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> = -1.204 + j 0.9477 <\/span>\n\n\n\n<p>4.Se reescribe a la forma polar y luego a senoidal con la frecuencia de las se\u00f1ales<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> X_3 = 1.5322 e^{j 141.79\\pi\/180} <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> x_3(t) = 1.5322\\cos(20\\pi t +141.79\\pi \/180)<\/span>\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=\"#fasores\">fasores<\/a><\/p>\n\n\n\n<p><a href=\"#ejemplo\">ejemplo<\/a><\/p>\n\n\n\n<p><a href=\"#analitico\">anal\u00edtico<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#funcion\">funci\u00f3n<\/a><\/p>\n\n\n\n<p><a href=\"#graficainteractiva\">interactiva<\/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\">4. Algoritmo con Sympy<\/h2>\n\n\n\n<p>Las se\u00f1ales en el bloque de ingreso son:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>x1 = 1.7*sym.cos(20*pi*t+70*pi\/180)\nx2 = 1.9*sym.cos(20*pi*t+200*pi\/180)<\/code><\/pre>\n\n\n\n<p>Desarrollando solo para x<sub>1<\/sub>(t) se obtienen los par\u00e1metros de un t\u00e9rmino coseno,<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>x1_args = dsp.cos_args_one_term(x1)\namplitud = x1_args&#091;<span style=\"color: #008000\">'amplitud'<\/span>]\nfase = x1_args&#091;<span style=\"color: #008000\">'fase'<\/span>]<\/code><\/pre>\n\n\n\n<p>El fasor se obtiene escribiendo las expresiones con amplitud y fase,<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>fasor1 = amplitud*sym.exp(I*fase)<\/code><\/pre>\n\n\n\n<p>para la forma de n\u00fameros complejos, se usa <code>sym.expand(fasor1,complex=True)<\/code>,<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>&gt;&gt;&gt; fasor1\n1.7*exp(7*I*pi\/18)\n&gt;&gt;&gt; sym.expand(fasor1,complex=True)\n1.7*cos(7*pi\/18) + 1.7*I*sin(7*pi\/18)\n&gt;&gt;&gt; sym.expand(fasor1,complex=True).evalf()\n0.581434243653637 + 1.59747745533604*I\n&gt;&gt;&gt; \n<\/code><\/pre>\n\n\n\n<p>sin embargo la expresi\u00f3n muestra el cos() para la parte real y sin() para la imaginaria. La expresi\u00f3n las eval\u00faa la funciones senoidales a\u00f1adiendo <code>.evalf()<\/code> al final de la instrucci\u00f3n, quedando la instrucci\u00f3n de la siguiente forma:<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>fasor1_complex = sym.expand(fasor1,<span style=\"color: #ff00ff\">complex<\/span>=<span style=\"color: #d35400\">True<\/span>).evalf()<\/code><\/pre>\n\n\n\n<p>El proceso se repite para la se\u00f1al x<sub>2<\/sub>(t) para luego sumar los fasores en forma compleja, siempre y cuando las frecuencias sean iguales.<\/p>\n\n\n\n<p>Para mantener la amplitud del fasor_suma con signo positivo, evitando que Sympy simplifique la fase con \u03c0 se usa la instrucci\u00f3n <code>sym.UnevaluatedExpr(fase)<\/code>.<\/p>\n\n\n\n<p>El resultado del algoritmo se muestra a continuaci\u00f3n:<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>fasor1: 1.7*exp(7*I*pi\/18)\nfasor1_complex: 0.581434243653637 + 1.59747745533604*I\nfasor2: 1.9*exp(-8*I*pi\/9)\nfasor2_complex: -1.78541597949323 - 0.649838272318771*I\nfasor_suma_complex: -1.20398173583959 + 0.947639183017274*I\nfasor_suma: 1.53218538089389*exp(-0.666817831701547 + pi)\nx_suma: 1.53218538089389*cos(10*t*(2*pi) - (0.666817831701547 + pi))\n&gt;&gt;&gt;<\/code><\/pre>\n\n\n\n<p>Las instrucciones en Python son:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# ejemplo 2.6.3 p52 Suma de Fasores y graf_polar\n# telg1034 DSP fiec-espol edelros@espol.edu.ec\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport sympy as sym\nimport telg1034 as dsp\n\n# variables continuas\nfrom telg1034 import t,A,w,f,p,pi,DosPi,I,equivalentes\n\n# INGRESO\nx1 = 1.7*sym.cos(20*pi*t+70*pi\/180)\nx2 = 1.9*sym.cos(20*pi*t+200*pi\/180)\n\n# PROCEDIMIENTO\n# se\u00f1al x1\nx1_args = dsp.cos_args_one_term(x1)\namplitud = x1_args&#x5B;'amplitud']\nfase = x1_args&#x5B;'fase']\nfasor1 = amplitud*sym.exp(I*fase)\n# fasor n\u00fameros complejos\nfasor1_complex = sym.expand(fasor1,complex=True).evalf()\n\n# se\u00f1al x2\nx2_args = dsp.cos_args_one_term(x2)\namplitud = x2_args&#x5B;'amplitud']\nfase = x2_args&#x5B;'fase']\nfasor2 = amplitud*sym.exp(I*fase)\n# fasor n\u00fameros complejos\nfasor2_complex = sym.expand(fasor2,complex=True).evalf()\n\n# suma de fasores de x1(t) y x2(t) en la misma freq\nif x1_args&#x5B;'freq_Hz'] == x2_args&#x5B;'freq_Hz']:\n    freq_iguales = True\n    fasorsum_complex = fasor1_complex + fasor2_complex\n    \n    amplitud = sym.Abs(fasorsum_complex)\n    fase = sym.arg(fasorsum_complex)\n        \n    fasor_suma = amplitud*sym.exp(sym.UnevaluatedExpr(fase))\n    x_suma = amplitud*sym.cos(DosPi*x1_args&#x5B;'freq_Hz']*t+sym.UnevaluatedExpr(fase))\n    x_suma_args = dsp.cos_args_one_term(x_suma)\n    \nelse: # diferentes frecuencias\n    freq_iguales = False\n    fasorsum_complex = 0+0j\n    fasor_suma = fasor1 +fasor2\n    x_suma = x1+x2\n\n# SALIDA\nprint('fasor1:',fasor1)\nprint('fasor1_complex:',fasor1_complex)\nprint('fasor2:',fasor2)\nprint('fasor2_complex:',fasor2_complex)\nif freq_iguales:\n    print('fasor_suma_complex:',fasorsum_complex)\n    print('fasor_suma:',fasor_suma)\nelse:\n    print('  las frecuencias no son iguales en x1(t) y x2(t)')\nprint('x_suma:',x_suma)\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=\"#fasores\">fasores<\/a><\/p>\n\n\n\n<p><a href=\"#ejemplo\">ejemplo<\/a><\/p>\n\n\n\n<p><a href=\"#analitico\">anal\u00edtico<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#funcion\">funci\u00f3n<\/a><\/p>\n\n\n\n<p><a href=\"#graficainteractiva\">interactiva<\/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 de fasores<\/h2>\n\n\n\n<p>La gr\u00e1fica de fasores es de tipo polar con flechas que parten desde el centro y se dibujan usando la amplitud y fase por cada fasor.<\/p>\n\n\n\n<p>Primero se genera la lista de <code>x_amplitud<\/code> y <code>x_fase<\/code>, la suma se a\u00f1ade solamente si las se\u00f1ales son de igual frecuencia.<\/p>\n\n\n\n<p>La forma polar de la gr\u00e1fica se indica con <code>projection='polar'<\/code> al definir el sub-gr\u00e1fico. Como referencia se a\u00f1ade puntos al final de cada fasor y se diferencian al usar un color diferente.<\/p>\n\n\n\n<p>La instrucci\u00f3n de flechas, requiere el punto de partida (<code>0,0<\/code>) y el punto de llegada para cada fasor (<code>x_fase[i],x_amplitud[i]<\/code>).<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"433\" height=\"459\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2024\/11\/senalSumaFasores01.png\" alt=\"se\u00f1al Suma Fasores 01\" class=\"wp-image-20561\" \/><\/figure>\n\n\n\n<p>Las etiquetas del gr\u00e1fico se muestran en radianes<br><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Instrucciones adicionales para la gr\u00e1fica polar<\/h3>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# GRAFICA de suma de fasores\nx_etiqueta = &#x5B;'x1(t)','x2(t)']\nx_amplitud = &#x5B;float(x1_args&#x5B;'amplitud']),\n              float(x2_args&#x5B;'amplitud'])]\nx_fase = &#x5B;float(x1_args&#x5B;'fase']),\n          float(x2_args&#x5B;'fase'])]\nif freq_iguales:\n        x_amplitud.append(float(x_suma_args&#x5B;'amplitud']))\n        x_fase.append(float(x_suma_args&#x5B;'fase']))\n        x_etiqueta.append('x_suma')\n\n# graficar\nfig_polar  = plt.figure()\ngraf_polar = fig_polar.add_subplot(projection='polar')\npunto = graf_polar.plot(x_fase,x_amplitud,'o',xunits='radians')\nfor i in range(0,len(x_amplitud),1):\n    if (i&lt;=9): # color de la l\u00ednea\n        lineacolor = 'C'+str(i)\n    else:\n        numcolor = i%10\n        lineacolor = 'C'+str(numcolor)\n    graf_polar.quiver(0,0,x_fase&#x5B;i],x_amplitud&#x5B;i],\n                      angles='xy', scale_units='xy', scale=1,\n                      label = x_etiqueta&#x5B;i],\n                      color = lineacolor)\n# actualiza etiquetas de gr\u00e1fico polar\netiquetas = &#x5B;'0', r'$\\pi$\/4', r'$\\pi$\/2',r'3$\\pi$\/4',\n             r'$\\pi$',r'5$\\pi$\/4',r'3$\\pi$\/2',r'7$\\pi$\/4']\ndtheta = int(360\/len(etiquetas))\nlines, labels = plt.thetagrids(range(0, 360,dtheta),\n                               etiquetas)\ngraf_polar.set_title('Fasores Xk a '+str(x1_args&#x5B;'freq_Hz'])+ ' Hz')\ngraf_polar.legend()\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=\"#fasores\">fasores<\/a><\/p>\n\n\n\n<p><a href=\"#ejemplo\">ejemplo<\/a><\/p>\n\n\n\n<p><a href=\"#analitico\">anal\u00edtico<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#funcion\">funci\u00f3n<\/a><\/p>\n\n\n\n<p><a href=\"#graficainteractiva\">interactiva<\/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=\"funcion\">6. Funci\u00f3n<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">6.1 Incorporar par\u00e1metro fasor a dsp.cos_args_one_term()<\/h3>\n\n\n\n<p>El fasor puede considerarse como parte de los par\u00e1metros de una se\u00f1al, por lo que el c\u00e1lculo se incorpora a la instrucci\u00f3n <code>dsp.cos_args_one_term()<\/code> como par\u00e1metro: <code>'fasor'<\/code> y <code>'fasor_complex'<\/code>.<\/p>\n\n\n\n<p>La disponibilidad del par\u00e1metro <code>'fasor'<\/code> puede facilitar las operaciones de suma de se\u00f1ales de igual frecuencia cuando se usen mas componentes de la se\u00f1al. La simplificaci\u00f3n del algoritmo se muestra en el siguiente ejercicio:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">6.2 Ejercicio<\/h3>\n\n\n\n<p><em><strong>Referencia<\/strong><\/em>: McClellan ejercicio 2.8 p54<\/p>\n\n\n\n<p>Considere las dos se\u00f1ales:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> x_1 (t) = 5\\cos(2 \\pi (100) t + \\pi \/3) <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> x_2 (t) = 4\\cos(2 \\pi(100) t + \\pi \/ 4) <\/span>\n\n\n\n<p>6.3 Algoritmo en Python<\/p>\n\n\n\n<p>Considerando que se pueden usar mas <strong>se\u00f1ales de igual frecuencia<\/strong> para sumar los fasores, se procede a usar <code>x_senales<\/code> como una lista de se\u00f1ales a ser analizada, junto a <code>x_etiqueta<\/code> con las etiquetas para las gr\u00e1ficas.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><span style=\"color: #ff0000\"># INGRESO<\/span>\nx1 = 5*sym.cos(DosPi*100*t + pi\/3)\nx2 = 4*sym.cos(DosPi*100*t - pi\/4)\n\nx_senales = &#091;x1,x2] <span style=\"color: #ff0000\"># sumar fasores de igual frecuencia<\/span>\nx_etiqueta = &#091;<span style=\"color: #008000\">'x1(t)'<\/span>,<span style=\"color: #008000\">'x2(t)'<\/span>]<\/code><\/pre>\n\n\n\n<p>La revisi\u00f3n de las frecuencias de cada se\u00f1al se realiza con el diccionario <code>x_freq<\/code> que tendra el <code>'conteo'<\/code> de se\u00f1ales con la misma frecuencia y <code>'fasor_complex'<\/code> que se acumular\u00e1 cada vez que se encuentre una se\u00f1al de igual frecuencia en la lista <code>x_senales<\/code>.<\/p>\n\n\n\n<p>Luego se realiza una revisi\u00f3n de las frecuencias que tienen <code>conteo&gt;1<\/code> para generar la senal <code>x_suma<\/code> y a\u00f1adir a la lista <code>x_senales<\/code> con la etiqueta correspondiente en <code>x_etiqueta<\/code>. Se debe actualizar el <code>x_conteo<\/code> que es usado para enumerar las gr\u00e1ficas.<\/p>\n\n\n\n<p>La salida del algoritmo para el ejercicio se presenta como:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>freq_Hz: 100\n  conteo : 2\n  fasor_complex : 5.32842712474619 + 1.501699894176*I\n  senal : 5.53599477925144*cos(100*t*(2*pi) + 0.27470298976466)<\/code><\/pre>\n\n\n\n<p>Las simplificaci\u00f3n del algoritmo usando la funci\u00f3n actualizada y las se\u00f1ales en una lista se muestran a continuaci\u00f3n:<\/p>\n\n\n\n<p>Instrucciones en Python.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# ejercicio 2.8 p54 Suma de Fasores y graf_polar\n# telg1034 DSP fiec-espol edelros@espol.edu.ec\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport sympy as sym\nimport telg1034 as dsp\n\n# variables continuas\nfrom telg1034 import t,A,w,f,p,pi,DosPi,I,equivalentes\n\n# INGRESO\nx1 = 5*sym.cos(DosPi*100*t + pi\/3)\nx2 = 4*sym.cos(DosPi*100*t - pi\/4)\n\nx_senales = &#x5B;x1,x2] # sumar fasores de igual frecuencia\nx_etiqueta = &#x5B;'x1(t)','x2(t)']\n\n# PROCEDIMIENTO\nx_conteo = len(x_senales)\n# sumar fasores por frecuencias iguales\nx_freq = {}\nfor unasenal in x_senales:\n    xk_args = dsp.cos_args_one_term(unasenal)    \n    freq_k = xk_args&#x5B;'freq_Hz']\n    fasor_complex_k = xk_args&#x5B;'fasor_complex']\n    if freq_k in x_freq: # sumar fasores en la freq_k\n        x_freq&#x5B;freq_k]&#x5B;'conteo'] = x_freq&#x5B;freq_k]&#x5B;'conteo'] + 1\n        fasor_complex = x_freq&#x5B;freq_k]&#x5B;'fasor_complex']\n        x_freq&#x5B;freq_k]&#x5B;'fasor_complex'] = fasor_complex + fasor_complex_k\n    else: # primer fasor en freq_k\n        x_freq&#x5B;freq_k] = {}\n        x_freq&#x5B;freq_k]&#x5B;'conteo'] = 1\n        x_freq&#x5B;freq_k]&#x5B;'fasor_complex'] = fasor_complex_k\n\n# se\u00f1al x_suma(t) por frecuencias \nfor unafreq in x_freq:\n    if x_freq&#x5B;unafreq]&#x5B;'conteo']&gt;1: # existe x_suma\n        fasor_complex = x_freq&#x5B;unafreq]&#x5B;'fasor_complex']\n        amplitud = sym.Abs(fasor_complex)\n        fase = sym.arg(fasor_complex)\n        fasor_suma = amplitud*sym.exp(sym.UnevaluatedExpr(fase))\n        x_suma = amplitud*sym.cos(DosPi*unafreq*t+sym.UnevaluatedExpr(fase))\n        x_freq&#x5B;unafreq]&#x5B;'senal'] = x_suma\n        # actualiza lista de se\u00f1ales\n        x_senales.append(x_suma)\n        x_etiqueta.append('x_'+str(unafreq)+'Hz')\n        x_conteo = len(x_senales)\n\n# SALIDA\nfor unafreq in x_freq:\n    print('freq_Hz:',unafreq)\n    for unparametro in x_freq&#x5B;unafreq]:\n        print(' ',unparametro,':', x_freq&#x5B;unafreq]&#x5B;unparametro])\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\">6.4 funciones para gr\u00e1ficas<\/h3>\n\n\n\n<p>En el desarrollo de las gr\u00e1ficas una operaci\u00f3n recurrente es encontrar el periodo m\u00e1ximo <code>T_max<\/code>, por lo que <code>periodo_minmax(x_freq)<\/code> que se incorpora a <code>telg1034.py<\/code>.<\/p>\n\n\n\n<p>De forma semejante se requiere un color diferente por cada componente de se\u00f1al en <code>x_senales<\/code> dado por su \u00edndice en la lista con la funci\u00f3n auxiliar . De esa forma se facilita la identificaci\u00f3n entre la gr\u00e1fica de fasores y la gr\u00e1fica de tiempo <code>_graf_lineacolor_i(i)<\/code>.<\/p>\n\n\n\n<p>Para las gr\u00e1ficas de la suma de fasores y se\u00f1ales en tiempo se requiere realizar las listas de par\u00e1metros para cada gr\u00e1fica.<\/p>\n\n\n\n<p>Se destaca la relaci\u00f3n entre las gr\u00e1fica de fasores y en tiempo al rotar graf_polar como se muestra en la imagen.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"994\" height=\"427\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2024\/11\/senalSumaFasores02.png\" alt=\"se\u00f1al Suma Fasores02\" class=\"wp-image-20562\" \/><\/figure>\n\n\n\n<p>Realizando la rotaci\u00f3n de graf_polar con \u03c0\/2, se obtiene:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2024\/11\/senalSumaFasores04.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"600\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2024\/11\/senalSumaFasores04.png\" alt=\"se\u00f1al Suma Fasores 04\" class=\"wp-image-549\" \/><\/a><\/figure>\n\n\n\n<p>Instrucciones adicionales para las gr\u00e1ficas<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# GRAFICA de suma de fasores ---------\n# PROCEDIMIENTO de suma de fasores\nx_amplitud = &#x5B;] ; x_fase = &#x5B;] ; x_ceros = &#x5B;]\nfor unasenal in x_senales:\n    parametro = dsp.cos_args_one_term(unasenal)\n    freq_k = parametro&#x5B;'freq_Hz']\n    ampl_k = parametro&#x5B;'amplitud']\n    fase_k = parametro&#x5B;'fase']\n    x_amplitud.append(float(ampl_k))\n    x_fase.append(float(fase_k))\n    # marca un cero cos(wt+p)=0; wt+p=pi\/2\n    # t_cero = (pi\/2-p)\/w = (pi\/2-p)\/(2*pi*f)\n    uncero = sym.nan # si es una constante\n    if abs(freq_k)&gt;0:\n        uncero = (pi\/2 - fase_k)\/(2*pi*freq_k)\n        uncero = np.around(float(uncero),decimals=15)\n    x_ceros.append(uncero)\n\n# graficar\ndef _graf_lineacolor_i(i):\n    ''' funci\u00f3n auxiliar, asigna el color en la paleta de matplotlib\n    acorde al n\u00famero i entre 0 y 9\n    '''\n    if (i&lt;=9): # color de la l\u00ednea\n        lineacolor = 'C'+str(i)\n    else:\n        numcolor = i%10\n        lineacolor = 'C'+str(numcolor)\n    return(lineacolor)\n\nfig_polar  = plt.figure()\ngraf_polar = fig_polar.add_subplot(projection='polar')\npunto = graf_polar.plot(x_fase,x_amplitud,'o',xunits='radians')\nfor i in range(0,len(x_amplitud),1):\n    graf_polar.quiver(0,0,x_fase&#x5B;i],x_amplitud&#x5B;i],\n                      angles='xy', scale_units='xy', scale=1,\n                      label = x_etiqueta&#x5B;i],\n                      color = _graf_lineacolor_i(i))\n# actualiza etiquetas de gr\u00e1fico polar\netiquetas = &#x5B;'0', r'$\\pi$\/4', r'$\\pi$\/2',r'3$\\pi$\/4',\n             r'$\\pi$',r'5$\\pi$\/4',r'3$\\pi$\/2',r'7$\\pi$\/4']\ndtheta = int(360\/len(etiquetas))\nlines, labels = plt.thetagrids(range(0, 360,dtheta),\n                               etiquetas)\ngraf_polar.set_title('Fasores Xk')\ngraf_polar.legend()\n#plt.show()\n\n\n# GRAFICAR x(t) ---------------------------\n# INGRESO\ntramos_T = 20       # tramos por periodo\nperiodos_graf = 2   # periodos en una grafica\n\n# PROCEDIMIENTO GRAFICA\n# periodo m\u00e1ximo y m\u00ednimo de se\u00f1ales\ndef periodo_minmax(x_freq):\n    ''' funci\u00f3n auxiliar: obtiene T_max y T_min\n    de una lista de frecuencias x_freq\n    ingresa: x_freq\n    salida:  &#x5B;T_max,Tmin].\n    Si la frecuencia es cero, T_max=1,T_min=1\n    '''\n    T_max = 1 ; T_min = 1\n    freq = np.array(list(x_freq))\n    freq_min = float(np.min(np.abs(freq)))\n    freq_max = float(np.max(np.abs(freq)))\n    d_freq = np.abs(freq_max - freq_min) # ancho de banda\n    if freq_max&gt;0:\n        T_min = 1\/freq_max\n    if d_freq&gt;0: # min y max no son iguales\n        if freq_min&gt;0:\n            T_max = 1\/d_freq\n        else:  # freq_min==0, selecionar otro T_max\n            freq_min = float(np.min(freq&#x5B;freq&gt;0]))\n            T_max = 1\/freq_min \n    else: # min y max son iguales\n        T_max = 1\/freq_min\n    T_minmax = &#x5B;T_min,T_max] \n    return(T_minmax)\n\n&#x5B;T_min,T_max] = periodo_minmax(x_freq)\n\nmuestras_T = tramos_T + 1\n# intervalo de t entre &#x5B;a,b] en pasos dt\na = 0\nb = T_max*periodos_graf\ndt = T_min\/tramos_T # tama\u00f1o de paso,tramo, muestreo\nti = np.arange(a,b+dt,dt)\n\nxi_k = &#x5B;] # muestras de cada se\u00f1al x\nfor unasenal in x_senales:\n    # x(t) a forma num\u00e9rica lambda t:\n    if unasenal.has(t):\n        xk = sym.lambdify(t,unasenal)\n    else: # es constante\n        xk = lambda t: unasenal + 0*t\n    xki = xk(ti) # eval\u00faa en intervalo\n    xi_k.append(np.copy(xki))\n\n# graficar\nfig_x = plt.figure()\ngraf_x = fig_x.add_subplot()\nfor i in range(0,x_conteo,1):\n    color_i = _graf_lineacolor_i(i)\n    graf_x.plot(ti,xi_k&#x5B;i], color=color_i,\n                label=x_etiqueta&#x5B;i])\n    graf_x.axhline(0,color='black')\n    if x_ceros&#x5B;i]!=sym.nan:\n        graf_x.axvline(x_ceros&#x5B;i],color=color_i,\n                       linestyle='dashed')\ngraf_x.set_title('Se\u00f1ales xk(t)')\ngraf_x.set_xlabel('t (segundos)')\ngraf_x.set_ylabel('x_senales')\ngraf_x.grid()\ngraf_x.legend()\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=\"#fasores\">fasores<\/a><\/p>\n\n\n\n<p><a href=\"#ejemplo\">ejemplo<\/a><\/p>\n\n\n\n<p><a href=\"#analitico\">anal\u00edtico<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#funcion\">funci\u00f3n<\/a><\/p>\n\n\n\n<p><a href=\"#graficainteractiva\">interactiva<\/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=\"interactiva\">7.&nbsp; Gr\u00e1fica interactiva en Python<\/h2>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2024\/11\/senalSumaFasores01_animate.gif\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"600\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2024\/11\/senalSumaFasores01_animate.gif\" alt=\"se\u00f1al Suma Fasores 01 animate\" class=\"wp-image-550\" \/><\/a><\/figure>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# ejercicio 2.8 p54 Suma de Fasores y graf_polar\n# grafico interactivo\n# telg1034 DSP fiec-espol edelros@espol.edu.ec\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport sympy as sym\nimport telg1034 as dsp\n\n# variables continuas\nfrom telg1034 import t,A,w,f,p,pi,DosPi,I,equivalentes\n\n# INGRESO\nx1 = 5*sym.cos(DosPi*100*t + pi\/3)\nx2 = 4*sym.cos(DosPi*100*t - pi\/4)\n\nx_senales = &#x5B;x1,x2] # sumar fasores de igual frecuencia\nx_etiqueta = &#x5B;'x1(t)','x2(t)']\n\n# PROCEDIMIENTO\nx_conteo = len(x_senales)\n# sumar fasores por frecuencias iguales\nx_freq = {}\nfor unasenal in x_senales:\n    xk_args = dsp.cos_args_one_term(unasenal)    \n    freq_k = xk_args&#x5B;'freq_Hz']\n    fasor_complex_k = xk_args&#x5B;'fasor_complex']\n    if freq_k in x_freq: # sumar fasores en la freq_k\n        x_freq&#x5B;freq_k]&#x5B;'conteo'] = x_freq&#x5B;freq_k]&#x5B;'conteo'] + 1\n        fasor_complex = x_freq&#x5B;freq_k]&#x5B;'fasor_complex']\n        x_freq&#x5B;freq_k]&#x5B;'fasor_complex'] = fasor_complex + fasor_complex_k\n    else: # primer fasor en freq_k\n        x_freq&#x5B;freq_k] = {}\n        x_freq&#x5B;freq_k]&#x5B;'conteo'] = 1\n        x_freq&#x5B;freq_k]&#x5B;'fasor_complex'] = fasor_complex_k\n\n# se\u00f1al x_suma(t) por frecuencias \nfor unafreq in x_freq:\n    if x_freq&#x5B;unafreq]&#x5B;'conteo']&gt;1: # existe x_suma\n        fasor_complex = x_freq&#x5B;unafreq]&#x5B;'fasor_complex']\n        amplitud = sym.Abs(fasor_complex)\n        fase = sym.arg(fasor_complex)\n        fasor_suma = amplitud*sym.exp(sym.UnevaluatedExpr(fase))\n        x_suma = amplitud*sym.cos(DosPi*unafreq*t+sym.UnevaluatedExpr(fase))\n        x_freq&#x5B;unafreq]&#x5B;'senal'] = x_suma\n        # actualiza lista de se\u00f1ales\n        x_senales.append(x_suma)\n        x_etiqueta.append('x_'+str(unafreq)+'Hz')\n        x_conteo = len(x_senales)\n\n# SALIDA\nfor unafreq in x_freq:\n    print('freq_Hz:',unafreq)\n    for unparametro in x_freq&#x5B;unafreq]:\n        print(' ',unparametro,':', x_freq&#x5B;unafreq]&#x5B;unparametro])\n\n# GRAFICA de suma de fasores ---------\n# PROCEDIMIENTO de suma de fasores\nx_amplitud = &#x5B;] ; x_fase = &#x5B;] ; x_ceros = &#x5B;]\nfor unasenal in x_senales:\n    parametro = dsp.cos_args_one_term(unasenal)\n    freq_k = parametro&#x5B;'freq_Hz']\n    ampl_k = parametro&#x5B;'amplitud']\n    fase_k = parametro&#x5B;'fase']\n    x_amplitud.append(float(ampl_k))\n    x_fase.append(float(fase_k))\n    # marca un cero cos(wt+p)=0; wt+p=pi\/2\n    # t_cero = (pi\/2-p)\/w = (pi\/2-p)\/(2*pi*f)\n    uncero = sym.nan # si es una constante\n    if abs(freq_k)&gt;0:\n        uncero = (pi\/2 - fase_k)\/(2*pi*freq_k)\n        uncero = np.around(float(uncero),decimals=15)\n    x_ceros.append(uncero)\nx_fase = np.array(x_fase)\n\n# graficar\ndef _graf_lineacolor_i(i):\n    ''' funci\u00f3n auxiliar, asigna el color en la paleta de matplotlib\n    acorde al n\u00famero i entre 0 y 9\n    '''\n    if (i&lt;=9): # color de la l\u00ednea\n        lineacolor = 'C'+str(i)\n    else:\n        numcolor = i%10\n        lineacolor = 'C'+str(numcolor)\n    return(lineacolor)\n\nfig_polar  = plt.figure()\nfig_polar.set_size_inches(12,6)\ngraf_polar = fig_polar.add_subplot(1,2,1,projection='polar')\npuntos_polar=&#x5B;]\nflecha_polar=&#x5B;]\nfor i in range(0,len(x_amplitud),1):\n    punto = graf_polar.scatter(x_fase&#x5B;i]+np.pi\/2,\n                            x_amplitud&#x5B;i],\n                            xunits='radians')\n    unaflecha = graf_polar.quiver(0,0,x_fase&#x5B;i]+np.pi\/2,x_amplitud&#x5B;i],\n                      angles='xy', scale_units='xy', scale=1,\n                      label = x_etiqueta&#x5B;i],\n                      color = _graf_lineacolor_i(i))\n    puntos_polar.append(punto)\n    flecha_polar.append(unaflecha)\n# actualiza etiquetas de gr\u00e1fico polar\netiquetas = &#x5B;r'3$\\pi \/2$',r'7$\\pi \/4$','0', r'$\\pi \/4$', r'$\\pi \/2$',r'3$\\pi \/4$',\n             r'$\\pi$',r'5$\\pi \/4$']\ndtheta = int(360\/len(etiquetas))\nlines, labels = plt.thetagrids(range(0, 360,dtheta),\n                               etiquetas)\ngraf_polar.axvline(np.pi\/2, color='black')\ngraf_polar.set_title('Fasores Xk')\ngraf_polar.legend()\n#plt.show()\n\n\n# GRAFICAR x(t) interractiva ---------------\nfrom matplotlib.widgets import Slider, Button\n# INGRESO\ntramos_T = 20       # tramos por periodo\nperiodos_graf = 2   # periodos en una grafica\n\n# PROCEDIMIENTO GRAFICA\n# periodo m\u00e1ximo y m\u00ednimo de se\u00f1ales\ndef periodo_minmax(x_freq):\n    ''' funci\u00f3n auxiliar: obtiene T_max y T_min\n    de una lista de frecuencias x_freq\n    ingresa: x_freq\n    salida:  &#x5B;T_max,Tmin].\n    Si la frecuencia es cero, T_max=1,T_min=1\n    '''\n    T_max = 1 ; T_min = 1\n    freq = np.array(list(x_freq))\n    freq_min = float(np.min(np.abs(freq)))\n    freq_max = float(np.max(np.abs(freq)))\n    d_freq = np.abs(freq_max - freq_min) # ancho de banda\n    if freq_max&gt;0:\n        T_min = 1\/freq_max\n    if d_freq&gt;0: # min y max no son iguales\n        if freq_min&gt;0:\n            T_max = 1\/d_freq\n        else:  # freq_min==0, selecionar otro T_max\n            freq_min = float(np.min(freq&#x5B;freq&gt;0]))\n            T_max = 1\/freq_min \n    else: # min y max son iguales\n        T_max = 1\/freq_min\n    T_minmax = &#x5B;T_min,T_max] \n    return(T_minmax)\n\n&#x5B;T_min,T_max] = periodo_minmax(x_freq)\n\nmuestras_T = tramos_T + 1\n# intervalo de t entre &#x5B;a,b] en pasos dt\na = 0\nb = T_max*periodos_graf\ndt = T_min\/tramos_T # tama\u00f1o de paso,tramo, muestreo\nti = np.arange(a,b+dt,dt)\n\nxi_k = &#x5B;] # muestras de cada se\u00f1al x\nfor unasenal in x_senales:\n    # x(t) a forma num\u00e9rica lambda t:\n    if unasenal.has(t):\n        xk = sym.lambdify(t,unasenal)\n    else: # es constante\n        xk = lambda t: unasenal + 0*t\n    xki = xk(ti) # eval\u00faa en intervalo\n    xi_k.append(np.copy(xki))\n\n# graficar\n#fig_x = plt.figure()\npuntos_t = np.zeros(x_conteo,dtype=object)\ngraf_x = fig_polar.add_subplot(1,2,2)\nfor i in range(0,x_conteo,1):\n    color_i = _graf_lineacolor_i(i)\n    graf_x.plot(ti,xi_k&#x5B;i], color=color_i,\n                label=x_etiqueta&#x5B;i])\n    graf_x.axhline(0,color='black')\n    if x_ceros&#x5B;i]!=sym.nan:\n        graf_x.axvline(x_ceros&#x5B;i],color=color_i,\n                       linestyle='dashed')\n    puntos_t&#x5B;i] = graf_x.scatter(ti&#x5B;0],xi_k&#x5B;i]&#x5B;0])\ngraf_x.set_title('Se\u00f1ales xk(t)')\ngraf_x.set_xlabel('t (segundos)')\ngraf_x.set_ylabel('x_senales')\ngraf_x.grid()\ngraf_x.legend()\n\nplt.tight_layout()\n\n# grafica interactiva\nplt.subplots_adjust(top=0.9,bottom=0.25) # espacio widgets\n\n# slider: barras para valores \n# amplitud slider &#x5B;x,y,ancho,alto]\nti_donde = plt.axes(&#x5B;0.2, 0.10, 0.65, 0.03])\nti_slider = Slider(ti_donde, 'ti',\n                   0, max(ti),\n                   valinit=0,valstep = dt,\n                   orientation='horizontal')\n\ndef grafico_actualiza(val):\n    # actualiza valores x,y\n    tk = ti_slider.val\n    \n    for i in range(0,x_conteo,1):\n        color_i = _graf_lineacolor_i(i)\n        #puntos_t&#x5B;i].clear\n        # x(t) a forma num\u00e9rica lambda t:\n        unasenal = x_senales&#x5B;i]\n        if unasenal.has(t):\n            xk = sym.lambdify(t,unasenal)\n        else: # es constante\n            xk = lambda t: unasenal + 0*t\n        #punto_i = graf_x.plot(tk,xk(tk),'o',\n        #            color=color_i)\n        puntos_t&#x5B;i].set_offsets((tk,xk(tk)))\n\n        puntos_polar&#x5B;i].set_offsets((x_fase&#x5B;i]+np.pi\/2+tk\/T_max*2*np.pi,\n                            x_amplitud&#x5B;i]))\n        flecha_polar&#x5B;i].set_UVC(x_fase&#x5B;i]+np.pi\/2+tk\/T_max*2*np.pi,x_amplitud&#x5B;i])\n    fig_polar.canvas.draw_idle() # actualiza figura\n\n# boton reinicio de gr\u00e1fica\nbtn_rstdonde = plt.axes(&#x5B;0.8, 0.025, 0.1, 0.04])\nbtn_rst = Button(btn_rstdonde, 'Reset',\n                 hovercolor='0.975')\ndef grafico_reinicia(event):\n    ti_slider.reset()\n    return()\n\n# objetos interactivos\nti_slider.on_changed(grafico_actualiza)\nbtn_rst.on_clicked(grafico_reinicia)\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=\"#fasores\">fasores<\/a><\/p>\n\n\n\n<p><a href=\"#ejemplo\">ejemplo<\/a><\/p>\n\n\n\n<p><a href=\"#analitico\">anal\u00edtico<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#funcion\">funci\u00f3n<\/a><\/p>\n\n\n\n<p><a href=\"#graficainteractiva\">interactiva<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n","protected":false},"excerpt":{"rendered":"<p>fasores ejemplo anal\u00edtico algoritmo gr\u00e1fica funci\u00f3n interactiva 1. Suma por Fasores Referencia: McClellan 2.6 p48 Con se\u00f1ales de igual frecuencia en el mismo medio de transmisi\u00f3n las se\u00f1ales se suman. Una forma simplificada de sumar se\u00f1ales con diferente amplitud, fase e igual frecuencia es por medio de fasores , considerando: Se puede representar los cosenos [&hellip;]<\/p>\n","protected":false},"author":8043,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"wp-custom-template-entrada-dsp-unidades","format":"standard","meta":{"footnotes":""},"categories":[193],"tags":[],"class_list":["post-91","post","type-post","status-publish","format-standard","hentry","category-dsp-unidades"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/91","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=91"}],"version-history":[{"count":6,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/91\/revisions"}],"predecessor-version":[{"id":23234,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/91\/revisions\/23234"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=91"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=91"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=91"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}