Fourier mat lab

10
ısica de las Comunicaciones – 2006/2007 – Pr´ actica 1 1 Pr´ actica 1: Se ˜ nales y an´ alisis de Fourier 1. Objetivo y contenido En esta pr´ actica pretendemos revisar parte de la materia del tema 2 de la asignatu- ra desde la perspectiva de un entorno de c´ alculo num´ erico y simulaci´ on por ordenador: matlab. El objetivo fundamental es familiarizarse con la definici´ on, manipulaci´ on y repre- sentaci´ on de se˜ nales en matlab. Este documento proporciona un gui´ on que incluye todas las ´ ordenes necesarias para ir siguiendo los apartados de la pr´ actica. Con objeto de centrarnos en la materia de la asignatura y de que la clase sea m´ as amena, hemos optado por no dedicar apartados espec´ ıficos a explicar el entorno ni el lenguaje de programaci´ on matlab, sino por explicar los conceptos y funciones necesarios sobre la marcha. En primer lugar, tras una toma de contacto b´ asica con el entorno, mostraremos un ejemplo que resume los aspectos de la asignatura que se van a tratar en esta pr´ actica. Este primer ejemplo es una aproximaci´ on intuitiva al uso de matlab, con la que pretendemos dar una idea general de las posibilidades del entorno. A lo largo de la pr´ actica se ir´ an detallando los puntos que se presentan brevemente en el ejemplo inicial: definici´ on de y operaci´ on con se˜ nales, representaci´ on gr´ afica, an´ alisis de Fourier y manipulaci´ on de se˜ nales en los dominios del tiempo y la frecuencia. 2. Ejemplo de manipulaci´ on de se˜ nales en matlab Empezamos con un ejemplo que presenta de manera resumida el contenido de esta pr´ actica. En el ejemplo 1, definimos una se˜ nal, calculamos su transformada de Fourier, y la representamos en los dominios del tiempo y de la frecuencia. 3. Se˜ nales en matlab Siendo rigurosos, el procedimiento seguido en el apartado anterior no es adecuado para el an´ alisis de se˜ nales anal´ ogicas; es m´ as, en general matlab no permite analizar se˜ nales anal´ ogicas 1 . Esto se debe a que la forma natural de representar una se˜ nal en matlab es 1 Salvo que se usen bloques funcionales o toolboxes espec´ ıficos. Dpto. Electr´ onica y Electromagnetismo Facultad de F´ ısica, Universidad de Sevilla

Transcript of Fourier mat lab

Page 1: Fourier mat lab

Fısica de las Comunicaciones – 2006/2007 – Practica 1 1

Practica 1: Senales y analisis de Fourier

1. Objetivo y contenido

En esta practica pretendemos revisar parte de la materia del tema 2 de la asignatu-ra desde la perspectiva de un entorno de calculo numerico y simulacion por ordenador:matlab. El objetivo fundamental es familiarizarse con la definicion, manipulacion y repre-sentacion de senales en matlab.

Este documento proporciona un guion que incluye todas las ordenes necesarias parair siguiendo los apartados de la practica. Con objeto de centrarnos en la materia de laasignatura y de que la clase sea mas amena, hemos optado por no dedicar apartadosespecıficos a explicar el entorno ni el lenguaje de programacion matlab, sino por explicarlos conceptos y funciones necesarios sobre la marcha.

En primer lugar, tras una toma de contacto basica con el entorno, mostraremos unejemplo que resume los aspectos de la asignatura que se van a tratar en esta practica. Esteprimer ejemplo es una aproximacion intuitiva al uso de matlab, con la que pretendemosdar una idea general de las posibilidades del entorno.

A lo largo de la practica se iran detallando los puntos que se presentan brevemente enel ejemplo inicial: definicion de y operacion con senales, representacion grafica, analisis deFourier y manipulacion de senales en los dominios del tiempo y la frecuencia.

2. Ejemplo de manipulacion de senales en matlab

Empezamos con un ejemplo que presenta de manera resumida el contenido de estapractica. En el ejemplo 1, definimos una senal, calculamos su transformada de Fourier, yla representamos en los dominios del tiempo y de la frecuencia.

3. Senales en matlab

Siendo rigurosos, el procedimiento seguido en el apartado anterior no es adecuado parael analisis de senales analogicas; es mas, en general matlab no permite analizar senalesanalogicas1. Esto se debe a que la forma natural de representar una senal en matlab es

1Salvo que se usen bloques funcionales o toolboxes especıficos.

Dpto. Electronica y Electromagnetismo Facultad de Fısica, Universidad de Sevilla

Page 2: Fourier mat lab

2 Fısica de las Comunicaciones – 2006/2007 – Practica 1

Ejemplo 1 ficom pr1 0001 ejemplo brusco.m

% Ejemplo brusco% A) Definicion de la se~nalt = -0.25:0.001:0.25;w1 = 2*pi*50;w2 = 2*pi*200;g = 3*sin(w1*t) - 2*cos(w2*t);% B) Representacion en tiemposubplot(311)plot(t,g)% C) Transformada y representacion en frecuenciaG = fftshift(fft(g));% base de frecuenciasf = base_tiempo_frec(t);% amplitud de la transformadasubplot(312);plot(f,abs(G));% fase de la transformadasubplot(313);plot(f,angle(G));% fase, mejorplot(f,unwrap(angle(G)));

definir una secuencia finita de valores mediante un vector fila. Ası, por ejemplo, podemosdefinir 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 senal. Y, del mismo modo, en elejemplo 2, definimos una senal sinusoide como una secuencia de valores.

Ejemplo 2 ficom pr1 0002 senal sinusoide.m

% Ejemplo de definicion de se~nal sinusoide% base de tiempost = -2*pi:0.001:2*piw = 2*pi*1g = sin(w*t)% Diferentes estilos de representacionplot(t,g)plot(t,g,’*’)stem(t,g) % Otra forma de representacion grafica

Se puede acceder a los elementos de los vectores usando la notacion del ejemplo 3.Notese que t(1) representa un instante de tiempo, mientras que g(1) representa el valorque toma la senal g en ese instante.

Por tanto, siendo estrictos, en matlab toda senal es discreta en tiempo, mientras que enamplitud puede ser discreta (cuantizada) o continua (aunque limitada por la precision delos tipos numericos). No obstante, si los intervalos temporales entre valores son suficiente-mente pequenos y el rango temporal en que se define la senal es suficientemente amplio, la

Dpto. Electronica y Electromagnetismo Facultad de Fısica, Universidad de Sevilla

Page 3: Fourier mat lab

Fısica de las Comunicaciones – 2006/2007 – Practica 1 3

Ejemplo 3 ficom pr1 0003 elementos vectores.m

% Acceso a elementos de los vectoresg(1)g(2)t(length(t))

secuencia de valores empleada para representar la senal y las operaciones realizadas parasu analisis proporcionan una buena aproximacion a los resultados teoricos.

En el caso mas simple y frecuente, los valores se toman en instantes equiespaciados,intervalo que no debe confundirse con el periodo de muestreo. De momento, ignoraremosel efecto de la discretizacion de senales (utilizaremos intervalos de tiempo suficientementepequenos, de modo que los efectos sean despreciables). Asimismo, la amplitud de lassenales esta sometida a una discretizacion que, dada la precision de los tipos numericosempleados en matlab, podemos ignorar.

Representar la senal sinusoide anterior para diferentes intervalos de la basede tiempos t.

Pensar si es posible y como se puede definir en matlab una senal pertene-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 senales a partir de otras mediante operaciones sobrevectores. Ası, el ejemplo 4 define la potencia instantanea de la senal sinusoide anterior.

Ejemplo 4 ficom pr1 0004 potencia instantanea.m

% Potencia instantaneap1 = g.^2;% Definicion alternativap2 = sin(w*t).^2;% Comparacionisequal(p1,p2)

3.1. Senales especiales

Veamos una posible forma de representar en matlab algunas senales tıpicas:

Dpto. Electronica y Electromagnetismo Facultad de Fısica, Universidad de Sevilla

Page 4: Fourier mat lab

4 Fısica de las Comunicaciones – 2006/2007 – Practica 1

Senal escalon, u(t), en el ejemplo 5.

Senal pulso, rect(t), amplitud 1, vease el ejemplo 6.

Senal sampling (Sa(t) = sin(t)t

y Sinc(t) = sin(πt)πt

), en el ejemplo 7.

Ejemplo 5 ficom pr1 0005 senal escalon.m

% Ejemplo de se~nal escalont=-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~nal pulsot=-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~nal samplingt=-10:0.01:10;% Se~nal sampling (nula en t=n*pi; n=1,2,...g_sampling = sin(t)./t;plot(t,g_sampling)% Se~nal sampling (nula en t=n; n=1,2,...sinc(t); % equivalente a sin(pi*t)/(pi*t)plot(t,sinc(t))

Pensar como se definirıan otros tipos de senales, por ejemplo impulso, rec-tangulo, triangular, exponencial, cuadrada, etc.

¿Es posible definir en matlab senales de los siguientes tipos?

Periodicas / no periodicas

Deterministas / aleatorias

Continuas / discretas

Analogicas / digitales

Energıa / potencia

Paso de baja, paso de banda, etc.

Dpto. Electronica y Electromagnetismo Facultad de Fısica, Universidad de Sevilla

Page 5: Fourier mat lab

Fısica de las Comunicaciones – 2006/2007 – Practica 1 5

4. Analisis de Fourier

Utilizando operaciones sobre vectores, se pueden calcular facilmente los coeficientes deFourier correspondientes a una senal. En el ejemplo 8, se definen el vector n, que contienelos ı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~nal cuadrada de periodo 1s.n = -10:10;cn = (cos(n*pi)-1)./(-2*j*n*pi); % coeficientescn(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 mediantela funcion predefinida fft, que calcula la transformada de Fourier discreta mediante elalgoritmo FFT (Fast finite Fourier transform [6]).

En el ejemplo 9, retomamos el ejemplo inicial levemente modificado. En este caso,las representaciones graficas de la senal y su transformada no parecen correctas. ¿Quediferencia respecto al ejemplo inicial puede ser la causa?

La funcion base_tiempo_frec proporciona un vector base de frecuencias a partir deun vector base de tiempos, de modo que la representacion de la senal en el dominio de lafrecuencia se corresponda con la representacion de la senal en el dominio del tiempo. Sudefinicion, que constituye un ejemplo de definicion de una funcion con un parametro y unresultado, es la siguiente:

function f = base_tiempo_frec (t)% Produce un vector base de frecuencias a partir de un vector base de tiemposxbdelta_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 senal. Noteseque la amplitud de la transformada obtenida mediante fft queda multiplicada por nrespecto a la definicion vista en las clases de teorıa, siendo n el numero de elementos delvector utilizado para representar la senal original2.

2Ojo: si el numero de elementos del vector dado como transformada se restringe a un numero menorque la longitud del vector original, la amplitud queda dividida por el mismo valor

Dpto. Electronica y Electromagnetismo Facultad de Fısica, Universidad de Sevilla

Page 6: Fourier mat lab

6 Fısica de las Comunicaciones – 2006/2007 – Practica 1

Ejemplo 9 ficom pr1 0009 ejemplo brusco2.m

% Ejemplo brusco 2% A) Definicion de la se~nalt=-2*pi:0.01:2*pi;w1=2*pi*60;w2=2*pi*200;g = 3*sin(w1*t) - 2*cos(w2*t);% B) Representacion en tiemposubplot(311)plot(t,g)% C) Transformada y representacion en frecuenciaG= fftshift(fft(g));% base de frecuenciasf = base_tiempo_frec(t);% amplitud de la transformadasubplot(312);plot(f,abs(G));% fase de la transformadasubplot(313);plot(f,angle(G));% fase, mejorplot(f,unwrap(angle(G)));

De manera analoga, podemos obtener las partes real e imaginaria de cualquiera de lassenales y transformadas (ver el ejemplo 10).

Ejemplo 10 ficom pr1 0010 partes real imaginaria.m

% Partes real e imaginariasubplot(211)plot(f,real(G));subplot(212)plot(f,imag(G));% probar que pasa...subplot(211)plot(f,G)

Comprobar que pasa si usamos G=fft(g) en lugar de G=fftshift((fft(g));

El ejemplo 11 ilustra una de las propiedades de la transformada de Fourier: multiplicarpor una senal coseno equivale a un desplazamiento en el dominio de la frecuencia. Porotra parte, la funcion de matlab ifft calcula la transformada de Fourier inversa (ver elejemplo 12).

Comprobar isequal(g,g_trans) y calcular la senal g - g_trans.

Dpto. Electronica y Electromagnetismo Facultad de Fısica, Universidad de Sevilla

Page 7: Fourier mat lab

Fısica de las Comunicaciones – 2006/2007 – Practica 1 7

Ejemplo 11 ficom pr1 0011 multiplicar coseno fourier.m

% Multiplicar por coseno equivale a desplazamiento en frecuenciat = 0:0.001:1;x = cos(2*pi*50*t);g = 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 anteriorest = -pi:0.001:pi;w = 2*pi;g = cos(w*t);g_trans = ifft(fft(g));

Dpto. Electronica y Electromagnetismo Facultad de Fısica, Universidad de Sevilla

Page 8: Fourier mat lab

8 Fısica de las Comunicaciones – 2006/2007 – Practica 1

4.1. Producto de convolucion

En matlab contamos con las funciones predefinidas conv para calcular la convolucionde dos senales. El ejemplo 13 calcula y representa la convolucion de una senal coseno conuna senal escalon.

Ejemplo 13 ficom pr1 0013 convolucion.m% Convolucion de se~nalest = -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 transformadade Fourier respecto al producto de convolucion.

4.2. Espectros de densidad de energıa y potencia

Para el calculo de estos espectros disponemos (ademas de las funciones para analisisde Fourier anteriores) de la funcion psd, que proporciona la representacion de la densidadespectral de potencia de una senal (en dB). El ejemplo 14 representa graficamente elresultado de la funcion psd para una sinusoide.

Ejemplo 14 ficom pr1 0014 densidad espectral potencia.m

% Densidad espectral de potenciat = -pi:0.001:pi;w = 2*pi*100;g = cos(w*t);PSD=psd(g,2^10,length(g)) % densidad espectral de potenciaplot(PSD)

5. Calculo simbolico. Donde dije digo...

Durante la practica hemos representado senales mediante vectores y hemos manipuladolas senales esencialmente mediante operaciones con vectores. Esta es la forma habitual de

Dpto. Electronica y Electromagnetismo Facultad de Fısica, Universidad de Sevilla

Page 9: Fourier mat lab

Fısica de las Comunicaciones – 2006/2007 – Practica 1 9

trabajar con matlab. No obstante, aunque en principio matlab no se diseno para realizaroperaciones simbolicas, sı es posible definir y manipular senales (y funciones en general)de manera simbolica, si disponemos del “Toolbox” para calculo simbolico. Ası, como en elejemplo 15, podemos definir una funcion seno o una δ de Dirac, y calcular la transformadade Fourier de manera simbolica.

Ejemplo 15 ficom pr1 0015 fourier simbolico.m

% Analisis de Fourier con calculo simbolicosyms t % crear variable simbolicag = sin(2*pi*t)G = fourier(g) % Transformada de Fourierplot(g) % ¡error!ezplot(g)ginv = ifourier(G) % Transformada inversag2 = dirac(t)G2 = fourier(g2)% Se~nal Heaviside/escalong3 = heaviside(t)% Suma de seriessyms ksymsum(1/k^2,1,10)symsum(1/k^2,1,Inf)

6. Notas

Matlab suele incluir programas de demostracion de los “Toolboxes” disponibles. Porejemplo, se puede probar una demo sobre la transformada de Fourier discreta me-diante la orden sigdemo1.

Dentro de la ventana de ordenes, se puede obtener ayuda sobre cualquier elementode matlab mediante la orden help. Entre otras, se dispone de la orden help help,que proporciona una explicacion basica de como utilizar help. Del mismo modo, sepuede usar la orden doc para consultar la documentacion sobre cualquier tema.

Para poner tıtulos y manipular las graficas, ademas de la interfaz grafica, se disponede las siguientes ordenes, entre otras muchas:

title(’Tıtulo de la grafica’)xlabel(’Tıtulo eje horizontal’)ylabel(’Tıtulo eje vertical’)set(gca,’XTick’,-pi:pi/2:pi) % colocar marcas en el eje xhold % acumular graficas sobre la misma ventanagrid % trazar rejilla internahelp plot % ayuda especıfica sobre plot y funciones similaresdoc plot % documentacion sobre plot

Las opciones disponibles se detallan en la documentacion sobre la orden plot.

Dpto. Electronica y Electromagnetismo Facultad de Fısica, Universidad de Sevilla

Page 10: Fourier mat lab

10 Fısica de las Comunicaciones – 2006/2007 – Practica 1

Se pueden obtener diferentes formas de representacion grafica de senales con lasordenes plot, stem y otras que veremos en proximas practicas. Los apartados“BasicPlotting Functions”y“Specialized Plotting”de la documentacion de matlab explicanlos detalles.

7. Referencias

[1] Introduction to Matlab and Octave.http://ccrma.stanford.edu/˜jos/matlab/matlab.pdf. Descripcion de la historia y las carac-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 auto-res del libro Fundamentals of Signals and Systems Using Matlab. Muy buena introduccional uso de matlab para analisis de senales y sistemas en comunicaciones.

[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/. Practicas de la asignatura Senales y SistemasDiscretos, impartida por el Departamento de Teorıa de la Senal y Comunicaciones de laUniversidad 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 estan-darizacion de algoritmos y lenguajes numericos.

[9] V.K. Ingle y J.G. Proakis. Digital Signal Processing Using MATLAB V.4. PWSPublishing Company. 1997. ISBN: 0-534–93805-1.

Dpto. Electronica y Electromagnetismo Facultad de Fısica, Universidad de Sevilla