You are on page 1of 9

Sistemas y Seales Curso 2004/05

Ingeniera Informtica

PRCTICA 1: Anlisis en el dominio del tiempo de sistemas continuos simples


I.- Procesamiento de seal en Matlab
Tal y como se vio en el curso anterior, Matlab trabaja con un nico tipo de elementos: las matrices. Los tipos de datos bsicos con los que vamos a trabajar para el procesado de seales unidimensionales, secuencias o seales bidimensionales. Todos estos datos pueden ser representados de una manera sencilla mediante matrices. De esta forma, se intuye que Matlab es una herramienta potente para el procesado de seales, debido a la facilidad que presenta para el tratamiento matricial de datos.

II.- Representacin de seales en tiempo continuo


Para representar seales unidimensionales utilizaremos vectores, ya que estos no son ms que el caso matricial particular 1 n o n 1, donde n es el nmero de elementos del vector. Si queremos representar seales en tiempo continuo con Matlab tenemos que utilizar un vector base de tiempos que sea suficientemente grande para que nos de la sensacin de continuidad (recordar que un ordenador por definicin es un sistema discreto). Ejemplo Generar una seal senoidal de la forma sen(2ft), con frecuencia f=10 Hz, y representarla grficamente en Matlab en un intervalo de tiempo entre [0, 1] segundos. >> t = [0:0.001:1]; >> s = sin(2*pi*f*t); >> plot(t,s) As hemos creado un vector de tiempos en forma de fila con 1001 elementos. Dicho vector va desde 0 hasta 1 en paso de 0.001 segundos.

III.- Funciones especficas para generar seales


Con el fin de facilitar la tarea de construccin de las secuencias ms usadas en el procesado de seales, Matlab dispone de funciones especficas para la creacin de estas seales. La funcin square genera una onda cuadrada para una determinada frecuencia de muestreo con la siguiente sintaxis: >>square(2*pi*f*t). La funcin >>sawtooth(2*pi*f*t) genera una seal diente de sierra. 1. Genera la misma seal del ejemplo anterior con distintos vectores base de tiempo, y represntalos grficamente. Qu observas usando distintos vectores base de tiempo de intervalo mayor que 0.001? 2. Genera otra seal en tiempo continuo con una frecuencia fundamental f=5 Hz en un intervalo de tiempo entre 0 y 2 segundos y represntalo grficamente. 3. Genera una seal impulso y una seal escaln unitario u(t). Para ello usa las funciones zeros y ones que generan vectores con zeros y unos respectivamente. Utiliza la ayuda de Matlab >>help, para obtener informacin de la funcin que desees, por ejemplo con >>help zeros obtendremos informacin de la funcin zeros. Cmo generaras una seal escaln de 5 unidades de amplitud?. Represntala grficamente. 4. Genera una seal rampa y una seal parbola sabiendo que la ecuacin que caracteriza una rampa es y=t, y la que caracteriza una parbola es y=t2. pract_1ab (04-05) 1 14/10/2004

5. Utiliza las funciones que dispone Matlab para generar una seal cuadrada unitaria con una frecuencia de 1Hz, la misma seal cuadrada pero ahora con una amplitud de 5 unidades y una seal en diente de sierra con una frecuencia de 2Hz.

IV.- Sistemas lineales e invariantes con el tiempo (LTI)


Un problema fundamental en el anlisis de sistemas es la obtencin de la respuesta a alguna entrada determinada. Analticamente, esto se puede resolver de formas muy diferentes. Una forma obvia es resolviendo la ecuacin diferencial que describe el sistema, teniendo en cuenta la entrada especfica y las condiciones iniciales. Y, otra forma usando la integral de convolucin. As, la salida y(t) de un sistema LTI la podemos obtener calculando la integral de convolucin entre las seales x(t) y h(t), donde x(t) es la entrada al sistema y h(t) la respuesta del sistema lineal ante una entrada impulso.

y (t ) = x(t ) * h(t ) = x( )h(t )d

[1]

Consideremos un circuito RC . Este circuito se puede ver como un sistema en tiempo continuo cuya entrada x(t) es la tensin elctrica que aplicamos al circuito mediante una fuente de alimentacin, y la salida y(t) es la tensin elctrica medida en los bornes del condensador. Aplicando la ley de Kirchhoff a la tensin en el condensador, obtenemos la ecuacin diferencial [2] que es la ecuacin de entrada/salida que describe el comportamiento del sistema.

i (t ) =

x(t ) y (t ) R

y (t ) =

Q i (t )dt d = i (t ) = C y (t ) C C dt

RC

d y (t ) + y (t ) = x(t ) dt

[2]

6. Calcula analticamente h(t) para el sistema lineal que conforma el circuito RC. 7. Representa grficamente la funcin h(t) y x(t), siendo x(t) una entrada en escaln u(t) como la que has utilizado en los ejercicios anteriores. 8. Calcula la salida del sistema ante una entrada en escaln u(t) usando la integral de convolucin. Usa la funcin conv que posee Matlab, y representa el resultado grficamente. 9. Calcula la salida del sistema ante una entrada senoidal y diente de sierra. 10. Realiza tu propia funcin de convolucin miconv. Para ello utiliza la ecuacin [1]. Tener en cuenta que h(t-) es una versin invertida y desplazada de h(t).

pract_1ab (04-05)

14/10/2004

Sistemas y Seales Curso 2004/05

Ingeniera Informtica

PRCTICA 1: Anlisis en el dominio del tiempo de sistemas continuos simples Material complementario a la Prctica 1.
IV.- Sistemas lineales e invariantes con el tiempo (LTI) Resolver la ecuacin diferencial

RC

d y (t ) + y (t ) = x(t ) dt

Calcular la solucin homognea.

Ecuacin homognea : Solucin :

RC

d y (t ) + y (t ) = 0 dt y ( h ) (t ) = c1e r1t (N=1)


RCr1 + 1 = 0 r1 = 1 RC
1 t RC

Donde r1 es la raz de la ecuacin caracterstica :


Solucin homognea :

y ( h ) (t ) = c1e
x(t ) = cos(0t ) RC

Calcular la solucin particular. Entrada coseinodal.


Entrada
Ecuacin diferencial Consideramos

RCc10 sen(0t ) + RCc20 cos(0t ) + c1 cos(0t ) + c2 sen(0t ) = cos(0t ) RCc10 + c2 = 0

d y (t ) + y (t ) = x(t ) dt y ( p ) (t ) = c1 cos(0t ) + c2 sen(0t )

RCc20 + c1 = 1 1 c1 = 2 1 + (RC0 )
Solucin particular

c2 =

RC0 2 1 + (RC0 )

y ( p ) (t ) =

RC0 1 cos(0t ) + sen(0t ) 2 2 1 + (RC0 ) 1 + (RC0 )

pract_1ab (04-05)

14/10/2004

Respuesta completa. Entrada coseinodal.


Entrada Suponemos que : x(t ) = cos( 0 t )u (t ) y(0-)=2 RC = 1 R=10K C=100 F y

0 = 1

1 1 y (t ) = y ( n ) (t ) + y ( p ) (t ) = ce t + cos t + sen t , t > 0 2 2 1 3 c= y (0 ) = y (0 + ) = 2 = c + 2 2 Respuesta completa


Respuesta natural.

y (t ) =

3 t 1 1 e + cos t + sen t , t > 0 2 2 2


C=100 F

Suponemos que :

y(0-)=2

R=10K

La solucin homognea : Respuesta natural Respuesta natural

y ( h ) (t ) = c1e t y ( n ) (0) = c1e 0 = 2 c1 = 2

y ( n ) (t ) = 2e t
x(t ) = cos( 0 t )u (t ) y(0-)=2 R=10K C=100 F y

t 0

Respuesta forzada. Entrada coseinodal.

Entrada Suponemos que :

0 = 1

1 1 y (t ) = ce t + cos t + sen t , t > 0 2 2 + y (0 ) = y (0 ) = 0 1 1 y (0) = c + = 0 c= 2 2 1 1 1 y ( f ) (t ) = e t + cos t + sen t , t > 0 Respuesta forzada 2 2 2 Respuesta total

y (t ) = y ( n ) (t ) + y ( f ) (t ) = y ( f ) (t ) =

1 3 t 1 e + cos t + sen t 2 2 2

,t > 0

pract_1ab (04-05)

14/10/2004

6. Calcular la respuesta h(t) a la entrada impulso.


x(t ) = (t ) y (t ) = h(t ) y ( p ) (t ) = h ( p ) (t ) = 0 y (t ) = h(t ) = y ( n ) (t ) + y ( p ) (t ) = c1e
RC d c1e dt
1 t RC

1 t RC

u (t )

u (t ) + c1e

1 t RC

u (t ) = (t )

1 1 1 t t c1 RC t RC RC RC e u (t ) + c1e (t ) + c1e u (t ) = (t ) RC

RCc1e (t ) = (t ) t = 0 RCc1 = 1 1 c1 = RC

1 t RC

Respuesta al impulso

1 RC t h(t ) = e u (t ) RC
H ( j ) = h( )e j d

1 ( j + 1 ) RC

La respuesta en frecuencia

H ( j ) =

1 RC 1 ( j + ) 1 1 j e u ( )e d = RC e RC d = RC j + 1 RC

e RC

Respuesta en frecuencia

H ( j ) =

1 RC = jRC + 1 j + 1 RC

8. Calcular la respuesta s(t) a la entrada escaln.


Respuesta al impulso h(t ) =

1 RC t e u (t ) RC
t 1 1 1 RC e u ( )d = 1 e RC u (t ) RC t

Respuesta al escaln

s (t ) = h( )d =

pract_1ab (04-05)

14/10/2004

Ejemplo 1.- Calcular la respuesta y(t) a la entrada x(t)=u(t)-u(t-2) utilizando la convolucin.

Suponemos que :

R=10K

C=100 F

RC=1

h(t ) = e t u (t )

Convolucin
Recuerde que la sumatoria de convolucin expresa la salida de un sistema en tiempo discreto en trminos de la entrada y la respuesta al impulso del sistema. MATLAB tiene una funcin llamada conv que evala la convolucin de seales en tiempo discreto de duracin finita. Si x y h son vectores que representan seales, entonces el comando MATLAB y=conv(x,h) genera un vector y que representa la convolucin de la seal representada por x y h. El nmero de elementos en y est dado por la suma del nmero de elementos en x y h menos uno. Advierta que debemos conocer el origen del tiempo de seales representadas por x y h para determinar el origen del tiempo de su convolucin. En general, supongamos que el primer y el ltimo elemento de x corresponde a los tiempos n=kx y n=lx, respectivamente, mientras que el primero y el ltimo elemento de h corresponde a los tiempos n=kh y n=lh. Entonces el primer y ltimo elemento de y corresponde a los tiempos n=ky=kx+kh y n=ly=lx+lh. Observe que la longitud de x[n] y h[n] son Lx=lx-kx+1 y Lh=lhkh+1. As, la longitud de y[n] es Ly=ly-ky+1=Lx+Lh-1. pract_1ab (04-05) 6 14/10/2004

Para ilustrar esto, consideremos el sistema definido por la ecuacin en diferencias

y[n] = Ante una entrada x[n] = u[n] u[n 10] x[n] = L ,0,1,1,1,1,1,1,1,1,1,1,0, L { 0

1 3 x[n k ] 4 k =0 ; h[n] = 1 (u[n] u[n 4]) 4

h[n] = L , 0, 0.25, 0.25, 0.25, 0.25, 0, L { 0

k h = 0, l h = 3, k x = 0, l x = 9, k y = 0, l y = 12, L y = 13 Las seales h y x de definiran en MATLAB con los siguientes comandos : >>h=0.25*ones(1,4); >>x=ones(1,10); La salida se obtendra y se dibujara usando los comandos : >>n=0:12; >>y=conv(x,h); >>stem(n,y); xlabel(n); ylabel(y[n])

pract_1ab (04-05)

14/10/2004

x[n] h[n] n n 1 4 0 2 3 0 3 2 0

= [ 1 1 1 1 1 = [ 0,25 0,25 0,25 0,25 ] 4 1 0 1 1 2 1 3 1 4 1 5 1

6 1

7 1

8 1

9 1

10 1

1 0

2 0

3 0

4 0

xe[n] hi[n]

0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 0,25 y[k] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,25 0,25 0,25 0,25 0 0 0 0 0 0 0 0 0 0 0 0 0,25 0,25 0,25 0,25 0 0 0 0 0 0 0 0 0 0 0 0 0,25 0,25 0,25 0,25 0 0 0 0 0 0 0 0 0 0 0 0 0,25 0,25 0,25 0,25 0 0 0 0 0 0 0 0 0 0 0 0 0,25 0,25 0,25 0,25 0 0 0 0 0 0 0 0 0 0 0 0 0,25 0,25 0,25 0,25 0 0 0 0 0 0 0 0 0 0 0 0 0,25 0,25 0,25 0,25 0 0 0 0 0 0 0 0 0 0 0 0 0,25 0,25 0,25 0,25 0 0 0 0 0 0 0 0 0 0 0 0 0,25 0,25 0,25 0,25 0 0 0 0 0 0 0 0 0 0 0 0 0,25 0,25 0,25 0,25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,25 0,50 0,75 1 1 1 1 1 1 1 0,75 0,50 0,25 0

xe[n]*hi[n]

pract_1ab (04-05)

14/10/2004

10. Funcin miconv


y (t ) = x(t ) * h(t ) = x( )h(t )d

x[n] = L ,0, 1,1,1,1,1,1,1,1,1,1,0, L { 0

h[n] = L , 0, 0.25, 0.25, 0.25, 0.25, 0, L { 0

y[n] = L, 0, 0.25, 0.5, 0,75,1,1,1,1,1,1,1, 0.75, 0.5, 0.25, 0, L { 0 Representacin en MATLAB x(n)=[1,1,1,1,1,1,1,1,1,1], (n=1,..,10) h(n)=[0.25,0.25,0.25,0.25], (n=1,..,4) n = 1,..,13

y ( n) = x ( k ) h( n + 1 k )
k =1

y(n)=[0.25,0.5,0.75,1,1,1,1,1,1,1,0.75,0.5,0.25] Las operaciones a realizar seran : 1) Invertir h[n], obteniendo hi[n] hi=invertir(h);

function hi=invertir(h) for i=1:length(h) hi(i)=h(length(h)-i+1); end

2) Extender x[n], obteniendo xe[n] xe=[zeros(1,length(h)-1) x zeros(1,length(h))]; 3) Ir desplazando hi[n] y multiplicando por xe[n] for k=1:length(x)+length(h), y(k)=sum(hi.*xe(k:k+length(h)-1)); end

pract_1ab (04-05)

14/10/2004

You might also like