{"id":289,"date":"2024-12-26T23:46:03","date_gmt":"2024-12-27T04:46:03","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/telg1034\/?p=289"},"modified":"2026-04-06T10:31:01","modified_gmt":"2026-04-06T15:31:01","slug":"fir-filtros-y-convolucion","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/dsp-unidades\/fir-filtros-y-convolucion\/","title":{"rendered":"4.2 FIR \u2013 Filtros y Convoluci\u00f3n"},"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=\"#convolucion\">convoluci\u00f3n<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">ejercicio<\/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=\"convolucion\">Convoluci\u00f3n de sumas<\/h2>\n\n\n\n<p><em><strong>Referencia<\/strong><\/em>: McClellan 5.4.3 p181<\/p>\n\n\n\n<p>Una expresi\u00f3n general para salidas de Filtros FIR se obtienen de los t\u00e9rminos de respuesta al impulso. Si los coeficientes de b<sub>k<\/sub> son los mismos valores de respuesta al impulso se puede expresar como una <strong>suma de convoluci\u00f3n<\/strong>, que es una operaci\u00f3n entre dos secuencias.<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> y[n] = \\sum_{k=0}^{M} h[k] x[n-k] <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> y[n] =h[k] * x[n] =\\sum_{k=-\\infty}^{\\infty} h[k] x[n-k]<\/span>\n\n\n\n<p>Lo que expresa que la secuencia de salida y[n] se obtiene al aplicar la convoluci\u00f3n de la respuesta al impulso h[n] con la se\u00f1al de entrada x[n]<\/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=\"#convolucion\">convoluci\u00f3n<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">ejercicio<\/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=\"ejercicio\">1. Ejercicio<\/h2>\n\n\n\n<p><em><strong>Referencia<\/strong><\/em>: McClellan 5-4.3.3 p184<\/p>\n\n\n\n<p>Evaluar la convoluci\u00f3n de <code>hn<\/code> que es una secuencia de 11 puntos, con <code>xn<\/code> que es una secuencia de 51 puntos. Use el vector <code>hn<\/code> como respuesta al impulso de un sistema de medias m\u00f3viles de 11 puntos.<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> x[n]= \\sin(0.7\\pi n) \\text{ ; } 0 \\le n \\le 50 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> h[n]= \\begin{cases} 1\/11 &amp; 0 \\le n \\le 40 \\\\0 &amp; n&lt;0\\end{cases} <\/span>\n\n\n\n<p class=\"has-text-align-center\">y[n] = x[n]*h[n]<\/p>\n\n\n\n<p>Al aplicar el algoritmo de media m\u00f3vil se compara el resultado con el algoritmo de convoluci\u00f3n.<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>muestreo: 51  ; tama\u00f1o ki: 73\nx&#091;n]: (Heaviside(n) - Heaviside(n - 51))*sin(0.07*pi*n)\nh&#091;n]: Heaviside(n)\/11 - Heaviside(n - 11)\/11\n&gt;&gt;&gt;<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2024\/12\/FIR_mediamovilConvolve03.png\"><img loading=\"lazy\" decoding=\"async\" width=\"569\" height=\"441\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2024\/12\/FIR_mediamovilConvolve03.png\" alt=\"FIR media movil Convoluci\u00f3n\" class=\"wp-image-300\" \/><\/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=\"#convolucion\">convoluci\u00f3n<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">ejercicio<\/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\">2. Algoritmo en Python<\/h2>\n\n\n\n<p><em><strong>Referencia<\/strong><\/em>: [1] <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/ss-unidades\/ss-u06\/lti-dt-convolucion-de-suma-python\/\" data-type=\"post\" data-id=\"17809\">LTI DT \u2013 Convoluci\u00f3n de sumas \u2013 Python. Blog Se\u00f1ales y Sistemas<\/a>. [2] https:\/\/numpy.org\/doc\/stable\/reference\/generated\/numpy.convolve.html<\/p>\n\n\n\n<p>Algoritmos y funciones: <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/dsp-senales\/dsp-algoritmos-telg1034-py\/\" data-type=\"page\" data-id=\"18266\">telg1034.py<\/a><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# ejemplo 5-4.3.3 p184 FIR - Media M\u00f3vil  y convoluci\u00f3n\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# variables discretas\nfrom telg1034 import n\n\n# INGRESO\nu = sym.Heaviside(n)\n# se\u00f1al como suma de las partes\nmuestrasN = 50 + 1  # # intervalo &#x5B;0,50]\ngn = (u-u.subs(n,n-muestrasN)) \nxn = sym.sin(0.07*pi*n)*gn\n\n# FIR Media M\u00f3vil\nventana = 10 + 1 # intervalo &#x5B;0,10]\nhn = (u-u.subs(n,n-ventana))\/ventana \n\n# PROCEDIMIENTO ----------------\n# muestreo x&#x5B;n]\nki = np.arange(-ventana,muestrasN + ventana,1,dtype=int)\nxni = sym.lambdify(n,xn, modules=equivalentes)\nxki = xni(ki)\n\nhni = sym.lambdify(n,hn, modules=equivalentes)\nhki = hni(ki) \n\n# FIR Media M\u00f3vil\nyki = np.convolve(hki,xki)\nyki = yki&#x5B;ventana:len(xki)+ventana] # intervalo ki\n\n# SALIDA\nprint('muestreo:',muestrasN,' ; tama\u00f1o ki:',len(ki))\nprint('x&#x5B;n]:',xn)\nprint('h&#x5B;n]:',hn)\n\n# GRAFICA FIR\nplt.subplot(311) # x&#x5B;n]\nplt.stem(ki,xki,linefmt = 'C0:',\n         label='x&#x5B;n]')\nplt.xlabel('n')\nplt.ylabel('x&#x5B;n]')\nplt.title('FIR Media M\u00f3vil con convoluci\u00f3n')\nplt.legend()\n\nplt.subplot(312) # h&#x5B;n]\nplt.stem(ki,hki,linefmt = 'C1:',label='h&#x5B;n]')\nplt.xlabel('n')\nplt.ylabel('h&#x5B;n]')\nplt.legend()\n\nplt.subplot(313) # y&#x5B;n]\nplt.stem(ki,yki,linefmt = 'C2:',label='y&#x5B;n]')\nplt.xlabel('n')\nplt.ylabel('y&#x5B;n]')\nplt.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=\"#convolucion\">convoluci\u00f3n<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">ejercicio<\/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>convoluci\u00f3n ejercicio algoritmo Convoluci\u00f3n de sumas Referencia: McClellan 5.4.3 p181 Una expresi\u00f3n general para salidas de Filtros FIR se obtienen de los t\u00e9rminos de respuesta al impulso. Si los coeficientes de bk son los mismos valores de respuesta al impulso se puede expresar como una suma de convoluci\u00f3n, que es una operaci\u00f3n entre dos secuencias. [&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-289","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\/289","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=289"}],"version-history":[{"count":7,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/289\/revisions"}],"predecessor-version":[{"id":24096,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/289\/revisions\/24096"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=289"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=289"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=289"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}