Está en la página 1de 10

F sica de las Comunicaciones 2006/2007 Pr actica 1

Pr actica 1: Sen ales y an alisis de Fourier

1.

Objetivo y contenido

En esta pr actica pretendemos revisar parte de la materia del tema 2 de la asignatura desde la perspectiva de un entorno de c alculo num erico y simulaci on por ordenador: matlab. El objetivo fundamental es familiarizarse con la denici on, manipulaci on y representaci 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 cos 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: denici on de y operaci on con se nales, representaci on gr aca, 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, denimos 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 1 anal ogicas . 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 cos.

Dpto. Electr onica y Electromagnetismo

Facultad de F sica, Universidad de Sevilla

F sica de las Comunicaciones 2006/2007 Pr actica 1

Ejemplo 1 com pr1 0001 ejemplo brusco.m


% Ejemplo brusco % A) Definici on de la se~ nal 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 on en tiempo subplot(311) plot(t,g) % C) Transformada y representaci on en frecuencia 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)));

denir una secuencia nita de valores mediante un vector la. As , por ejemplo, podemos denir 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 nal. Y, del mismo modo, en el ejemplo 2, denimos una se nal sinusoide como una secuencia de valores. Ejemplo 2 com pr1 0002 senal sinusoide.m
% Ejemplo de definici on de se~ nal sinusoide % base de tiempos t = -2*pi:0.001:2*pi w = 2*pi*1 g = sin(w*t) % Diferentes estilos de representaci on plot(t,g) plot(t,g,*) stem(t,g) % Otra forma de representaci on gr afica

Se puede acceder a los elementos de los vectores usando la notaci on del ejemplo 3. N otese que t(1) representa un instante de tiempo, mientras que g (1) representa el valor que toma la se nal g en ese instante. Por tanto, siendo estrictos, en matlab toda se nal es discreta en tiempo, mientras que en amplitud puede ser discreta (cuantizada) o continua (aunque limitada por la precisi on de los tipos num ericos). No obstante, si los intervalos temporales entre valores son sucientemente peque nos y el rango temporal en que se dene la se nal es sucientemente amplio, la
Dpto. Electr onica y Electromagnetismo Facultad de F sica, Universidad de Sevilla

F sica de las Comunicaciones 2006/2007 Pr actica 1

Ejemplo 3 com 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 nal y las operaciones realizadas para su an alisis proporcionan una buena aproximaci on a los resultados te oricos. En el caso m as simple y frecuente, los valores se toman en instantes equiespaciados, intervalo que no debe confundirse con el periodo de muestreo. De momento, ignoraremos el efecto de la discretizaci on de se nales (utilizaremos intervalos de tiempo sucientemente peque nos, de modo que los efectos sean despreciables). Asimismo, la amplitud de las se nales est a sometida a una discretizaci on que, dada la precisi on de los tipos num ericos empleados en matlab, podemos ignorar. Representar la se nal sinusoide anterior para diferentes intervalos de la base de tiempos t. Pensar si es posible y c omo se puede denir en matlab una se nal perteneciente 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 denir se nales a partir de otras mediante operaciones sobre vectores. As , el ejemplo 4 dene la potencia instant anea de la se nal sinusoide anterior. Ejemplo 4 com pr1 0004 potencia instantanea.m
% Potencia instant anea p1 = g.^2; % Definici on alternativa p2 = sin(w*t).^2; % Comparaci on isequal(p1,p2)

3.1.

Se nales especiales

Veamos una posible forma de representar en matlab algunas se nales t picas:


Dpto. Electr onica y Electromagnetismo Facultad de F sica, Universidad de Sevilla

F sica de las Comunicaciones 2006/2007 Pr actica 1

Se nal escal on, u(t), en el ejemplo 5. Se nal pulso, rect(t), amplitud 1, v ease el ejemplo 6. Se nal sampling (Sa (t) =
sin(t) t

y Sinc(t) =

sin(t) ), t

en el ejemplo 7.

Ejemplo 5 com pr1 0005 senal escalon.m


% Ejemplo de se~ nal escal on t=-10:0.01:10; g_escalon=[zeros(1,1000), ones(1,1001)]; plot(t,g_escalon);

Ejemplo 6 com pr1 0006 senal pulso.m


% Ejemplo de se~ nal pulso t=-10:0.01:10; g_pulso=[zeros(1,950), ones(1,101), zeros(1,950)]; plot(t,g_pulso);

Ejemplo 7 com pr1 0007 senal sampling.m


% Ejemplo de se~ nal sampling t=-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 c omo se denir an otros tipos de se nales, por ejemplo impulso, rect angulo, triangular, exponencial, cuadrada, etc. Es posible denir en matlab se nales de los siguientes tipos? Peri odicas / no peri odicas Deterministas / aleatorias Continuas / discretas Anal ogicas / digitales Energ a / potencia Paso de baja, paso de banda, etc.

Dpto. Electr onica y Electromagnetismo

Facultad de F sica, Universidad de Sevilla

F sica de las Comunicaciones 2006/2007 Pr actica 1

4.

An alisis de Fourier

Utilizando operaciones sobre vectores, se pueden calcular f acilmente los coecientes de Fourier correspondientes a una se nal. En el ejemplo 8, se denen el vector n, que contiene los ndices de los coecientes, y el vector cn, que contiene los coecientes. Ejemplo 8 com pr1 0008 coecientes 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); % 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 on predenida fft, que calcula la transformada de Fourier discreta mediante el algoritmo FFT (Fast nite Fourier transform [6]). En el ejemplo 9, retomamos el ejemplo inicial levemente modicado. En este caso, las representaciones gr acas de la se nal y su transformada no parecen correctas. Qu e diferencia respecto al ejemplo inicial puede ser la causa? La funci on base_tiempo_frec proporciona un vector base de frecuencias a partir de un vector base de tiempos, de modo que la representaci on de la se nal en el dominio de la frecuencia se corresponda con la representaci on de la se nal en el dominio del tiempo. Su denici on, que constituye un ejemplo de denici on de una funci on con un par ametro y un 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 nal. N otese que la amplitud de la transformada obtenida mediante fft queda multiplicada por n respecto a la denici on vista en las clases de teor a, siendo n el n umero de elementos del 2 vector utilizado para representar la se nal original .
Ojo: si el n umero de elementos del vector dado como transformada se restringe a un n umero menor que la longitud del vector original, la amplitud queda dividida por el mismo valor
2

Dpto. Electr onica y Electromagnetismo

Facultad de F sica, Universidad de Sevilla

F sica de las Comunicaciones 2006/2007 Pr actica 1

Ejemplo 9 com pr1 0009 ejemplo brusco2.m


% Ejemplo brusco 2 % A) Definici on de la se~ nal 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 on en tiempo subplot(311) plot(t,g) % C) Transformada y representaci on en frecuencia 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 aloga, podemos obtener las partes real e imaginaria de cualquiera de las se nales y transformadas (ver el ejemplo 10).

Ejemplo 10 com pr1 0010 partes real imaginaria.m


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

Comprobar qu e 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: multiplicar por una se nal coseno equivale a un desplazamiento en el dominio de la frecuencia. Por otra parte, la funci on de matlab ifft calcula la transformada de Fourier inversa (ver el ejemplo 12). Comprobar isequal(g,g_trans) y calcular la se nal g - g_trans.
Dpto. Electr onica y Electromagnetismo Facultad de F sica, Universidad de Sevilla

F sica de las Comunicaciones 2006/2007 Pr actica 1

Ejemplo 11 com 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 com 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 onica y Electromagnetismo

Facultad de F sica, Universidad de Sevilla

F sica de las Comunicaciones 2006/2007 Pr actica 1

4.1.

Producto de convoluci on

En matlab contamos con las funciones predenidas conv para calcular la convoluci on de dos se nales. El ejemplo 13 calcula y representa la convoluci on de una se nal coseno con una se nal escal on. Ejemplo 13 com pr1 0013 convolucion.m
% Convoluci on de se~ nales 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 verican las propiedades de la transformada de Fourier respecto al producto de convoluci on.

4.2.

Espectros de densidad de energ a y potencia

Para el c alculo de estos espectros disponemos (adem as de las funciones para an alisis de Fourier anteriores) de la funci on psd, que proporciona la representaci on de la densidad espectral de potencia de una se nal (en dB ). El ejemplo 14 representa gr acamente el resultado de la funci on psd para una sinusoide. Ejemplo 14 com 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 alculo simb olico. Donde dije digo...

Durante la pr actica hemos representado se nales mediante vectores y hemos manipulado las se nales esencialmente mediante operaciones con vectores. Esta es la forma habitual de
Dpto. Electr onica y Electromagnetismo Facultad de F sica, Universidad de Sevilla

F sica de las Comunicaciones 2006/2007 Pr actica 1

trabajar con matlab. No obstante, aunque en principio matlab no se dise n o para realizar operaciones simb olicas, s es posible denir y manipular se nales (y funciones en general) de manera simb olica, si disponemos del Toolbox para c alculo simb olico. As , como en el ejemplo 15, podemos denir una funci on seno o una de Dirac, y calcular la transformada de Fourier de manera simb olica. Ejemplo 15 com pr1 0015 fourier simbolico.m
% An alisis de Fourier con c alculo simb olico syms t % crear variable simb olica 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~ nal Heaviside/escalon 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 on de los Toolboxes disponibles. Por ejemplo, se puede probar una demo sobre la transformada de Fourier discreta mediante la orden sigdemo1. Dentro de la ventana de ordenes, se puede obtener ayuda sobre cualquier elemento de matlab mediante la orden help. Entre otras, se dispone de la orden help help, que proporciona una explicaci on b asica de c omo utilizar help. Del mismo modo, se puede usar la orden doc para consultar la documentaci on sobre cualquier tema. Para poner t tulos y manipular las gr acas, adem as de la interfaz gr aca, se dispone de las siguientes ordenes, entre otras muchas:
title(T tulo de la gr afica) 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 aficas sobre la misma ventana grid % trazar rejilla interna help plot % ayuda espec fica sobre plot y funciones similares doc plot % documentaci on sobre plot

Las opciones disponibles se detallan en la documentaci on sobre la orden plot.


Dpto. Electr onica y Electromagnetismo Facultad de F sica, Universidad de Sevilla

10

F sica de las Comunicaciones 2006/2007 Pr actica 1

Se pueden obtener diferentes formas de representaci on gr aca de se nales con las ordenes plot, stem y otras que veremos en pr oximas pr acticas. Los apartados Basic Plotting Functions y Specialized Plotting de la documentaci on de matlab explican los detalles.

7.

Referencias

[1] Introduction to Matlab and Octave. http://ccrma.stanford.edu/jos/matlab/matlab.pdf. Descripci on de la historia y las caracter 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 on al uso de matlab para an alisis de se nales 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/. Pr acticas de la asignatura Se nales y Sistemas Discretos, impartida por el Departamento de Teor a de la Se nal y Comunicaciones de la Universidad de Vigo. [6] FFTW: A library for computing the discrete Fourier Transform. http://www.tw.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 on de algoritmos y lenguajes num ericos. [9] V.K. Ingle y J.G. Proakis. Digital Signal Processing Using MATLAB V.4. PWS Publishing Company. 1997. ISBN: 0-53493805-1.

Dpto. Electr onica y Electromagnetismo

Facultad de F sica, Universidad de Sevilla

También podría gustarte