Está en la página 1de 10

INSTITUTO POLITÉCNICO NACIONAL

UNIDAD PROFESIONAL INTERDISCIPLINARIA DE


BIOTECNOLOGÍA

Laboratorio de Procesamiento Digital de Bioseñales

Práctica 2: “Operaciones con señales discretas”

Profesores:
Mora Martínez Rodrigo
Darinel Venegas Anaya

Integrantes: Tapia Baez Moises

Equipo:16 Grupo: 5MV2

Fecha: 28-Octubre-2020
Objetivos

 Realizar las operaciones principales con señales digitales.


 Utilizando MATLAB, realizar las operaciones de inversión, suma y
multiplicación de señales.
 Realizar convolución y correlación de señales.

Introducción

Una señal Discreta es aquella que depende de una variable (n), es una señal
discontinua la cual está definida para todos los puntos de un intervalo del conjunto
de los números enteros, por lo tanto, pertenece a los números enteros. Son
importantes para la tecnología ya que, en el mundo de ahora, un mundo "digital" y
en el que usamos computadoras, microchips entre otros, solo manejan señales
discretas.

Uno de los ejemplos de estas señales es:

 El precio del Dólar


 El rebotar de una pelota al caer libremente
 El pulso cardíaco.

Las señales discretas se representan con una secuencia de números


denominados muestras. Una muestra de una señal o secuencia se denota por x[n]
siendo n entero en el intervalo − ∞ < n < ∞ (x[n]=x[nT]). x[n] está definida
únicamente para valores enteros de n. Una señal en tiempo discreto se representa
como {x[n]}. Las señales discretas se pueden representar como una secuencia de
números entre paréntesis:

La representación gráfica de una secuencia discreta es la siguiente:


Desarrollo

 Ejercicio 1

Con ayuda de las llamadas funciones anónimas ,calcular las siguientes operaciones con señales:

a) 𝑡𝑟𝑖(𝑡)

b) 𝑝(2𝑡 + 3)

c) 3𝑡𝑟𝑖(0.5(𝑡 + 1))

d) 𝑝(0.5𝑡 + 2) + 𝑝(2𝑡 − 4)

e) 𝑟(−2𝑡 + 3)

f) 𝑝(0.1𝑛 + 0.2) + 𝑝(0.4𝑛 − 2)

g) 5 𝑡𝑟𝑖(0.2(𝑛 + 3))

h) La expresión analítica de la siguiente figura (llamarla h(n))

i) (−1) 𝑛ℎ(𝑛)

 Ejercicio 2

Programar en Matlab dos funciones capaces de calcular las siguientes

operaciones, ante cualquier pareja de vectores de entrada

a) Convolución discreta

b) Correlación discreta
En ambos casos, corroborar su funcionamiento empleando las instrucciones conv

y xcorr, bajo el entendido de que sus funciones no pueden hacer uso de los

mencionados comandos

 Ejercicio 3

Empleando su tarjeta Arduino (o algún otro microcontrolador), generar un

programa capaz de realizar la convolución discreta.

Se debe considerar que, para ambos casos, las secuencias de entrada serán

constantes, así como la longitud de estas. La forma de cambiar sus valores

numéricos implicará la reprogramación del dispositivo. El resultado se deberá

desplegar en el monitor serial (si cuenta con la tarjeta física) o empleando alguna

forma de visualización en Proteus (virtual terminal, pantalla LCD 2x16 etc)

Resultados

 Ejercicio 1

Código:
clc pulsotriangular='@(n)
clear all ((heaviside(n+1).*(n+1))-
close all 2*(heaviside(n).*n)+(heaviside(n-
t1=-10; t2=10; 1).*(n-1)))';
fs=100 func_pulsotriangular=str2func(pul
t=t1:1/fs:t2; sotriangular);
y_pulsotriangular=5.*(func_pulsot
n1=-20; n2=20; riangular(0.2*(n-5)));
fs1=50 subplot(4,3,1)
n=n1:1/fs1:n2; stem(n,y_pulsotriangular,'LineWid
th',2);title(['H) pulso
figure triangular h(n)'])
pulsounitario='@(t)heaviside(t+1)
-heaviside(t-1)'; pulso='@(t)heaviside(t+1)-
func_pulsounitario=str2func(pulso heaviside(t-1)';
unitario); func_pulso=str2func(pulso);
y_pulsounitario=func_pulsounitari y_pulso_1=func_pulso(0.5*t+2)+fun
o(2*t+3); c_pulso(2*t-4);
subplot(4,3,2) subplot(4,3,6)
plot(t,y_pulsounitario,'LineWidth plot(t,y_pulso_1,'LineWidth',2);t
',2);title(['B) pulso unitario itle(['D) pulso unitario p(t)'])
p(t)'])

tri='@(t) rampa='@(t)heaviside(t).*t';
((heaviside(t+1).*(t+1))- func_rampa=str2func(rampa);
2*(heaviside(t).*t)+(heaviside(t- y_rampa=func_rampa(-2*t+3);
1).*(t-1)))'; subplot(4,3,7)
func_tri=str2func(tri); plot(t,y_rampa,'LineWidth',2);tit
y_tri=func_tri(t); le(['E) rampa unitario p(t)'])
subplot(3,1,3)
plot(t,y_tri,'LineWidth',2);title
(['A) pulso triangular h(t)'])
pulsoo='@(n)heaviside(n+1)-
heaviside(n-1)';
func_pulsoo=str2func(pulsoo);
pulsotriangularr='@(n) y_pulsoo_2=func_pulsoo(0.1*n+0.2)
((heaviside(n+1).*(n+1))- +func_pulsoo(0.4*n-2);
2*(heaviside(n).*n)+(heaviside(n- subplot(4,3,8)
1).*(n-1)))'; stem(n,y_pulsoo_2,'LineWidth',2);
func_pulsotriangularr=str2func(pu title(['F) pulso unitario p(t)'])
lsotriangularr);
h_n=(-
1.^n).*(5.*(func_pulsotriangularr
(0.2*(n-5)))); triii='@(n)
subplot(4,3,4) ((heaviside(n+1).*(n+1))-
stem(n,h_n,'LineWidth',2);title([ 2*(heaviside(n).*n)+(heaviside(n-
'I) pulso triangular (- 1).*(n-1)))';
1)^nh(n)']) func_triii=str2func(triii);
y_triii=5.*(func_pulsotriangular(
0.2*(n+3)));
subplot(4,3,9)
trii='@(t) stem(n,y_triii,'LineWidth',2);tit
((heaviside(t+1).*(t+1))- le(['G) pulso triangular
2*(heaviside(t).*t)+(heaviside(t- 5tri(0.2(n+3))'])
1).*(t-1)))';
func_trii=str2func(tri);
y_trii=3.*(func_pulsotriangular(0
.5*(t+1)));
subplot(4,3,5)
plot(t,y_trii,'LineWidth',2);titl
e(['C) pulso triangular
3tri(0.5(t+1))'])
 Ejercicio 2

Código:
clc; end
close all; end
clear all; y(k)=sum1;
x1=[0 1 2 3]; z(k)=sum2;
x2=[-1 0 1 2]; sum1=0;sum2=0;
x3=fliplr(x2); k=k+1;
a=input('ingre el indice cero de end
la señal x1 '); disp(y);
b=input('ingre el indice cero de disp(z);
la señal x2 '); subplot(2,2,1),stem(x1);
k=1; sum1=0;sum2=0; title('primera selañal');
m=numel(x1); n=numel(x2); subplot(2,2,2),stem(x2);
s=(m+n-1); title('segunda señal');
for i=1:1:s subplot(2,2,3),stem(y);
for j=1:1:numel(x1) title('señal de convolucion');
h=i-j+1; subplot(2,2,4),stem(z);
if h>0 && h<=numel(x2) title('señal de correlacion');
sum1=sum1+
(x1(j)*x2(h));
sum2=sum2+
(x1(j)*x3(h));
 Ejercicio 3

int x[8] = {0, 3, 11, -7, 0, -1, 4, 2};


int h[8] = {0, 0, 2, 3, 0, -5, 2, 1};
int lx=8;
int ly=8;
int n=(lx*2)-2;
int y[8]={0, 0, 0, 0, 0, 0, 0, 0};
int k=0;
int c=0;
int i=0;
int j=0;
int z=0;
int Y[15]={ };
void setup() {
Serial.begin(9600);
delay(1000);
Serial.println("Convolucion x*y");
}
void loop() {
for (i=0;i<=n;i++){
j=i-k;
while(j>=ly){
k=k+1;
j=i-k;
}
while(j>=0){
if(k<lx){
y[c]=x[k]*h[j];

c=c+1;
}
k=k+1;
j=j-1;
}
Y[i]=y[0]+y[1]+y[2]+y[3]+y[4]+y[5]+y[6]+y[7];
Serial.println(Y[i]);
y[7]={0};
y[6]={0};
y[5]={0};
y[4]={0};
y[3]={0};
y[2]={0};
y[1]={0};
y[0]={0};
k=0;
c=0;
}
while(true){}
}
Conclusiones

En esta práctica logramos a apreciar de forma gráfica las operaciones que


podemos realizar con señales discretas, las cuales hemos hecho en clase por
medio de algoritmos, estos procedimientos para realizarlas junto con la
convolucion y correlacion de señales lo vamos a aplicar en posteriores ejercicios
donde necesitemos manipular señales al digitalizarlas.

Se aplicaron múltiples conocimientos sobre las señales discretas, es importante


saber el tipo de operaciones que maneja como son tratadas, pues estas deben
respetar patrones y se debe entender bien el producto de las mencionadas
operaciones.

Bibliografía

Chávez Lira, Jorge., Introducción al Tratamiento Digital de Imágenes, Edit. Fondo


de Cultura Económica, México 2002, 441 págs.

Soliman, Samir S., Srinath, Mandyam D., Señales y Sistemas Continuos y


Discretos. Segunda Edición, Edit. Prentice Hall. España,1999, 496 págs.

También podría gustarte