% BERNARDO DURAN % CONVOLUCION DE DOS SEŅALES EN TIEMPO REAL % SEŅALES ELECTRICAS 2018 % % % El programa hace la convolucion de dos seņales en tiempo real, se puso como % ejemplo la convolucion entre un pulso rectangular y un pulso triangular % aunque se puede poner cualquier seņal aleatoria modificando los % parametros correspondientes (forma de seņal, amplitud, duracion ). Para % hacer menos tedioso se utilizo comandos de matlab como recpuls, tripuls, % aunque se podria haber definido la seņal como lo visto en clases con el % Ingeniero Formigli. % % Primero se muestra la dos seņales a convolucionar, luego se pide que se % presione "enter" para mostrar la convolucion en tiemnpo real. % % Obs: La convolucion de "y1" y "y2" se denota y1*y2. Se define como la % integral del producto de ambas funciones despues de desplazar una de ellas % una distancia t. En nuestro caso desplazamos la triangular. clc; close all; clear all; % ========== Inicio las variables fs y t: fs = 200; t = linspace(-1,1,fs); %hago un vector de fs puntos equidistantes convolution = zeros(1,length(t)); %matriz de 1xlongitud(t) ax = [-1 1 -0.2 1.1]; %defino los ejes cartesianos % ========== ploteo las dos seņales (y1 and y2): disp('y1: Pulso rectangular de ancho 1.0') % rect disp('y2: Pulso triangular de ancho 0.5') % triangular y1 = rectpuls(t,1); %rect de t=1, A=1 y2 = tripuls(t,0.5,-1); %triangular de t=1/2,A=1 %la funcion subplot genera las graficas por filas subplot(4,2,1);plot(t,y1,'Color','blue','LineWidth',2),axis(ax); grid on; %muestra la cuadricula xlabel('t') %etiqueto eje x ylabel('y1') %etiqueto eje y subplot(4,2,2);plot(t,y2,'Color','red','LineWidth',2),axis(ax); grid on; xlabel('t') ylabel('y2') disp('Presione enter ....'); pause; % ========== Convolucion : sprintf('\n\nConvolucion :'); iter = length(t); %voy iterando todos los puntos de t for i = 1:iter movePaso = (2*i-fs)/fs; %esta es la resolucion de cada paso y2_cambio = tripuls(-(t-movePaso),0.5,-1); %desplazo la seņal traingular punto por punto convolution(i) = trapz(t, y1.*y2_cambio); %hago la integral del producto subplot(4,2,3:4) %grafico el barrido de la triangular hold off; %los puntos graficados no se mantienen en la grafica plot(t,y1,'Color','blue','LineWidth',2),axis(ax); hold on; %conserva los puntos graficados plot(t,y2_cambio,'Color','red' ,'LineWidth',2),axis(ax); grid on; %muestra la cuadricula xlabel('t'); %etiqueto el eje x como tiempo "t" subplot(4,2,7:8) %grafico la convolucion hold off plot(t(1:i),convolution(1:i),'Color','black','LineWidth',2); axis([-1 1 -0.2 0.5]); grid on; xlabel('t') ylabel('Convolucion (y1, y2)(t) ') % etiqueto el eje y como la convolucion en funcion del tiempo pause(0.01) end