You are on page 1of 5

Representacin de seales en MATLAB ( T.II.

1)
Este anexo incluye una referencia del cdigo Matlab utilizado para calcular y visualizar el espectro en frecuencia de las seales continuas utilizadas en las prcticas, as como su justificacin. Se distinguen dos casos, seales de tipo energa (tienen energa finita) y seales de tipo potencia (con duracin infinita y por tanto energa infinita, pero potencia finita). En las prcticas, la mayora de las seales se considerarn peridicas e infinitas, por lo tanto de tipo POTENCIA.

Para seales de tipo energa

En la asignatura de Sistemas Lineales se utiliza la transformada de Fourier para representar el espectro. Para seales de tipo energa, se utiliza esta representacin, ya que su mdulo al cuadrado tiene un sentido fsico, que es la densidad espectral de energa:
Gx ( f ) = X ( f )
2

Para obtener en Matlab la TF de una seal continua, se acude a aproximaciones numricas. Dada una seal x(t ) , la integral que involucra el clculo de su TF se puede expresar como el lmite de un sumatorio, del siguiente modo:
X(f )=

x(t ) e j 2ft dt = lim

t 0

n =

x(n t ) e j 2f (nt )t

que equivale a expresar la integral definida como el sumatorio de las areas de rectngulos (de base t) encerrados bajo la funcin x(t), cuando t tiende a cero (integral de Riemann). En Matlab, las seales se describen como vectores de muestras, por lo tanto, la aproximacin utilizada se basar en el muestreo de la seal original. Supondremos una seal de energa finita x(t) definida en el intervalo 0t<T. Ahora bien, la frecuencia de muestreo fs, ha de ser suficientemente elevada para que no se produzca solapamiento espectral, es decir, que cumpla el criterio de Nyquist:

f s > 2 f max
donde fmax es la frecuencia mxima de la seal x(t). De forma similar, podemos obtener el nmero de muestras en la seal muestreada segn:

N = T / t
En estas condiciones, se puede aproximar la integral de una seal definida en 0t<T por un conjunto 1 segn de muestras tomadas con una frecuencia de muestreo f s = t
X(f )=

x(t ) e j 2ft dt = x(t ) e j 2ft dt

N 1 n =0

x(n t ) e j 2f (nt )t

Obsrvese que el sumatorio es precisamente la DFT de una seal discreta x[n]=x(n t), multiplicada por t, muestreando la variable continua t, desde t = 0 hasta t = T - t, y tomado N valores discretos muy prximos (tantos ms cuanto menor sea t, que en Matlab denotaremos como inct). Por lo tanto, la expresin X=inct*fft(x) arrojar una seal discreta:

X [k ] X ( f k ) donde f k =

k k = , k [0, N 1] T Nt

Seal que contiene el valor aproximado de N muestras de la TF de x(t). Sin embargo, dado que la funcin fft obtiene la DFT en el intervalo [0,2 ) , en el que [ ,2 ) corresponde a pulsaciones negativas, si queremos representar la transformada centrada en el origen es necesario recolocar la segunda mitad del vector X al principio del vector (X=fftshift(X)) para obtener la aproximacin de la TF:

X [k ] = X ( f ) f = f = X ( f k ) donde
k

fk =

k k N N , , donde se asume que N es , k = T Nt 2 2


X ( f ) , en un intervalo de pulsaciones
(o lo que

par. Dado que X [k ] representa muestras de una seal continua,

1 1 , k , , solamente se pueden representar tonos en la banda f k 2t 2t t t

F F es lo mismo f k s , s , por lo que se recomienda representarla siempre en ese intervalo (y sin 2 2 olvidar que es una aproximacin muestreo-). Para recuperar la seal en el dominio temporal se har uso de la expresin x=(1/inct)*ifft(X), obtenida de forma anloga. Si se ha recolocado el vector con fftshift, hay que volverlo a colocar en la posicin original con ifftshift. Recuerde que tanto fft como ifft devuelven en general valores complejos. Si bien en el caso de que la transformada fuera real, la ifft tambin debera serlo. Sin embargo, en algunos casos, aparece una parte imaginaria residual muy pequea, que puede ocasionar problemas en la representacin o la reproduccin, en el caso de audio, de las seales. Por eso es necesario asegurarse de que la seal no tiene parte imaginaria, utilizando la funcin real(). A menudo se le pedir que calcule la energa o la potencia de una seal. Para calcular la energa se utilizar una aproximacin similar a la empleada para la TF

E x = x(t ) dt x(nt ) t
2 n =0

N 1

Y para el clculo de la potencia media EN ESE INTERVALO (la potencia total, considerando todo el eje temporal es nula, por ser la seal de duracin infinita y energa finita) se podra calcular a partir de la energa en el intervalo T en el que se ha definido la seal en Matlab, segn Px(T ) = Ex T

A veces no se dispone de la seal, sino de su espectro (su TF calculada segn se ha indicado). La relacin de Parseval nos permite calcularlo directamente a partir del espectro, sin realizar la transformada inversa. Esta relacin se puede aproximar para el caso de las seales en Matlab por Ex =

x(t ) dt =

X ( f ) df

n =0

N 1

X (n f ) f =
2

n =0

N 1

F Fs = X n s N N

n =0

N 1

F 1 Xn s , N T

donde df se ha aproximado por el paso en el vector de frecuencias correspondiente f=Fs/N=1/T.

Por ejemplo, para calcular la energa de una seal emplearamos:


Ex1 = sum((abs(x)).^2)*inct; % En el tiempo Ex2 = sum((abs(X)).^2)/T; % En frecuencia, o bien Ex2 = sum((abs(X)).^2)*(Fs/N);

Seales de tipo potencia

En general, consideraremos que las seales son de duracin infinita (energa infinita) y potencia limitada. Aunque en Matlab las seales han de ser de duracin finita, consideraremos que la seales bajo estudio son infinitas pero periodicas de perodo T (no tiene por qu ser el perodo principal), por lo que nos permitiremos considerar tan solo un perodo de la misma. Para el clculo del espectro se utiliza, en lugar de la transformada, el desarrollo en serie de Fourier. Para seales de tipo potencia PERIDICAS, se utiliza esta representacin, ya que su mdulo al cuadrado tiene un sentido fsico, que es la densidad espectral de potencia, que se define a partir de la autocorrelacin temporal de la seal original, y que guarda relacin con los coeficientes del desarrollo en serie de Fourier segn: Sx ( f ) =

k =

ak

( f )

k T

Si la seal se ha muestreado a la frecuencia de Nyquist, fs, tomndose N puntos, de forma que cumpla f 1 N N que s = se obtendrn N coeficientes del desarrollo, distribuidos entre (correspondiendo a y 2 N T 2 f f las frecuencias s y s , obtenindose 2 2
Sx ( f ) =
N / 21

k = N / 2

a k ( f k f ) , donde

f =

1 T

Por tanto, para el clculo de la potencia de la seal, nos basta con tener el vector que contenga los coeficientes ak. Los coeficientes se pueden obtener a partir de la funcin fft de Matlab utilizando la siguiente relacin con la transformada de Fourier, ya que x(t) se considera peridica: ak = 1 T

x(t )e
T

j 2 k f t

dt =

1 1 X ( f ) f = f = X ( fk ) k T T

Por lo tanto, se obtiene que las expresiones son las mismas que en el caso anterior salvo por un factor de escala T (divisor en la Transformada directa, y multiplicador en la inversa). Es importante destacar que la seal debe ser peridica para que la expresin sea correcta, entrando un nmero entero de periodos en el intervalo T. Por lo tanto, para el clculo de los coeficientes del desarrollo de Fourier en MATLAB, utilice ak=inct/T*fft(x) = (1/N)*fft(x), donde N=T/inct=T*fs son el nmero de muestras de un periodo (no necesariamente el fundamental) de la seal vector que contiene esos valores. en el dominio temporal se har uso de la expresin x=T/inct*ifft(ak)=N*ifft(ak) si es peridica, que arrojar una seal discreta (una aproximacin a las muestras a Para recuperar la seal

x(n ) , y

es un

f s de la seal temporal).

Observe que los ak se representan respecto a ndices k, mientras que lo que interesar en general es representarlo en funcin de la frecuencia. Por lo tanto.

N / 2 1

k = N / 2

a ( f k f ) =
k

X(f ) T

2.1.1

Seales no peridicas

En caso de trabajar con seales no peridicas, estrictamente, no existe el desarrollo en serie de Fourier. Sin embargo se puede seguir utilizando X(f)/T en Matlab desde el punto de vista prctico como una aproximacin.

Representacin de seales en las prcticas de Teora de la comunicacin

En las prcticas se trabajar fundamentalmente con seales sinusoidales las cuales, obviamente, son de potencia infinita. Si se aplica la transformada de Fourier se obtendrn deltas de una amplitud no fija y dependiente del intervalo temporal considerado. Recuerde que una delta tiene amplitud infinita y es infinitamente estrecha, as que en Matlab es imposible representarla. Lo nico que se conserva es el rea que encierra que es la unidad, ya que, por definicin

( f f 0 ) df = 1

Por comodidad, se representar X(f)/T en lugar de X(f). Por ejemplo, consideremos la seal x(t ) = cos(2 10 t ) , y su transformada de Fourier ser X ( f ) = 0.5 ( f 10 ) + 0.5 ( f + 10) La figura representa la transformada utilizando T=5 (arriba) y T=50 (abajo). Como se puede observar, la amplitud es distinta, aunque el rea encerrada sigue siendo la esperada (0.5=amplitudf=2.50.2=250.02 ). Sin embargo, si se divide la transformada de Fourier respecto a T se obtiene directamente el valor que multiplica a la delta (a la derecha), independientemente de los parmetros T y fs utilizados para representarla.
X(f) con T=5, f=0.2 2.5 2 1.5 X(f) 1 0.5 0 -50 0.5 0.4 0.3 0.2 0.1 0 -50 X(f)/T con T=5, f=0.2

0 f

50

X(f)/T

0 f

50

X(f) con T=50, f=0.02 25 20 15 X(f) 10 5 0 -50 0.5 0.4 0.3 0.2 0.1 0 -50

X(f)/T con T=50, f=0.02

0 f

50

X(f)/T

0 f

50

Si adems, la seal es peridica, los valores de X(f)/T coinciden estrictamente con los coeficientes ak del desarrollo en serie de Fourier. Si no lo es, no existe estrictamente el desarrollo en serie de Fourier, pero se puede seguir utilizando X(f)/T desde el punto de vista prctico.

Resumen

En las prcticas de Teora de la comunicacin se utilizarn las siguientes herramientas para calcular y representar los espectros de las seales: - Seales: se utilizar la representacin X(f)/T, tanto si son peridicas como si no lo son. - Funciones de transferencia: se representarn utilizando la transformada de Fourier H(f). Las siguientes tablas muestran un resumen del cdigo a utilizar.
Fs = ...; inct = 1/Fs; T = ...; % T*Fs muestras N = Fs*T; % = T/inct;

Plantilla bsica
t = [0:1/Fs:T-1/Fs]; % Tiempo muestreado para los T segundos [0,T) f = [-Fs/2:Fs/N:Fs/2 Fs/N]; % Frecuencia [-Fs/2,Fs/2)

Energa en el tiempo

sum((abs(x)).^2)*inct

Tipo de seal

Energa (energa finita)

Potencia (potencia finita)


Densidad de potencia S ( f ) = a 2 ( f k ) k x k =

Tipo de espectro

Densidad de energa G x ( f ) = X ( f ) 2

(slo seales peridicas) X(f)/T (Normalizamos la X(f) respecto a T)


Herramienta matemtica

X(f) (Transformada de Fourier)

Para seales peridicas X(f)/T=ak (desarrollo en serie de Fourier).


ak=Xf/T x=real( (1/inct)*ifft( ifftshift(ak))*T)

SealEspectro EspectroSeal

Xf=fftshift(inct*fft(x)) x=real((1/inct)*ifft( ifftshift(Xf))) sum((abs(Xf)).^2)*Fs/N sum((abs(Xf)).^2)/T

Infinita (considerando -<t<) En el intervalo 0t<T, E=PT

Energa

0 (considerando -<t<)
Potencia

En el intervalo 0t<T, donde est definida la potencia media es P=E/T

sum((abs(ak)).^2)

You might also like