You are on page 1of 24

SEÑALES Y SISTEMAS CON MATLAB

Sebastián Araujo
31 de enero de 2010

Resumen
Este documento contiene una serie de ejercicios aplicativos a la materia de señales y sistemas resueltos
utilizando Matlab.

1
Índice
1. Gráfico de una señal periódica 3

2. Cálculo de la energía total y de la potencia media de una señal 3


2.1. Potencia de señales periódicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

3. Gráfico de una función definida por pedazos 4

4. Transformaciones de la variable independiente 5

5. Señales elementales 5
5.1. Escalón unidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
5.2. Pulso rectangular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
5.3. Función signo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
5.4. La función rampa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
5.5. La función de muestreo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
5.6. Impulso unidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
5.6.1. Desplazamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
5.6.2. Aproximación de un Dirac con sinc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

6. Convolución 11
6.1. Convolución de dos pulsos rectangulares que nos da como resultado un pulso triangular . . . 11
6.2. Otro ejemplo de convolución . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

7. Respuesta al impulso de un sistema descrito por una ODE de primer orden 13


7.1. La derivada de un delta de Dirac . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

8. Respuesta al impulso de un sistema descrito por ODE’s de segundo orden 16

9. Análisis de Fourier 17
9.1. Espectro de amplitud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
9.2. Espectro de fase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
9.3. Teorema de Parseval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
9.4. Espectro de energía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
9.5. Espectro de potencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
9.6. Cálculo y graficación de espectros en señales discretas . . . . . . . . . . . . . . . . . . . . . . 19

10.Análisis de sistemas continuos mediante la Transformada de Laplace 21

11.Filtro de Butterworth 22

2
1. Gráfico de una señal periódica
Graficar una señal periódica definida por:

f (t) = t

0<t<π

f (t) = f (t + π)

Usamos el código:

%gráfica una función periódica


t=0:0.1:pi;
ft=t;
for n=-3:3
tt=t+n*pi;
hold on
plot(tt,ft)
hold off
end

lo que nos produce:

2. Cálculo de la energía total y de la potencia media de una señal


Definimos la energía total como:
ˆ L
E = lim |f (t)|2 dt
L→∞ −L

y la potencia media como:

3
ˆ L
1
P = lim |f (t)|2 dt
L→∞ 2L −L

Para calcular la primera integral de forma simbólica podemos usar:

syms t
E=int(abs(f(t))^2,t,-inf,inf )

Para la potencia podemos primero integrar:

syms L
integral =int(abs(f(t))^2,-L,L)

y luego calcular el límite con:

P=limit(integral/(2*L),L,inf )

Para evaluar la integral como un número decimal:

format long
eval(E)
eval(P)

2.1. Potencia de señales periódicas


En este caso P está se calcula por:
ˆ T
1
P = |f (t)|2 dt
T 0
El cálculo es por la misma vía utilizando como variables syms t y T.

3. Gráfico de una función definida por pedazos


Graficar la función:



−t + 1 −1 6 t < 0

t 0≤t<2
x(t) =


2 2≤t≤3
0 t>3

%gráfica de una función definida a pedazos


t1=-1:0.01:0;
xt1=-t1+1;
plot(t1,xt1)
t2=0:0.01:2;
xt2=t2;
hold on
plot(t2,xt2)
t3=2:0.01:3;
xt3=2;
plot(t3,xt3)

4
t4=3:0.01:7;
xt4=0;
plot(t4,xt4)
hold off
axis([-2 7 -1 4])
xlabel(’t’)
ylabel(’x(t)’)
title(’Señal a trozos’)

Señal a trozos
4

3.5

2.5

2
x(t)

1.5

0.5

−0.5

−1
−2 −1 0 1 2 3 4 5 6 7
t

4. Transformaciones de la variable independiente


Calcular y graficar basado en el ejemplo anterior la señal:

x(−3t − 2)

5. Señales elementales
5.1. Escalón unidad
heaviside

%ejemplo de paso unitario en 5


t=-10:.1:10;
paso5=heaviside(t-5);
plot(t,paso5)
axis([-10 10 -2 2])
xlabel(’t’)
ylabel(’u(t)’)
title(’Paso unitario en 5’)

5
Paso unitario en 5
2

1.5

0.5
u(t)

−0.5

−1

−1.5

−2
−10 −8 −6 −4 −2 0 2 4 6 8 10
t

Calcular y graficar:

x(t) = u(t + 2) − 2u(t + 1) + 2u(t) − u(t − 2) − 2u(t − 3) + 2u(t − 4)

5.2. Pulso rectangular


rectpuls
Un pulso rectangular centrado en 2 de ancho 4 y de amplitud 5:

%pulso rectangular
t=-10:0.01:10;
pulsorec=5*rectpuls(t-2,4);
plot(t,pulsorec)
title(’Pulso rectangular’)
xlabel(’t’)
axis([-10 10 0 6])

6
Pulso rectangular
6

0
−10 −8 −6 −4 −2 0 2 4 6 8 10
t

5.3. Función signo


Graficar sign(t-5)

%función signo en 5
t=-10:.1:10;
signo5=sign(t-5);
plot(t,signo5)
axis([-10 10 -2 2])
xlabel(’t’)
ylabel(’sign(t)’)
title(’Signo en 5’)

7
Signo en 5
2

1.5

0.5
sign(t)

−0.5

−1

−1.5

−2
−10 −8 −6 −4 −2 0 2 4 6 8 10
t

5.4. La función rampa


ramp

5.5. La función de muestreo


Graficar la función seno cardinal.

%gráfico del sinc


t=-10:.1:10;
sapi=sinc(t);
plot(t,sapi)
axis([-10 10 -2 2])
xlabel(’t’)
ylabel(’sinc(t)’)
title(’Sinc de t’)

8
Sinc de t
2

1.5

0.5
sinc(t)

−0.5

−1

−1.5

−2
−10 −8 −6 −4 −2 0 2 4 6 8 10
t

5.6. Impulso unidad


Usamos dirac
t=-10:0.1:10;
plot(t,dirac(t-2))
xlabel(’t’)
ylabel(’dirac(t-2)’)
title(’Un delta de Dirac en t=2’)
Un delta de Dirac en t=2
1

0.8

0.6

0.4

0.2
dirac(t−2)

−0.2

−0.4

−0.6

−0.8

−1
−10 −8 −6 −4 −2 0 2 4 6 8 10
t

9
5.6.1. Desplazamiento
Propiedades del delta de Dirac en variable simbólica

syms x
x1=x^2+1
dirac(x-3)
%desplazamiento
int(dirac(x-3)*x1,-inf,inf )
%derivación
diff(heaviside(x-3))
%desplazamiento con la derivada del Dirac
diracprim=diff(dirac(x-3))
int(x1*diracprim,-inf,inf )

5.6.2. Aproximación de un Dirac con sinc


Escalamos y aumentamos la amplitud del seno cardinal:

t=-10:0.1:10;
diracsinc=100*sinc(100*t);
plot(t,diracsinc)
title(’Dirac aproximado con un seno cardinal’)
xlabel(’t’)
ylabel(’100*sinc(100*t)’)

Dirac aproximado con un seno cardinal


100

80

60
100*sinc(100*t)

40

20

−20
−10 −8 −6 −4 −2 0 2 4 6 8 10
t

10
6. Convolución
6.1. Convolución de dos pulsos rectangulares que nos da como resultado un
pulso triangular

y(t) = rect(t) ∗ rect(t)


ˆ ∞
y(t) = rect(τ )rect(t − τ )dτ
−∞

t=-10:0.1:10;
y=conv(rectpuls(t),rectpuls(t));
plot(y)

Graficar la nueva señal redefiniendo correctamente el nuevo vector t. Verificar length(y) y length(t).
t=-10:0.1/2:10;
plot(t,y)

6.2. Otro ejemplo de convolución

x1 (t) = 3e−t 0≤t<∞


t
x2 (t) = 0≤t<2
2
Graficar las funciones, calcular la convolución, graficar el resultado:

y(t) = x1 (t) ∗ x2 (t)


Podemos expresar nuestras funciones usando pasos unitarios:

%convolución y gráficos de dos funciones


t=-10:0.01:10;
x1=3*exp(-t).*heaviside(t);
subplot(3,1,1)
plot(t,x1) x2=(t/2).*heaviside(-(t-2)).*heaviside(t);
subplot(3,1,2) plot(t,x2)
y=conv(x1,x2)
t=-10:0.01/2:10;
subplot(3,1,3)
plot(t,y)

11
3

0
−10 −8 −6 −4 −2 0 2 4 6 8 10

0.5

0
−10 −8 −6 −4 −2 0 2 4 6 8 10

0.5

−0.5

−1
−10 −8 −6 −4 −2 0 2 4 6 8 10

Matlab tiene conflicto al usar heviside y dirac (symbolic toolbox) dentro de la operación convolución. El
resultado por lo tanto no es válido. La solución consiste en usar funciones del signal processing toolbox, en
este caso sirve rectpuls.

%convolución y gráficos de dos funciones usando rectpuls


t=-10:0.01:10;
x1=3*exp(-t).*rectpuls(t-5,10);
subplot(3,1,1)
plot(t,x1)
ylabel(’x1(t)’)
x2=(t/2).*rectpuls(t-1,2);
subplot(3,1,2)
plot(t,x2)
ylabel(’x2(t)’)
y=conv(x1,x2);
t=-10:0.01/2:10;
subplot(3,1,3)
plot(t,y)
title(’Convolucion de las dos funciones’)
xlabel(’t’)

12
3

x1(t) 2

0
−10 −8 −6 −4 −2 0 2 4 6 8 10

1
x2(t)

0.5

0
−10 −8 −6 −4 −2 0 2 4 6 8 10

Convolucion de las dos funciones


200

150

100

50

0
−10 −8 −6 −4 −2 0 2 4 6 8 10
t

7. Respuesta al impulso de un sistema descrito por una ODE de


primer orden
Para encontrar la salida de un sistema y(t) llamada respuesta impulsional h(t) cuando la entrada x(t) es
igual a un impulso unitario δ(t) y la condición inicial cumple y(0) = 0 que es la condición para un sistema
LTI, debemos resolver la ecuación diferencial.
Encontrar la respuesta impulsional de un sistema LTI descrito por la EDO de primer orden:

2y 0 (t) + 4y(t) = 3x(t)


debemos resolver:

2h0 (t) + 4h(t) = 3δ(t)


%respuesta al impulso de un sistema
%descrito por una ODE de 1º orden
%Se utiliza un sinc para aproximar el delta de dirac
function dht=resimp(t,h)
dht=(3*(100*sinc(100*t))-4*h)/2 ;

Resolvemos la ecuación diferencial guardada en el archivo resimp.m utilizando:


>‌> [t,h]=ode45(’resimp’, [-10 10], [0])
>‌> plot(t,h)

13
respuesta al impulso con ode45
1.6

1.4

1.2

0.8
h(t)

0.6

0.4

0.2

−0.2
−10 −8 −6 −4 −2 0 2 4 6 8 10
t

En este caso la respuesta analítica la podemos encontrar resolviendo la ecuación diferencial por el método
del factor integrante:

d[e2t h(t)] 3
= e2t δ(t)
dt 2
ˆ ∞
3
e2t h(t) = e2t δ(t)dt
2 −∞
3 2(0) −2t
h(t) = e e
2
3 −2t
h(t) = e
2
Coomparación con la respuesta analítica:

>‌> figure(2)
>‌> ht=1.5*exp(-2*t).*heaviside(t);
>‌> plot(t,ht)

14
respuesta analitica
1.5

1
h(t)

0.5

0
−10 −8 −6 −4 −2 0 2 4 6 8 10
t

7.1. La derivada de un delta de Dirac


Muchas señales de entrada en un sistema pueden contener derivadas, por lo tanto al tratar de calcular
la respuesta impulsional se hace necesario derivar el Dirac. Numéricamente utilizamos la aproximación del
Dirac con el sinc. Al usar el operador diff para la derivación la longitud del vector derivado se disminuye en
1. Por lo tanto debemos corregir su dimensión.

%derivada de un delta de Dirac


%aproximamos la distribución usando sinc
t=-10:.1:10;
delta=100*sinc(100*t);
derdelta=diff(delta);
%corregimos la dimensión de la derivada
derivdd=[derdelta 0];
plot(t,derivdd);
title(’Derivada de un delta de Dirac’)
xlabel(’t’)

15
Derivada de un delta de Dirac
150

100

50

−50

−100

−150
−10 −8 −6 −4 −2 0 2 4 6 8 10
t

8. Respuesta al impulso de un sistema descrito por ODE’s de se-


gundo orden
Debemos encontrar la respuesta al impulso del sistema descrito por la ecuación diferencial ordinaria de
segundo orden:

y 00 (t) − 4y 0 (t) + y(t) = 4x0 (t) + 2x(t)


tenemos entonces que resolver la ecuación diferencial:

h00 (t) − 4h0 (t) + h(t) = 4δ 0 (t) + 2δ(t)


para tranformamos la ODE de 2º orden en un sistema de dos ODE’s de 1º orden mediante el cambio de
variable:
dh
u=
dt
que reemplazada en la ecuación original nos permite escribir:
du
= 4h0 − h + 4δ 0 (t) + 2δ(t)
dt
Para resolver el sistema de ecuaciones diferenciales partimos de las siguientes matrices:
 
u
U=
u0
 
h
H=
h0
y escribimos el sistema de dos ecuaciones diferenciales como:

%repuesta al impulo de un sistema descrito por una


%ode de 2ºorden function

16
function U=sisode2(t,H)
%el delta de dirac y su derivada
delta=100*sinc(100*t);
derdelta=diff(delta);
derivdd=[derdelta 0];
%el sistema de odes
U=zeros(2,1);
U(1)=H(2);
U(2)=4*H(2)-H(1)+4*derivdd+2*delta;

Finalmente resolvemos el sistema usando:

>‌> [t,H]=ode45(’sisode2’, [0 10], [0 0]);

Como la respuesta al impulso h(t) es la primera columna del matriz H la extraemos y graficamos:

>‌> h=H(:,1);
>‌> plot(t,h)
>‌> title(’Respuesta al impulso’)
>‌> xlabel(’t’)

15 Respuesta al impulso
x 10
5

4.5

3.5

2.5

1.5

0.5

0
0 1 2 3 4 5 6 7 8 9 10
t

9. Análisis de Fourier
Se define la Transformada de Fourier de una señal como:
ˆ ∞
F {x(t)} = x(t)e−iωt dt
−∞

Como notación se utilizará:

F {x(t)} = X(iω) = X(ω)

17
9.1. Espectro de amplitud
Se define como un gráfico entre el módulo de la transformada de Fourier de la señal | X(ω) |y la frecuencia.
A a su vez la operación módulo de una variable compleja es:
p
| X(ω) |= (Re(X(ω))2 + (Im(X(ω))2
donde Re(X(ω) e Im(X(ω) son la parte real y la parte imaginaria respectivamente.

9.2. Espectro de fase


Se define como el gráfico del argumento arg(X(ω)) versus la frecuencia. El argumento de una variable
compleja se calcula como:

Im(X(ω)
arg(X(ω)) = tg −1
Re(X(ω)

9.3. Teorema de Parseval


Siendo la Transformada inversa de Fourier:

ˆ ∞
1
F −1 {X(ω)} = X(ω)eiωt dω
2π −∞
F −1 {X(ω)} = x(t)

y recordando que la energía de una señal se calcula como:


ˆ L
E = lim |x(t)|2 dt
L→∞ −L
vamos a reescribir esta energía en función de la TF:
ˆ ∞
E= x(t).x(t)dt
−∞
reemplazando la señal en función de su TF inversa:
ˆ ∞ ˆ ∞
1
E= x(t) X(ω)eiωt dωdt
−∞ 2π −∞
si intercambiamos el orden de integración:
ˆ ∞ ˆ ∞
1
E= X(ω) x(t)eiωt dtdω
2π −∞ −∞
´∞
La integral −∞ x(t)eiωt dt podemos verla como una TF donde hemos cambiado el signo de la parte
imaginaria, es decir obtenemos la compleja conjugada de la la transformada de Fourier, entonces;
ˆ ∞
1
E= X(ω)X ∗ (ω)dω
2π −∞
finalmente podemos demostrar que el módulo de la variable compleja se expresa como:

| X(ω) |2 = X(ω)X ∗ (ω)


lo que finalmente nos lleva a expresar la energía de la señal en función de su transformada de Fourier:
ˆ ∞
1
E= | X(ω) |2 dω
2π −∞

18
9.4. Espectro de energía
El integrando de la última expresión | X(ω) |2 se conoce como densidad espectral de energía y su gráfico
versus la frecuencia como el espectro de energía.

9.5. Espectro de potencia


En señales con energía infinita, el espectro de energía no tiene ninguna utilidad. Para estas señales, que
en cambio presentan potencia media finita podemos por un cálculo semejante al anterior definir una densidad
espectral de potencia:

dsp = lim | Xτ (ω) |2


τ →∞

El gráfico de la dsp versus la frecuencia es el espectro de potencia para señales acotadas en un intervalo
[−τ, τ ].

9.6. Cálculo y graficación de espectros en señales discretas


Como ejemplo vamos a calcular y graficar el espectro de amplitud, el espectro de fase y el espectro de
energía de la señal:

x(t) = 3te−2t u(t)


Necesitamos usar los comandos fft para calcular la TF, abs para su módulo y angle para el argumento.
La señal la obtenemos usando una vez más un rectupuls conveniente en lugar del paso unitario:

%espectro de una señal t=0:.1:10;


%la señal
x=3*t.*exp(-2*t).*rectpuls(t-5,10);
subplot(4,1,1)
plot(t,x)
title(’Señal’)
%el espectro de amplitud
especampli=abs(fft(x));
subplot(4,1,2)
plot(especampli)
title(’Espectro de amplitud’)
%el espectro de fase
especfase=angle(fft(x));
subplot(4,1,3)
plot(especfase)
title(’Espectro de fase’)
%el espectro de energía
dse=(especampli).^2;
subplot(4,1,4)
plot(dse)
title(’Espectro de energía’)

19
Senal
1

0.5

0
0 1 2 3 4 5 6 7 8 9 10
Espectro de amplitud
10

0
0 20 40 60 80 100 120
Espectro de fase
5

−5
0 20 40 60 80 100 120
Espectro de energia
100

50

0
0 20 40 60 80 100 120

Como todos los espectros se dibujan en función de la frecuencia, necesitamos ahora crear un eje de fre-
cuencias en hertzios para visualizarlos de forma correcta. La frecuencia en hertzios es función del paso con
que hemos muestreado, o en nuestro caso creado, la señal. Para el ejemplo el paso tomado es 0.1. Podemos
entonces usar:

pas=0.1;
dim=length(x)*pas;
ejf=[0:1/dim:(length(x)-1)/dim]

y graficar los tres espectros en función de este eje:

20
Senal
1

0.5

0
0 1 2 3 4 5 6 7 8 9 10
t(s)
Espectro de amplitud
10

0
0 1 2 3 4 5 6 7 8 9 10
f(Hz)
Espectro de fase
5

−5
0 1 2 3 4 5 6 7 8 9 10
f(Hz)
Espectro de energia
100

50

0
0 1 2 3 4 5 6 7 8 9 10
f(Hz)

10. Análisis de sistemas continuos mediante la Transformada de


Laplace
Suponemos que tenemos un sistema descrito por la siguiente ecuación diferencial:

y 00 (t) + 5y 0 (t) + 6y(t) = x(t)


Se pide hallar la señal de salida y(t) su la señal de entrada es:

x(t) = e−t u(t)


Utilizar las condiciones iniciales para la señal de salida:

y 0 (0) = 1
y(0) = 2

Si aplicamos transformada de Laplace a la ecuación diferencial del sistema usando su propiedad de lin-
ealidad obtenemos:

L {y 00 (t)} + 5L {y 0 (t)} + 6L {y(t)} = L e−t u(t)




Las TL del lado izquierdo las obtenemos usando la regla de la TL de una derivada y haciendo uso de las
condiciones iniciales:

21
L {y 00 (t)} = s2 Y (s) − sy 0 (0) − y(0)
L {y 0 (t)} = sY (s) − y(0)
L {y(t)} = Y (s)

Para la TL del lado derecho podemos probar el comando laplace que funciona en variable simbólica:

>‌> syms t
>‌> x=exp(-t)*heaviside(t);
>‌> laplace(x)
ans = 1/(1+s)

Así llegamos a la ecuación algebraica:


1
s2 Y (s) − 2s − 1 + 5 [sY (s) − 2] + 6Y (s) =
 
1+s
de donde:

2s2 + 13s + 12
Y (s) =
s3 + 6s2 + 11s + 6
Podemos preguntarnos ahora por la señal de salida aplicando la TL inversa:

2s2 + 13s + 12
 
y(t) = L−1
s3 + 6s2 + 11s + 6
Para este cálculo usamos el comando ilaplace una vez más en variable simbólica:

>‌> syms s
>‌> Ly=(2*s^2+13*s+12)/(s^3+6*s^2+11*s+6)

Ly = (2*s^2+13*s+12)/(s^3+6*s^2+11*s+6)

>‌> y=ilaplace(Ly)

y = 6*exp(-2*t)+1/2*exp(-t)-9/2*exp(-3*t)

Por lo tanto la señal de salida de nuestro sistema es:


1 9
y(t) = ( e−t + 6e−2t − e−3t )u(t)
2 2
donde hemos multiplicado la respuesta por un paso unitario para asegurarnos que se trata de una señal
causal.
Finalmente es importante observar un gráfico entre la señal de salida y la señal de entrada.
Hay que advertir también que no podemos tratar señales discretas con la transformada de Laplace. Para
ello necesitaríamos la tranformada en Z cuyo estudio no forma parte de este apartado.

11. Filtro de Butterworth


%filtro de Butterworth pasabanda de 4Hz a 6Hz
pas=0.01;
t=0:pas:10;

22
senal=sin(10*pi*t)+cos(15*t+t.^2);
%grafico de la senal
ejet=[0:pas:(length(senal)-1)*pas];
subplot(4,1,1);
plot(ejet,senal);
axis([ min(ejet) max(ejet) min(senal) max(senal)]);
xlabel(’t (s)’);
title(’Grafico de la senal’)
%espectro subplot(4,1,2);
dim=length(senal)*pas;
ejefrec=[0:1/dim:(length(senal)-1)/dim];
spectr=abs(fft(senal));
%espectro normalizado spectr=spectr/max(spectr);
plot(ejefrec,spectr);
axis([0 10 0 max(spectr)]);
xlabel(’frecuencia (Hz)’);
title(’Espectro de amplitud de la senal’)
%frecuencia de muestreo sfrec=1/pas;
%filtro de Butterworth de orden n n=6; Wn=[4 6]/(sfrec/2);
%coeficientes del filtro
[b,a]=butter(n,Wn);
%convolucion del filtro con la senal
ysig=filter(b,a,senal);

23
Referencias
[1] Mari J.-L, Glangeaud, F., Coppens, F., 1997, Traitament du signal pour géologues et géophysiciens,
Éditions Technip.
[2] Soliman S.S., D.S. Mandyam, 1999, Señales y sistemas continuos y discretos, Prentice Hall.

24

You might also like