Вы находитесь на странице: 1из 10

F sica de las Comunicaciones 2006/2007 Prctica 1 a

Prctica 1: Senales y anlisis de Fourier a a

1.

Objetivo y contenido

En esta prctica pretendemos revisar parte de la materia del tema 2 de la asignatua ra desde la perspectiva de un entorno de clculo numrico y simulacin por ordenador: a e o matlab. El objetivo fundamental es familiarizarse con la denicin, manipulacin y repreo o sentacin de seales en matlab. o n Este documento proporciona un guin que incluye todas las rdenes necesarias para o o ir siguiendo los apartados de la prctica. Con objeto de centrarnos en la materia de la a asignatura y de que la clase sea ms amena, hemos optado por no dedicar apartados a espec cos a explicar el entorno ni el lenguaje de programacin matlab, sino por explicar o los conceptos y funciones necesarios sobre la marcha. En primer lugar, tras una toma de contacto bsica con el entorno, mostraremos un a ejemplo que resume los aspectos de la asignatura que se van a tratar en esta prctica. Este a primer ejemplo es una aproximacin intuitiva al uso de matlab, con la que pretendemos o dar una idea general de las posibilidades del entorno. A lo largo de la prctica se irn detallando los puntos que se presentan brevemente en a a el ejemplo inicial: denicin de y operacin con seales, representacin grca, anlisis de o o n o a a Fourier y manipulacin de seales en los dominios del tiempo y la frecuencia. o n

2.

Ejemplo de manipulacin de se ales en matlab o n

Empezamos con un ejemplo que presenta de manera resumida el contenido de esta prctica. En el ejemplo 1, denimos una seal, 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 anlisis de seales analgicas; es ms, en general matlab no permite analizar seales a n o a n 1 analgicas . Esto se debe a que la forma natural de representar una seal en matlab es o n
1

Salvo que se usen bloques funcionales o toolboxes espec cos.

Dpto. Electrnica y Electromagnetismo o

Facultad de F sica, Universidad de Sevilla

F sica de las Comunicaciones 2006/2007 Prctica 1 a

Ejemplo 1 com pr1 0001 ejemplo brusco.m


% Ejemplo brusco % A) Definicin 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) Representacin en tiempo o subplot(311) plot(t,g) % C) Transformada y representacin 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)));

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 seal. Y, del mismo modo, en el n ejemplo 2, denimos una seal sinusoide como una secuencia de valores. n Ejemplo 2 com pr1 0002 senal sinusoide.m
% Ejemplo de definicin 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 representacin o plot(t,g) plot(t,g,*) stem(t,g) % Otra forma de representacin grfica o a

Se puede acceder a los elementos de los vectores usando la notacin del ejemplo 3. o Ntese que t(1) representa un instante de tiempo, mientras que g(1) representa el valor o que toma la seal g en ese instante. n Por tanto, siendo estrictos, en matlab toda seal es discreta en tiempo, mientras que en n amplitud puede ser discreta (cuantizada) o continua (aunque limitada por la precisin de o los tipos numricos). No obstante, si los intervalos temporales entre valores son sucientee mente pequeos y el rango temporal en que se dene la seal es sucientemente amplio, la n n
Dpto. Electrnica y Electromagnetismo o Facultad de F sica, Universidad de Sevilla

F sica de las Comunicaciones 2006/2007 Prctica 1 a

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 seal y las operaciones realizadas para n su anlisis proporcionan una buena aproximacin a los resultados tericos. a o o En el caso ms 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 discretizacin de seales (utilizaremos intervalos de tiempo sucientemente o n pequeos, de modo que los efectos sean despreciables). Asimismo, la amplitud de las n seales est sometida a una discretizacin que, dada la precisin de los tipos numricos 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 cmo se puede denir 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 denir seales a partir de otras mediante operaciones sobre n vectores. As el ejemplo 4 dene la potencia instantnea de la seal sinusoide anterior. , a n Ejemplo 4 com pr1 0004 potencia instantanea.m
% Potencia instantnea a p1 = g.^2; % Definicin alternativa o p2 = sin(w*t).^2; % Comparacin o isequal(p1,p2)

3.1.

Se ales especiales n

Veamos una posible forma de representar en matlab algunas seales t n picas:


Dpto. Electrnica y Electromagnetismo o Facultad de F sica, Universidad de Sevilla

F sica de las Comunicaciones 2006/2007 Prctica 1 a

Seal escaln, u(t), en el ejemplo 5. n o Seal pulso, rect(t), amplitud 1, vase el ejemplo 6. n e Seal sampling (Sa (t) = n
sin(t) t

y Sinc(t) =

sin(t) ), t

en el ejemplo 7.

Ejemplo 5 com pr1 0005 senal escalon.m


% Ejemplo de se~al escaln n o 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~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 com 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 cmo se denir otros tipos de se ales, por ejemplo impulso, reco an n tngulo, triangular, exponencial, cuadrada, etc. a Es posible denir en matlab se ales de los siguientes tipos? n Peridicas / no peridicas o o Deterministas / aleatorias Continuas / discretas Analgicas / digitales o Energ / potencia a Paso de baja, paso de banda, etc.

Dpto. Electrnica y Electromagnetismo o

Facultad de F sica, Universidad de Sevilla

F sica de las Comunicaciones 2006/2007 Prctica 1 a

4.

Anlisis de Fourier a

Utilizando operaciones sobre vectores, se pueden calcular fcilmente los coecientes de a Fourier correspondientes a una seal. En el ejemplo 8, se denen el vector n, que contiene n 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~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 funcin predenida fft, que calcula la transformada de Fourier discreta mediante el o algoritmo FFT (Fast nite Fourier transform [6]). En el ejemplo 9, retomamos el ejemplo inicial levemente modicado. En este caso, las representaciones grcas de la seal y su transformada no parecen correctas. Qu a n e diferencia respecto al ejemplo inicial puede ser la causa? La funcin base_tiempo_frec proporciona un vector base de frecuencias a partir de o un vector base de tiempos, de modo que la representacin de la seal en el dominio de la o n frecuencia se corresponda con la representacin de la seal en el dominio del tiempo. Su o n denicin, que constituye un ejemplo de denicin de una funcin con un parmetro 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 seal. Ntese n o que la amplitud de la transformada obtenida mediante fft queda multiplicada por n respecto a la denicin vista en las clases de teor siendo n el nmero de elementos del o a, u 2 vector utilizado para representar la seal original . n
Ojo: si el nmero de elementos del vector dado como transformada se restringe a un nmero menor u u que la longitud del vector original, la amplitud queda dividida por el mismo valor
2

Dpto. Electrnica y Electromagnetismo o

Facultad de F sica, Universidad de Sevilla

F sica de las Comunicaciones 2006/2007 Prctica 1 a

Ejemplo 9 com pr1 0009 ejemplo brusco2.m


% Ejemplo brusco 2 % A) Definicin 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) Representacin en tiempo o subplot(311) plot(t,g) % C) Transformada y representacin 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 anloga, podemos obtener las partes real e imaginaria de cualquiera de las a seales y transformadas (ver el ejemplo 10). n

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 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 seal coseno equivale a un desplazamiento en el dominio de la frecuencia. Por n otra parte, la funcin 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. Electrnica y Electromagnetismo o Facultad de F sica, Universidad de Sevilla

F sica de las Comunicaciones 2006/2007 Prctica 1 a

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. Electrnica y Electromagnetismo o

Facultad de F sica, Universidad de Sevilla

F sica de las Comunicaciones 2006/2007 Prctica 1 a

4.1.

Producto de convolucin o

En matlab contamos con las funciones predenidas conv para calcular la convolucin o de dos seales. El ejemplo 13 calcula y representa la convolucin de una seal coseno con n o n una seal escaln. n o Ejemplo 13 com pr1 0013 convolucion.m
% Convolucin 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 verican las propiedades de la transformada de Fourier respecto al producto de convolucin. o

4.2.

Espectros de densidad de energ y potencia a

Para el clculo de estos espectros disponemos (adems de las funciones para anlisis a a a de Fourier anteriores) de la funcin psd, que proporciona la representacin de la densidad o o espectral de potencia de una seal (en dB). El ejemplo 14 representa grcamente el n a resultado de la funcin psd para una sinusoide. o 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.

Clculo simblico. Donde dije digo... a o

Durante la prctica hemos representado seales mediante vectores y hemos manipulado a n las seales esencialmente mediante operaciones con vectores. Esta es la forma habitual de n
Dpto. Electrnica y Electromagnetismo o Facultad de F sica, Universidad de Sevilla

F sica de las Comunicaciones 2006/2007 Prctica 1 a

trabajar con matlab. No obstante, aunque en principio matlab no se dise para realizar no operaciones simblicas, s es posible denir y manipular seales (y funciones en general) o n de manera simblica, si disponemos del Toolbox para clculo simblico. As como en el o a o , ejemplo 15, podemos denir una funcin seno o una de Dirac, y calcular la transformada o de Fourier de manera simblica. o Ejemplo 15 com pr1 0015 fourier simbolico.m
% Anlisis de Fourier con clculo simblico a a o syms t % crear variable simblica 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 demostracin 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 explicacin bsica de cmo utilizar help. Del mismo modo, se o a o puede usar la orden doc para consultar la documentacin sobre cualquier tema. o Para poner t tulos y manipular las grcas, adems de la interfaz grca, se dispone a a a de las siguientes rdenes, entre otras muchas: o
title(Ttulo de la grfica) a xlabel(Ttulo eje horizontal) ylabel(Ttulo eje vertical) set(gca,XTick,-pi:pi/2:pi) % colocar marcas en el eje x hold % acumular grficas sobre la misma ventana a grid % trazar rejilla interna help plot % ayuda especfica sobre plot y funciones similares doc plot % documentacin sobre plot o

Las opciones disponibles se detallan en la documentacin sobre la orden plot. o


Dpto. Electrnica y Electromagnetismo o Facultad de F sica, Universidad de Sevilla

10

F sica de las Comunicaciones 2006/2007 Prctica 1 a

Se pueden obtener diferentes formas de representacin grca de seales con las o a n o rdenes plot, stem y otras que veremos en prximas prcticas. Los apartados Basic o a Plotting Functions y Specialized Plotting de la documentacin de matlab explican o los detalles.

7.

Referencias

[1] Introduction to Matlab and Octave. http://ccrma.stanford.edu/jos/matlab/matlab.pdf. Descripcin 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 introduccin o al uso de matlab para anlisis de seales 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/. Prcticas de la asignatura Seales y Sistemas a n Discretos, impartida por el Departamento de Teor de la Seal y Comunicaciones de la a n 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 estandarizacin de algoritmos y lenguajes numricos. o e [9] V.K. Ingle y J.G. Proakis. Digital Signal Processing Using MATLAB V.4. PWS Publishing Company. 1997. ISBN: 0-53493805-1.

Dpto. Electrnica y Electromagnetismo o

Facultad de F sica, Universidad de Sevilla

Вам также может понравиться