Está en la página 1de 6

Tema 4. Convolución de señales sencillas usando Matlab.

2019-I

CONVOLUCIÓN DE SEÑALES SENCILLAS USANDO MATLAB

I. OBJETIVOS

Reforzar los conceptos teóricos sobre convolución, comprender las


limitaciones del ordenador para trabajar con las señales y su convolución,
comparar los resultados del ordenador con los analíticos.

II. PROCEDIMIENTO

Antes de empezar la experiencia se creó una función que nos ayudará con el
proceso de convolución de las señales:

1° Paso: En el programa Matlab, ingresamos al menú File  New  M-File.


Aquí crearemos la función “myconv.m”.

2° Paso: Digitamos en el Editor lo siguiente:

function [y,X]=myconv(x,h)
%Esta función evalúa la convolución de dos funciones finitas.
x=x(:);
h=h(:);
nx=length(x);
nh=length(h);
ny=nx+nh-1;
X=zeros(nh,ny)';
for i=1:nh
X((1:nx)+(i-1),i)=x;
end
y=X*h;
y=y(1:1:ny);
y=y/max(abs(y));

3° Paso: Guardar el archivo con el nombre “myconv”, de lo contrario, cuando


invoquemos esta función, resultará en un error.

1. Convolución de señales finitas

NOTA: Todos los programas que se realicen a lo largo de esta guía


deberán de realizarse en un mismo script ya que comparten algunas
variables definidas solamente en el primer ejercicio.

FIEE - Laboratorio de Comunicación Analógica Página | 1


Tema 4. Convolución de señales sencillas usando Matlab. 2019-I

1.1 Vamos a calcular la convolución entre dos señales x(t) y h(t) que, en este
caso, van a ser iguales, x y h van a ser (ambas) un pulso rectangular
centrado en t=0, de amplitud 1 y que se extenderá desde t=-1 a t=1.

SOLUCIÓN

t=-5:0.1:5; %Base de tiempo de x


L=length(t); %Longitud
p1=find(t==-1); %Localizar los puntos
p2=find(t==1);
x=zeros(1,L); %Rango de pulso de -1
a1
x(p1:p2)=1;
figure(1)
plot(t,x)
h=x; %Para este caso h y x son
iguales.
figure(2)
plot(t,h)
y=myconv(h,x); %Invocamos la
función creada.
w=-10:0.1:10; %Base de tiempo de y Figura 1. Nuestra entrada será
figure(3) un pulso rectangular.
plot(w,y)

Figura 2. Nuestra respuesta de Figura 3. Nos muestra la


impulso será un pulso convolución de las señales de
rectangular. las figuras 1 y 2.

1.2 Realizar la convolución de las siguientes señales:


- x(t): pulso triangular en t=0, altura 1, entre t=-2 y t=2.
- h(t): pulso rectangular de altura 1, entre t=0 y t=2.

SOLUCIÓN

FIEE - Laboratorio de Comunicación Analógica Página | 2


Tema 4. Convolución de señales sencillas usando Matlab. 2019-I

Para generar el pulso rectangular h(t) lo haremos como en el ejercicio


anterior, mientras que para generar la función triangular x(t) lo haremos de
la siguiente manera:

p3=find(t==-2);
p4=find(t==0);
p5=find(t==2);
x=zeros(1,L);
x(p3:p4)=t(p3:p4)/2+1;
x(p4:p5)=-t(p4:p5)/2+1;
figure(4)
plot(t,x)
h=zeros(1,L);
h(p4:p5)=1;
figure(5)
plot(t,h)
y=myconv(h,x);
figure(6)
plot(w,y) Figura 4. Nuestra entrada será
un pulso triangular.

Figura 5. Nuestra respuesta de Figura 6. Nos muestra la


impulso será un pulso convolución de las señales de
rectangular. las figuras 4 y 5.

2. Convolución se señales infinitas

Las convoluciones donde intervienen señales infinitas en tiempo son


imposibles de calcular en Matlab ya que no se puede tener un vector de
valores de tamaño infinito. Sin embargo, vamos a hacer algunos ejemplos
donde veremos que si es posible hacer cálculos aproximados.

FIEE - Laboratorio de Comunicación Analógica Página | 3


Tema 4. Convolución de señales sencillas usando Matlab. 2019-I

2.1 Empezaremos por generar una señal que podríamos llamar “cuasi-finita”
3  3t
como es el caso de x(t )  e 2 .u (t ) (“cuasi-finita” porque a partir de t=2 sus
2
valores son prácticamente nulos).
Luego haremos la convolución con la función rectangular del ejercicio
anterior.

SOLUCIÓN
Para generar x(t) primero debemos generar la función pulso unitario u(t),
que es una función igual a 1 para t>=0 y 0 para t<0.

p6=find(t==5);
u=zeros(1,L);
u(p4:p6)=1;
figure(7)
plot(t,u)
x=(3/2)*exp(-3*t/2).*u;
figure(8)
plot(t,x)
y=myconv(h,x);
figure(9)
plot(w,y)

Figura 7. Nuestra respuesta de


impulso será un escalón unitario.

Figura 8. Nuestra entrada será Figura 9. Nos muestra la


una exponencial multiplicada por convolución de las señales de
un escalón unitario las figuras 8 y 7.

2.2 Ahora vamos a cambiar la señal de entrada por h(t)=u(t). Nótese que vamos
a aumentar considerablemente la complicación porque se trata de dos
señales infinitas y, además, la h(t) no tiende a cero como lo hace la x(t).

FIEE - Laboratorio de Comunicación Analógica Página | 4


Tema 4. Convolución de señales sencillas usando Matlab. 2019-I

SOLUCIÓN

h=u;
figure(10)
plot(t,h)
y=myconv(h,x);
figure(11)
plot(w,y)

Figura 10. Nuestra respuesta de Figura 11. Nos muestra la


impulso será un escalón unitario. convolución de las señales de
La entrada seguirá siendo la de las figuras 8 y 10.
la figura 8.

3. Convolución con señales periódicas

Vamos a terminar la práctica con un ejemplo de señales periódicas.


Mantendremos x(t) igual a la del apartado anterior (señal exponencial) y
haremos h(t )  cos(2 t ) . Cuando una de las dos señales de una
convolución es periódica, el resultado es periódico con el mismo periodo.
2
En este caso, h(t) es periódica con periodo fundamental To   1 seg .
2

SOLUCIÓN

h=cos(2*pi*t);
figure(12)
plot(t,h)
y=myconv(h,x);
figure(13)

FIEE - Laboratorio de Comunicación Analógica Página | 5


Tema 4. Convolución de señales sencillas usando Matlab. 2019-I

plot(w,y)

Figura 12. Nuestra respuesta de Figura 13. Nos muestra la


impulso será una cosenoidal. La convolución de las señales de
entrada seguirá siendo la de la las figuras 8 y 13.
figura 8.

FIEE - Laboratorio de Comunicación Analógica Página | 6

También podría gustarte