Universidad Politécnica de Madrid Escuela Técnica Superior de Ingenieros Industriales Grado en Ingeniería en Tecnologías Industriales. Curso 05-06-3º Matemáticas de Especialidad Ingeniería Eléctrica /36 Funciones trigonométricas de interpolación y ajuste La Transformada de Fourier Clase_interpolacion_trigonometrica_DFT_FFT_06.pdf José Luis de la Fuente O Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es
/36 Índice Introducción Interpolación trigonométrica Números complejos Transformada Discreta de Fourier Transformada Rápida de Fourier Interpolación Trigonométrica con la Trasformada Rápida de Fourier
Introducción 3/36 El procesamiento digital de señales, DSP, es uno de los núcleos básicos de la economía digital que viene desarrollándose tan rápidamente en nuestra economía y sociedad desde hace años. La base de ello es lo tratado en este tema. Las funciones trigonométricas, esencialmente a base de senos y cosenos, son idóneas para modelizar y tratar mediante interpolación o ajuste la información de fenómenos cíclicos o periódicos: señales acústicas, ópticas, económicas y sociales. Esas funciones cumplen que para un periodo T. x.t/ D x.t C T / D x.t C T / D D x.t C nt /; La representación de una función continua o discreta mediante combinaciones lineales de senos y cosenos permite descomponerla en su espacio de frecuencias lo que ayuda a un análisis más preciso de algunos de sus parámetros.
De qué hablamos? Espectro de frecuencias VS tiempos. /36 También: y
Jean Baptiste Joseph Fourier, Francia, 768-830. 5/36
Estudiando cómo se transmite el calor, Fourier demostró que cualquier función 6/36 periódica y continua, C Œ0;, puede representarse como una suma infinita (serie de Fourier) de polinomios trigonométricos de la forma x.t/ D a 0 C i j D h i a j cos.f 0 tj / C b j sen.f 0 tj / ; donde los a j y b j vienen dados por las fórmulas de 3 Euler: y a j D T b j D T l T l 0 T x.t/ cos.f 0 tj / dt; para j D 0; ; : : : x.t/ sen.f 0 tj / dt; para j D ; ; : : : 0 Sinusoides. f 0 es la frecuencia fundamental, inversa del periodo T : f 0 D =T. 3 Leonhard Euler Basilea 707-San Petersburgo 783.
7/36 Las funciones =, sen.f 0 tj /, cos.f 0 tj /; j D ; : : : constituyen una base en un espacio vectorial de dimensión infinita de funciones ortogonales con el producto interior hf; gi D Z 0 f.t/g.t/ dt: Los a j y b j son los coeficientes de x.t/ en dicha base. Espacio de Hilbert
iguiente Veamosfunción la siguiente y.t/ función D Ay.t/ 0 CDC Acos.! 0 C C 0 cos.! t C /. 0 t C /. y(t) guiente función y.t/ D A 0 C C cos.! 0 t C /. y(t) θ θ C T 0 π π 3π C (a) T A 0 a 0 t, s ωt, rad t, s a 0 D;7 C D! Df D=T D=.;5s/ Fase, D=3D;07 radianes.0;5s/ Frec. fundamental, f D=T D=.;5s/D0;6667 Hz 8/36 0 π π 3π (a) En sus tres componentes ωt, rad A 0 0 0 (b) a 0 B sin (ω 0 t) A cos (ω 0 t) b sen(ω 0 t) a cos(ω 0 t) a D0;5 b D 0;866 y.t/ D a 0 C a cos.! 0 t/ C b sen.! 0 t/ epresenta la función. En este caso A 0 D ;7, C D,! D f D =T D =.;5s/ D ;07 radianes.0;5s/. La frecuencia f D =T D =.;5s/ D 0;6667 Hz. presenta resión delalafunción. en Ensus estetres caso componentes: A 0 D ;7, Cy.t/ DD, A! 0 DC f A cos.! D =T 0 t/ CDB =.;5s/ sen.! 0 t/ D;07 0;866. radianes.0;5s/. La frecuencia f D =T D =.;5s/ D 0;6667 Hz.
9/36 Decompo composit signal in frequenc
Interpolación trigonométrica 0/36 Se trata de representar mediante un polinomio de grado m en Œ0; / una función periódica de la que se conocen n datos igualmente espaciados 5 en ese intervalo, fx 0 ; x ; : : : ; x n g. Haciéndolo así p.t/ D a 0 C m X cumpliéndose en los puntos j D n.0; x 0 /; a j cos.jt/ C mx b j sen.jt/; j D n ; x ; n ; x ; : : : ;.n / ; x n n o. El grado m del polinomio depende del tamaño de la muestra, n. Si n es par, sería m D n=; si es impar, m D.n /=. Para obtenerlo de la manera que conocemos habría que determinar m C parámetros: a 0, a i, b i, i D, : : : ; m. 5 Tren de impulsos.
Ejemplo Interpolemos a los datos.0; /; ; 3 ; el polinomio ; 5 ; p.t/ D a 0 C a cos. t/ C a 6 ; cos. t/ C Cb sen. t/ C b sen. t/ : /36 Para obtener los coeficientes a 0, a, a, b y b planteamos un sistema de ecuaciones lineales del tipo Ax D b, en el que la matriz A es del tipo Vandermonde, y b D Œ; 3; 5; T. El sistema que hay que resolver, en forma matricial, es 3 6 cos cos cos 3 0 0 sen sen sen sen sen 3 sen 3 cos cos cos 3 7 6 5 a 0 a a b b 3 7 5D 3 5 3 5 :
Simplificando resulta así 6 0 0 0 0 0 0 0 0 3 7 5 6 a 0 a a b b 3 7 5 D 6 3 5 3 7 5 : /36 Resolviendo da, como solución de norma euclídea mínima, 3 3 a 0 a 3 6a 7 5 D 9 : 6 7 5 El polinomio de interpolación es entonces p.t/ D C 3 cos.t/ 9 cos.t/ C sen.t/. b b Sustituyendo 0, =, y 3= en este polinomio se puede comprobar que se consiguen los valores de la muestra. 0
Números complejos 3/36 Los números del cuerpo C de lo complejos surgen para dar sentido a raíces de números negativos, p a D a p. Para ello se utiliza la unidad imaginaria i D p. Cualquier complejo z D x C yi, donde x es la parte real e y la imaginaria (ambas reales), se representa geométricamente en el plano complejo así: En su forma polar se 6 escribe z D re i' D r cos ' C i sen ', donde r D p x C y y ' D arctan.y=x/. 6 A e i' D cos ' C i sen ' se la conoce como identidad de Euler
La circunferencia de radio unidad en el plano complejo 0. The Fourier es el Transform lugar geométrico 69 de los números complejos con r D. y /36 iπ e = i iπ e e iπ = + 0i e 0 = + 0i x Si se multiplican dos números e i y e i de esa circunferencia, e i e i D cos C i sen cos C i sen D cos cos sen sen C i sen cos C sen cos : Figure 0. Unit circle in the complex plane. Complex numbers of the form e iθ for some angle θ have magnitude one and lie on the unit circle. Reordenando, 7 e i.c/ D cos. C / C i sen. C /. Por tanto, el producto de dos números complejos en la circunferencia de radio unidad es otro número de la z = a + bi = re iθ, (0.) misma circunferencia cuyo ángulo es la suma de los dos precedentes. where r is the complex magnitude z = a + b and θ = arctan b/a. 7 The unit circle in the complex plane corresponds to complex numbers of magnitude Es interesante saber que cos D ei Ce i y sen D r =. To multiply together the two numbers e iθ i e i e i and e iγ. on the unit circle, we could convert
Los números Moivre, z tales que z n D 0, raíces n-ésimas de la unidad, por Abraham de Moivre, Francia, 667-75, tienen interés: 5/36 En la recta de números reales sólo hay dos: y. En el plano complejo hay muchos. Por ejemplo, i es una raíz cuarta de : p i D D. / D. Están localizados en la circunferencia del plano complejo de radio la unidad: forman los vértices de un polígono 8//05 regular defifth nroots of unity lados con un vértice en. +i 0 + i
Una raíz n-ésima de la unidad se denomina primitiva 8 si no es una raíz k-ésima 6/36 para k < n. Así, es una raíz segunda primitiva de la unidad y cuarta no Roots of Unity primitiva de ella. For given integer n, we use notation Es fácil verω que, para una n cualquiera, el número complejo! n D e i=n n = cos(π/n) i sin(π/n) = e πi/n es una raíz n-ésima primitiva de la unidad (también lo es! n D e i=n ). for primitive nth root of unity nth roots of unity, sometimes called twiddle En la figura factorsseinvethis la context, raíz cuarta areprimitiva then de la unidad! D e i= y las otras tres. Son, en general, las potencias! k given by ωn k or by ω k, k D 0; ; ; 3. n, k = 0,..., n i = ω 3. = ω ω = ω =. π/. = ω 0 = ω i = ω = ω 3 8 De otra manera, la raíz n-ésima de la unidad es primitiva, si sólo si sus k-ésimas potencias, k D 0; ; : : : ; n son distintas. Las raíces cuartas de son:,, i, i. En el caso de sus potencias de grado 0,, y 3 son iguales; no es raíz primitiva. Para i, se calcula que las potencias de grado 0,,, 3 son, respectivamente,, i,, i, distintas, luego i es una raíz cuarta primitiva de.
Las! k n se denominan también factores twiddle. Mirar más aquí. 7/36 Se puede verificar que la raíz n-ésima de la unidad,! D e i=n, con n >, cumple que También que C! C! C! 3 C C! n D 0; C! C! C! 6 C C!.n / D 0; C! 3 C! 6 C! 9 C C! 3.n / D 0; : C! n C!.n / C!.n /3 C C!.n /.n / D 0: C! n C! n C! 3n C C! n.n / D C C C C C D n: Además, si k es un número entero, n i j D0! jk D n si k=n es entero, 0 en otro caso.
8/36 Transformada Discreta de Fourier La interpolación trigonométrica que estamos estudiando se puede llevar a cabo de forma eficaz usando la Transformada Discreta de Fourier y la Transformada Rápida de Fourier. Para un vector de coeficientes reales, x D Œx 0 ; x ; : : : ; x n T, su Transformada Discreta de Fourier, TDF, es el vector n-dimensional y D Œy 0 ; y ; : : : ; y n T tal que y k D p Xn x j! jk ; n donde! D e i=n. j D0
En forma matricial, la definición anterior dice que 3 3 y 0 a 0 C ib 0! 0! 0! 0! 0 y 6 y 7 : 5 D a C ib! 6 a C ib 7 : 5 D 0!!! n p n 6! 0!!! : : : : y n a n C ib n! 0! n!.n /!.n /.n / 3 3 x 0 x 7 6 x 7 5 : 5 : x n 9/36 A la matriz simétrica F n D p n! 0! 0! 0! 0! 0!!! n 6! 0!!! : : : :! 0! n!.n /!.n /.n / se la denomina matriz de Fourier. Todas sus filas y columnas, excepto las primeras, suman cero. 3 7 5
0/36 La inversa de la matriz de Fourier es! 0! 0! 0! 0! 0!!! F n D p n! 0!!! 6 : : : :! 0!.n /!.n /!.n /.n /.n / y la Transformada Discreta de Fourier inversa de y es x D F n y. 3 7 5 Dado que un número complejo en la circunferencia unidad, z D e i D cos C i sen, tiene como recíproco, su complejo conjugado, e i D cos i sen, la inversa de la matriz F n será la que tenga como coeficientes los complejos conjugados los de F n, es decir F n D F n:
La matriz de Fourier es una matriz unitaria, F F D I, por lo que, recordemos, al multiplicarla por cualquier vector, éste conserva su norma. /36 Aplicar la Transformada Discreta de Fourier requiere O.n / operaciones, concretamente n multiplicaciones y n.n / sumas; aplicar la inversa lo mismo. Ejemplo Calculemos la TDF del vector x D Œ; 0; ; 0 T. Sea en este caso! la raíz cuarta de la unidad, es decir! D e i= D e i= D cos.=/ i sen.=/ D i. La trasformada es 3 3 3 3 3 3 6 y 0 y y y 3 7 5 D p 6!!! 3 7!!! 6 5! 3! 6! 9 6 0 7 5 D 6 i i 7 5 0 i i 6 0 0 7 5 D 6 7 05 : 0
/36 Si utilizamos la rutina de Matlab para hacer TDF, fft, hay que tener en cuenta que su normalización es un poco diferente, y hay que usar fft(x)/sqrt(n). Para la inversa ifft(y)*sqrt(n). En efecto: >> x=[ 0-0]; >> fft(x) ans = 0 0 >> fft(x)/sqrt() ans = 0 0 >> ifft(ans)*sqrt() ans = 0-0 >>
3/36 Una propiedad importante de la TDF es que si n es par y el vector x D Œx 0 ; x ; : : : ; x n T tienes todos sus coeficientes reales, los de su transformado, y, son los siguientes, para por ejemplo n D 8, 3 x 0 3 x a 0 3 x a C ib y 0 x a C ib : 3 yn a F 8 x D 3 C ib 3 D yn a x 5 : y n a 6 x 6 6 3 ib 3 6 7 7 7 a x 7 5 ib 5 : 5 a x ib y 8
Transformada Rápida de Fourier /36 Como acabamos de ver la TDF necesita para su cálculo O.n / operaciones. James William Cooley, 96 y John Tukey, 95-000. EE.UU. Cooley y Tukey formularon en 965 uno de los algoritmos más importantes del Siglo XX. La Transformada Rápida de Fourier, FFT. Este algoritmo sigue la estrategia del divide y vencerás para hacer mucho más rápido la TDF. Requiere O.n log n/ operaciones. Su aportación más significativa es haber convertido el tratamiento de señales de lo analógico a lo digital, ampliando casi hasta el infinito su campo de aplicación.
5/36 Si expresamos la TDF, F n x, de la forma 3 3 y 0 : 5 D x 0 p M n : 5 ; n y n x n donde M n D! 0! 0! 0! 0! 0!!! n! 0!!! 6 : : : :! 0! n!.n /!.n /.n / 3 ; 7 5 veamos cómo calcular de forma recursiva el producto z D M n x.
Empecemos simulando su mecánica con n D. Si! D e i=, la TDF es 3 3 3 z 0! 0! 0! 0! 0 x 0 z 6 7 z 5 D! 0!!! 3 x 6! 0!!! 6 7 6 7 5 x 5 :! 0! 3! 6! 9 z 3 x 3 6/36 Reordenando las operaciones de tal manera que los términos pares aparezcan primero se tiene que z 0 D! 0 x 0 C! 0 x C! 0! 0 x C! 0 x 3 z D! 0 x 0 C! x C!! 0 x C! x 3 z D! 0 x 0 C! x C!! 0 x C! x 3 z 3 D! 0 x 0 C! 6 x C! 3! 0 x C! 6 x 3 :
7/36 Usando el hecho de que! D, las ecuaciones anteriores quedan z 0 D! 0 x 0 C! 0 x C! 0! 0 x C! 0 x 3 z D! 0 x 0 C! x C!! 0 x C! x 3 z D! 0 x 0 C! 0 x C!! 0 x C! 0 x 3 z 3 D! 0 x 0 C! x C! 3! 0 x C! x 3 : Los términos entre paréntesis en las primeras dos líneas se repiten en las dos siguiente. Hagamos u 0 D 0 x 0 C 0 x u D 0 x 0 C x y v 0 D 0 x C 0 x 3 v D 0 x C x 3 ; donde D!, la segunda raíz de la unidad.
Los vectores u D Œu 0 ; u T y v D Œv 0 ; v T son básicamente x0 u D M x x v D M x 3 8/36 por lo que el original M x es z 0 D u 0 C! 0 v 0 z D u C! v z D u 0 C! v 0 z 3 D u C! 3 v : La TDF./ original se ha transformado en un par de TDF./ más algunas pocas multiplicaciones y sumas. Si ignoramos el término = p n una TDF.n/ se puede reducir al cálculo de dos TDF.n=/ más n operaciones adicionales.
Interpolación Trigonométrica con la Trasformada Rápida de Fourier 9/36 Dado un intervalo Œc; d y un número positivo n, definamos t D.d c/=n y unos t j D c C j t, j D 0; : : : ; n, igualmente espaciados en el intervalo. Para un vector dado x al que le aplicaremos la Transformada de Fourier, cada uno de sus coeficientes, x j, lo interpretaremos como una medida de un conjunto de ellas tomadas a una señal determinada en los tiempos t j. Si y D F n x es la TDF de x, cada coeficiente x j vendrá dado por la fórmula de la inversa de TDF: x j D p Xn n kd0 y k! k j Xn D pn kd0 y k e ikj=n D Xn e ik.tj c/ d c y k p n kd0 Q.t/ :
Esta expresión la podemos ver como la que materializa, mediante TDF, una interpolación de los puntos.t j ; x j / con funciones de base trigonométricas 30/36 e ik.t c/ d c p ; k D 0; : : : ; n n con coeficientes, o pesos, y k D a k C ib k. Del desarrollo de Q.t/, es decir, Q.t/ D p in.a k C ib k / n kd0 k.t c/ cos d c C i sen k.t c/ ; d c si los x j son reales, la función trigonométrica de orden n que interpola los puntos.t j ; x j / es P n.t/ D p in n kd0 k.t c/ a k cos d c b k sen k.t c/ : d c
Simplificando un poco más esta fórmula, si n es par, se llega a que 3/36 P n.t/ D a 0 p n C p n n i kd0 k.t c/ a k cos d c b k sen k.t c/ C a n= p cos d c n n.t c/ d c satisfaciendo P n.t j / D x j, j D 0; : : : ; n. Ejemplo Calculemos el polinomio trigonométrico de interpolación del vector x D Œ; 0; ; 0 T. El intervalo es Œ0; ; t D Œ0; =; =; 3= T. La TDF de x es y D Œ0; ; 0; T. Los coeficientes de la interpolación son a k C ib k D y k, por lo que a 0 D a D 0, a D a 3 D y b 0 D b D b D b 3 D 0. Aplicando la fórmula anterior, el polinomio trigonométrico de interpolación es: P.t/ D a 0 C a cos t b sen t C a cos t D cos t:
Ejemplo Obtengamos el polinomio trigonométrico de interpolación de x D Œ ; ;8 6; 3;9 0;0 ; 0;6 ; T en el intervalo Œ0;. La Transformada de Fourier es y D 6 3 5;55 ;058 C 3;695i ;590 ;667i 0;508 0;695i 0;7778 : 0;508 C 0;695i 7 ;590 C ;667i5 ;058 3;695i Aplicando la fórmula para obtener el polinomio, se tiene que P 8.t/ D 5;55 p ;058 p 8 cos t 3;695 p C ;590 p cos t C ;667 p sen t sen t 0;508 p cos 6t C 0;695 p 0;7778 sen 6t p 8 D ;95 0;75 cos t ;559 sen t C;5 cos t C 0;85 sen t cos 8t 0;3555 cos 6t C 0;906 sen 6t 0;75 cos 8t: 3/36
33/36 El resultado se ve gráficamente así: 0 - - y -3 - -5-6 -7 0 0. 0. 0.3 0. 0.5 0.6 0.7 0.8 0.9 Tiempo
Una consecuencia práctica muy importante del hecho de que en el polinomio trigonométrico de interpolación P n.t/ las funciones de base sean ortogonales es que si m < n entonces 3/36 P m.t/ D a 0 p n C p n m i kd0 a k cos k.t j c/ d c b k sen k.t j c/ C a m= p cos d c n n.t c/ d c es la mejor aproximación de mínimos cuadrados de orden m a los datos.t j ; x j /; j D 0; : : : ; n. Esto quiere decir que para el ejemplo anterior, los polinomios trigonométricos de interpolación P.t/ y P 6.t/ serán P.t/ D ;95 0;75 cos t ;559 sen t C ;5 cos t P 6.t/ D ;95 0;75 cos t ;559 sen t C;5 cos t C 0;85 sen t 0;3555 cos 6t:
35/36 0 - - -3 - -5-6 -7 0 0. 0. 0.3 0. 0.5 0.6 0.7 0.8 0.9 0 - - -3 - -5-6 -7 0 0. 0. 0.3 0. 0.5 0.6 0.7 0.8 0.9
Aplicaciones prácticas: Sonido, ruido, filtrado,... 36/36 >> load handel >> plot(y(:56)) >> xp=dftfilter([0,],y(:56),6,56,56); 0. 0. 0.5 0.5 0. 0. 0.05 0.05 0 0-0.05-0.05-0. -0. -0.5-0.5-0. -0. -0.5 0 50 00 50 00 50 300-0.5 0 50 00 50 00 50 300 >> sound(y,fs) >> xp=dftfilter([0,],y,0000,733,733); >> sound(xp,fs) >> xp=dftfilter([0,],y,73,733,733); >> sound(xp,fs)