F´
ısica de las Comunicaciones – 2006/2007 – Pr´ctica 1
a

1

Pr´ctica 1: Senales y an´lisis de Fourier
a
˜
a

1.

Objetiv...
2

F´
ısica de las Comunicaciones – 2006/2007 – Pr´ctica 1
a

Ejemplo 1 ficom pr1 0001 ejemplo brusco.m
% Ejemplo brusco
% ...
F´
ısica de las Comunicaciones – 2006/2007 – Pr´ctica 1
a

3

Ejemplo 3 ficom pr1 0003 elementos vectores.m
% Acceso a elem...
4

F´
ısica de las Comunicaciones – 2006/2007 – Pr´ctica 1
a

Se˜al escal´n, u(t), en el ejemplo 5.
n
o
Se˜al pulso, rect(...
F´
ısica de las Comunicaciones – 2006/2007 – Pr´ctica 1
a

4.

5

An´lisis de Fourier
a

Utilizando operaciones sobre vect...
6

F´
ısica de las Comunicaciones – 2006/2007 – Pr´ctica 1
a

Ejemplo 9 ficom pr1 0009 ejemplo brusco2.m
% Ejemplo brusco 2...
F´
ısica de las Comunicaciones – 2006/2007 – Pr´ctica 1
a

7

Ejemplo 11 ficom pr1 0011 multiplicar coseno fourier.m
%
t
x
...
8

4.1.

F´
ısica de las Comunicaciones – 2006/2007 – Pr´ctica 1
a

Producto de convoluci´n
o

En matlab contamos con las ...
F´
ısica de las Comunicaciones – 2006/2007 – Pr´ctica 1
a

9

trabajar con matlab. No obstante, aunque en principio matlab...
10

F´
ısica de las Comunicaciones – 2006/2007 – Pr´ctica 1
a

Se pueden obtener diferentes formas de representaci´n gr´fic...
Próxima SlideShare
Cargando en…5
×

Fourier mat lab

401 visualizaciones

Publicado el

0 comentarios
1 recomendación
Estadísticas
Notas
  • Sé el primero en comentar

Sin descargas
Visualizaciones
Visualizaciones totales
401
En SlideShare
0
De insertados
0
Número de insertados
2
Acciones
Compartido
0
Descargas
13
Comentarios
0
Recomendaciones
1
Insertados 0
No insertados

No hay notas en la diapositiva.

Fourier mat lab

  1. 1. F´ ısica de las Comunicaciones – 2006/2007 – Pr´ctica 1 a 1 Pr´ctica 1: Senales y an´lisis de Fourier a ˜ a 1. Objetivo y contenido En esta pr´ctica pretendemos revisar parte de la materia del tema 2 de la asignatua ra desde la perspectiva de un entorno de c´lculo num´rico y simulaci´n por ordenador: a e o matlab. El objetivo fundamental es familiarizarse con la definici´n, manipulaci´n y repreo o sentaci´n de se˜ales en matlab. o n Este documento proporciona un gui´n que incluye todas las ´rdenes necesarias para o o ir siguiendo los apartados de la pr´ctica. Con objeto de centrarnos en la materia de la a asignatura y de que la clase sea m´s amena, hemos optado por no dedicar apartados a espec´ ıficos a explicar el entorno ni el lenguaje de programaci´n matlab, sino por explicar o los conceptos y funciones necesarios sobre la marcha. En primer lugar, tras una toma de contacto b´sica con el entorno, mostraremos un a ejemplo que resume los aspectos de la asignatura que se van a tratar en esta pr´ctica. Este a primer ejemplo es una aproximaci´n intuitiva al uso de matlab, con la que pretendemos o dar una idea general de las posibilidades del entorno. A lo largo de la pr´ctica se ir´n detallando los puntos que se presentan brevemente en a a el ejemplo inicial: definici´n de y operaci´n con se˜ales, representaci´n gr´fica, an´lisis de o o n o a a Fourier y manipulaci´n de se˜ales en los dominios del tiempo y la frecuencia. o n 2. Ejemplo de manipulaci´n de se˜ ales en matlab o n Empezamos con un ejemplo que presenta de manera resumida el contenido de esta pr´ctica. En el ejemplo 1, definimos una se˜al, calculamos su transformada de Fourier, y a n la representamos en los dominios del tiempo y de la frecuencia. 3. Se˜ ales en matlab n Siendo rigurosos, el procedimiento seguido en el apartado anterior no es adecuado para el an´lisis de se˜ales anal´gicas; es m´s, en general matlab no permite analizar se˜ales a n o a n 1 anal´gicas . Esto se debe a que la forma natural de representar una se˜al en matlab es o n 1 Salvo que se usen bloques funcionales o toolboxes espec´ ıficos. Dpto. Electr´nica y Electromagnetismo o Facultad de F´ ısica, Universidad de Sevilla
  2. 2. 2 F´ ısica de las Comunicaciones – 2006/2007 – Pr´ctica 1 a Ejemplo 1 ficom pr1 0001 ejemplo brusco.m % Ejemplo brusco % A) Definici´n de la se~al o n t = -0.25:0.001:0.25; w1 = 2*pi*50; w2 = 2*pi*200; g = 3*sin(w1*t) - 2*cos(w2*t); % B) Representaci´n en tiempo o subplot(311) plot(t,g) % C) Transformada y representaci´n en frecuencia o G = fftshift(fft(g)); % base de frecuencias f = base_tiempo_frec(t); % amplitud de la transformada subplot(312); plot(f,abs(G)); % fase de la transformada subplot(313); plot(f,angle(G)); % fase, mejor plot(f,unwrap(angle(G))); definir una secuencia finita de valores mediante un vector fila. As´ por ejemplo, podemos ı, definir la secuencia de instantes de tiempo equidistantes (intervalo 1 ms) entre 0 y 0.25, que en el ejemplo visto es la base de tiempos de la se˜al. Y, del mismo modo, en el n ejemplo 2, definimos una se˜al sinusoide como una secuencia de valores. n Ejemplo 2 ficom pr1 0002 senal sinusoide.m % Ejemplo de definici´n de se~al sinusoide o n % base de tiempos t = -2*pi:0.001:2*pi w = 2*pi*1 g = sin(w*t) % Diferentes estilos de representaci´n o plot(t,g) plot(t,g,’*’) stem(t,g) % Otra forma de representaci´n gr´fica o a Se puede acceder a los elementos de los vectores usando la notaci´n del ejemplo 3. o N´tese que t(1) representa un instante de tiempo, mientras que g(1) representa el valor o que toma la se˜al g en ese instante. n Por tanto, siendo estrictos, en matlab toda se˜al es discreta en tiempo, mientras que en n amplitud puede ser discreta (cuantizada) o continua (aunque limitada por la precisi´n de o los tipos num´ricos). No obstante, si los intervalos temporales entre valores son suficientee mente peque˜os y el rango temporal en que se define la se˜al es suficientemente amplio, la n n Dpto. Electr´nica y Electromagnetismo o Facultad de F´ ısica, Universidad de Sevilla
  3. 3. F´ ısica de las Comunicaciones – 2006/2007 – Pr´ctica 1 a 3 Ejemplo 3 ficom pr1 0003 elementos vectores.m % Acceso a elementos de los vectores g(1) g(2) t(length(t)) secuencia de valores empleada para representar la se˜al y las operaciones realizadas para n su an´lisis proporcionan una buena aproximaci´n a los resultados te´ricos. a o o En el caso m´s simple y frecuente, los valores se toman en instantes equiespaciados, a intervalo que no debe confundirse con el periodo de muestreo. De momento, ignoraremos el efecto de la discretizaci´n de se˜ales (utilizaremos intervalos de tiempo suficientemente o n peque˜os, de modo que los efectos sean despreciables). Asimismo, la amplitud de las n se˜ales est´ sometida a una discretizaci´n que, dada la precisi´n de los tipos num´ricos n a o o e empleados en matlab, podemos ignorar. Representar la se˜ al sinusoide anterior para diferentes intervalos de la base n de tiempos t. Pensar si es posible y c´mo se puede definir en matlab una se˜ al perteneo n ciente a las siguientes categor´ ıas: Discreta en el tiempo y amplitud Discreta en el tiempo y continua en amplitud Discreta en la amplitud y continua en el tiempo Continua en tiempo y en amplitud En matlab se pueden definir se˜ales a partir de otras mediante operaciones sobre n vectores. As´ el ejemplo 4 define la potencia instant´nea de la se˜al sinusoide anterior. ı, a n Ejemplo 4 ficom pr1 0004 potencia instantanea.m % Potencia instant´nea a p1 = g.^2; % Definici´n alternativa o p2 = sin(w*t).^2; % Comparaci´n o isequal(p1,p2) 3.1. Se˜ ales especiales n Veamos una posible forma de representar en matlab algunas se˜ales t´ n ıpicas: Dpto. Electr´nica y Electromagnetismo o Facultad de F´ ısica, Universidad de Sevilla
  4. 4. 4 F´ ısica de las Comunicaciones – 2006/2007 – Pr´ctica 1 a Se˜al escal´n, u(t), en el ejemplo 5. n o Se˜al pulso, rect(t), amplitud 1, v´ase el ejemplo 6. n e Se˜al sampling (Sa (t) = n sin(t) t y Sinc(t) = sin(πt) ), πt en el ejemplo 7. Ejemplo 5 ficom pr1 0005 senal escalon.m % Ejemplo de se~al escal´n n o t=-10:0.01:10; g_escalon=[zeros(1,1000), ones(1,1001)]; plot(t,g_escalon); Ejemplo 6 ficom pr1 0006 senal pulso.m % Ejemplo de se~al pulso n t=-10:0.01:10; g_pulso=[zeros(1,950), ones(1,101), zeros(1,950)]; plot(t,g_pulso); Ejemplo 7 ficom pr1 0007 senal sampling.m % Ejemplo de se~al sampling n t=-10:0.01:10; % Se~al sampling (nula en t=n*pi; n=1,2,... n g_sampling = sin(t)./t; plot(t,g_sampling) % Se~al sampling (nula en t=n; n=1,2,... n sinc(t); % equivalente a sin(pi*t)/(pi*t) plot(t,sinc(t)) Pensar c´mo se definir´ otros tipos de se˜ ales, por ejemplo impulso, reco ıan n t´ngulo, triangular, exponencial, cuadrada, etc. a ¿Es posible definir en matlab se˜ ales de los siguientes tipos? n Peri´dicas / no peri´dicas o o Deterministas / aleatorias Continuas / discretas Anal´gicas / digitales o Energ´ / potencia ıa Paso de baja, paso de banda, etc. Dpto. Electr´nica y Electromagnetismo o Facultad de F´ ısica, Universidad de Sevilla
  5. 5. F´ ısica de las Comunicaciones – 2006/2007 – Pr´ctica 1 a 4. 5 An´lisis de Fourier a Utilizando operaciones sobre vectores, se pueden calcular f´cilmente los coeficientes de a Fourier correspondientes a una se˜al. En el ejemplo 8, se definen el vector n, que contiene n los ´ ındices de los coeficientes, y el vector cn, que contiene los coeficientes. Ejemplo 8 ficom pr1 0008 coeficientes fourier.m % Coeficientes de Fourier para una se~al cuadrada de periodo 1s. n n = -10:10; cn = (cos(n*pi)-1)./(-2*j*n*pi); % coeficientes cn(11) = 0.5; subplot(2,1,1) stem(n,abs(cn)) ylabel(’Magnitud de cn’) subplot(2,1,2) stem(n,angle(cn)) ylabel(’Fase de cn’) xlabel(’n’); En matlab, la transformada de Fourier unidimensional se puede calcular mediante la funci´n predefinida fft, que calcula la transformada de Fourier discreta mediante el o algoritmo FFT (Fast finite Fourier transform [6]). En el ejemplo 9, retomamos el ejemplo inicial levemente modificado. En este caso, las representaciones gr´ficas de la se˜al y su transformada no parecen correctas. ¿Qu´ a n e diferencia respecto al ejemplo inicial puede ser la causa? La funci´n base_tiempo_frec proporciona un vector base de frecuencias a partir de o un vector base de tiempos, de modo que la representaci´n de la se˜al en el dominio de la o n frecuencia se corresponda con la representaci´n de la se˜al en el dominio del tiempo. Su o n definici´n, que constituye un ejemplo de definici´n de una funci´n con un par´metro y un o o o a resultado, es la siguiente: function f = base_tiempo_frec (t) % Produce un vector base de frecuencias a partir de un vector base de tiemposxb delta_t = t(2)-t(1); f = ((1:length(t)) - ceil(length(t)/2)) / length(t) / delta_t; Mediante abs y angle obtenemos la magnitud y la fase del espectro de la se˜al. N´tese n o que la amplitud de la transformada obtenida mediante fft queda multiplicada por n respecto a la definici´n vista en las clases de teor´ siendo n el n´mero de elementos del o ıa, u 2 vector utilizado para representar la se˜al original . n 2 Ojo: si el n´mero de elementos del vector dado como transformada se restringe a un n´mero menor u u que la longitud del vector original, la amplitud queda dividida por el mismo valor Dpto. Electr´nica y Electromagnetismo o Facultad de F´ ısica, Universidad de Sevilla
  6. 6. 6 F´ ısica de las Comunicaciones – 2006/2007 – Pr´ctica 1 a Ejemplo 9 ficom pr1 0009 ejemplo brusco2.m % Ejemplo brusco 2 % A) Definici´n de la se~al o n t=-2*pi:0.01:2*pi; w1=2*pi*60; w2=2*pi*200; g = 3*sin(w1*t) - 2*cos(w2*t); % B) Representaci´n en tiempo o subplot(311) plot(t,g) % C) Transformada y representaci´n en frecuencia o G= fftshift(fft(g)); % base de frecuencias f = base_tiempo_frec(t); % amplitud de la transformada subplot(312); plot(f,abs(G)); % fase de la transformada subplot(313); plot(f,angle(G)); % fase, mejor plot(f,unwrap(angle(G))); De manera an´loga, podemos obtener las partes real e imaginaria de cualquiera de las a se˜ales y transformadas (ver el ejemplo 10). n Ejemplo 10 ficom pr1 0010 partes real imaginaria.m % Partes real e imaginaria subplot(211) plot(f,real(G)); subplot(212) plot(f,imag(G)); % probar qu´ pasa... e subplot(211) plot(f,G) Comprobar qu´ pasa si usamos G=fft(g) en lugar de G=fftshift((fft(g)); e El ejemplo 11 ilustra una de las propiedades de la transformada de Fourier: multiplicar por una se˜al coseno equivale a un desplazamiento en el dominio de la frecuencia. Por n otra parte, la funci´n de matlab ifft calcula la transformada de Fourier inversa (ver el o ejemplo 12). Comprobar isequal(g,g_trans) y calcular la se˜ al g - g_trans. n Dpto. Electr´nica y Electromagnetismo o Facultad de F´ ısica, Universidad de Sevilla
  7. 7. F´ ısica de las Comunicaciones – 2006/2007 – Pr´ctica 1 a 7 Ejemplo 11 ficom pr1 0011 multiplicar coseno fourier.m % t x g Multiplicar por coseno equivale a desplazamiento en frecuencia = 0:0.001:1; = cos(2*pi*50*t); = x .* cos(2*pi*10*t); X=fftshift(fft(x)); G=fftshift(fft(g)); f = base_tiempo_frec(t); subplot(211) grid; plot(f,abs(X)); subplot(212) plot(f,abs(G)); Ejemplo 12 ficom pr1 0012 transformada fourier inversa.m % Transformada de Fourier inversa % vale cualquier g de las anteriores t = -pi:0.001:pi; w = 2*pi; g = cos(w*t); g_trans = ifft(fft(g)); Dpto. Electr´nica y Electromagnetismo o Facultad de F´ ısica, Universidad de Sevilla
  8. 8. 8 4.1. F´ ısica de las Comunicaciones – 2006/2007 – Pr´ctica 1 a Producto de convoluci´n o En matlab contamos con las funciones predefinidas conv para calcular la convoluci´n o de dos se˜ales. El ejemplo 13 calcula y representa la convoluci´n de una se˜al coseno con n o n una se˜al escal´n. n o Ejemplo 13 ficom pr1 0013 convolucion.m % Convoluci´n de se~ales o n t = -pi:0.001:pi; g_escalon=[zeros(1,1000*pi+1), ones(1,1000*pi+1)]; w = 2*pi; g = cos(w*t); g_conv = conv(g,g_escalon); subplot(311) plot(t,g) subplot(312) plot(t,g_escalon) subplot(313) plot(t,g_conv(1:length(g))) Comprobar visualmente que se verifican las propiedades de la transformada de Fourier respecto al producto de convoluci´n. o 4.2. Espectros de densidad de energ´ y potencia ıa Para el c´lculo de estos espectros disponemos (adem´s de las funciones para an´lisis a a a de Fourier anteriores) de la funci´n psd, que proporciona la representaci´n de la densidad o o espectral de potencia de una se˜al (en dB). El ejemplo 14 representa gr´ficamente el n a resultado de la funci´n psd para una sinusoide. o Ejemplo 14 ficom pr1 0014 densidad espectral potencia.m % Densidad espectral de potencia t = -pi:0.001:pi; w = 2*pi*100; g = cos(w*t); PSD=psd(g,2^10,length(g)) % densidad espectral de potencia plot(PSD) 5. C´lculo simb´lico. Donde dije digo... a o Durante la pr´ctica hemos representado se˜ales mediante vectores y hemos manipulado a n las se˜ales esencialmente mediante operaciones con vectores. Esta es la forma habitual de n Dpto. Electr´nica y Electromagnetismo o Facultad de F´ ısica, Universidad de Sevilla
  9. 9. F´ ısica de las Comunicaciones – 2006/2007 – Pr´ctica 1 a 9 trabajar con matlab. No obstante, aunque en principio matlab no se dise˜´ para realizar no operaciones simb´licas, s´ es posible definir y manipular se˜ales (y funciones en general) o ı n de manera simb´lica, si disponemos del “Toolbox” para c´lculo simb´lico. As´ como en el o a o ı, ejemplo 15, podemos definir una funci´n seno o una δ de Dirac, y calcular la transformada o de Fourier de manera simb´lica. o Ejemplo 15 ficom pr1 0015 fourier simbolico.m % An´lisis de Fourier con c´lculo simb´lico a a o syms t % crear variable simb´lica o g = sin(2*pi*t) G = fourier(g) % Transformada de Fourier plot(g) % ¡error! ezplot(g) ginv = ifourier(G) % Transformada inversa g2 = dirac(t) G2 = fourier(g2) % Se~al Heaviside/escalon n g3 = heaviside(t) % Suma de series syms k symsum(1/k^2,1,10) symsum(1/k^2,1,Inf) 6. Notas Matlab suele incluir programas de demostraci´n de los “Toolboxes” disponibles. Por o ejemplo, se puede probar una demo sobre la transformada de Fourier discreta mediante la orden sigdemo1. Dentro de la ventana de ´rdenes, se puede obtener ayuda sobre cualquier elemento o de matlab mediante la orden help. Entre otras, se dispone de la orden help help, que proporciona una explicaci´n b´sica de c´mo utilizar help. Del mismo modo, se o a o puede usar la orden doc para consultar la documentaci´n sobre cualquier tema. o Para poner t´ ıtulos y manipular las gr´ficas, adem´s de la interfaz gr´fica, se dispone a a a de las siguientes ´rdenes, entre otras muchas: o title(’T´tulo de la gr´fica’) ı a xlabel(’T´tulo eje horizontal’) ı ylabel(’T´tulo eje vertical’) ı set(gca,’XTick’,-pi:pi/2:pi) % colocar marcas en el eje x hold % acumular gr´ficas sobre la misma ventana a grid % trazar rejilla interna help plot % ayuda espec´fica sobre plot y funciones similares ı doc plot % documentaci´n sobre plot o Las opciones disponibles se detallan en la documentaci´n sobre la orden plot. o Dpto. Electr´nica y Electromagnetismo o Facultad de F´ ısica, Universidad de Sevilla
  10. 10. 10 F´ ısica de las Comunicaciones – 2006/2007 – Pr´ctica 1 a Se pueden obtener diferentes formas de representaci´n gr´fica de se˜ales con las o a n o ´rdenes plot, stem y otras que veremos en pr´ximas pr´cticas. Los apartados “Basic o a Plotting Functions” y “Specialized Plotting” de la documentaci´n de matlab explican o los detalles. 7. Referencias [1] Introduction to Matlab and Octave. http://ccrma.stanford.edu/˜jos/matlab/matlab.pdf. Descripci´n de la historia y las caraco ter´ ısticas generales del lenguaje matlab y en particular de los entornos Matlab y Octave. [2] MATLAB Tutorial. http://www.ece.gatech.edu/users/bonnie/book/TUTORIAL/tutorial.html. De los autores del libro Fundamentals of Signals and Systems Using Matlab. Muy buena introducci´n o al uso de matlab para an´lisis de se˜ales y sistemas en comunicaciones. a n [3] Documentation for MathWorks Products, Release 14. http://www.mathworks.com/access/helpdesk/help/helpdesk.shtml [4] GNU Octave Repository Categorical Index. http://octave.sourceforge.net/index/index.html [5] http://www.gts.tsc.uvigo.es/ssd/. Pr´cticas de la asignatura Se˜ales y Sistemas a n Discretos, impartida por el Departamento de Teor´ de la Se˜al y Comunicaciones de la ıa n Universidad de Vigo. [6] FFTW: A library for computing the discrete Fourier Transform. http://www.fftw.org. [7] Fundamentals of Signals and Systems Using the Web and MATLAB: Online Demos. http://users.ece.gatech.edu/˜bonnie/book/applets.html [8] Numerical Mathematics Consortium (www.nmconsortium.org). Iniciativa de estandarizaci´n de algoritmos y lenguajes num´ricos. o e [9] V.K. Ingle y J.G. Proakis. Digital Signal Processing Using MATLAB V.4. PWS Publishing Company. 1997. ISBN: 0-534–93805-1. Dpto. Electr´nica y Electromagnetismo o Facultad de F´ ısica, Universidad de Sevilla

×