Vous êtes sur la page 1sur 9

1

I. INTRODUCCIN

El principal concepto de esta prctica, es el tratamiento
de seales discretas. En los ltimos aos el tratamiento
de seales discretas se ha incrementado, lo que produce
grandes investigaciones sobre dicho tema.

El software utilizado para la implementacin de seales
discretas, en esta prctica es MATLAB, que es
plataforma computacional de amplia cobertura, incluye
una interfaz grfica interactiva (SPTool) en la que se
puede analizar y manipular seales digitales, filtros y
espectros, sin necesidad de usar programacin avanzada.

La finalidad del proyecto, es que el tratamiento de
seales en el Laboratorio de Teora de la seal sea ms
intuitivo. De esta manera poder adquirir mayores
conocimientos con respecto a seales y as de manera
ms rpida se realicen operaciones con dichas seales.
II. FUNDAMENTOS TERICOS

SEALES Y SISTEMAS DISCRETOS
Una seal puede ser definida como una portadora fsica
de informacin. Por ejemplo, las seales de audio son
variaciones en la presin del aire llevando consigo un
mensaje a nuestros odos y las seales visuales son ondas
de luz que llevan informacin a nuestros ojos. Desde un
punto de vista ms matemtico, las seales se
representan por una funcin de una o ms variables.

SEALES EN TIEMPO DISCRETO
Las seales pueden ser discretas en el tiempo o
continuas. Si hablo, por ejemplo, mi voz es una seal
continua en el tiempo, es infinita en un intervalo muy
pequeo de tiempo. Por otra parte, las seales en el
tiempo discreto, significa, que tiene un nmero finito de
muestras en un intervalo de tiempo dado. Una seal en
tiempo discreto x(n) es una funcin de una variable
independiente entera. Grficamente, se representa as:

En lo sucesivo supondremos que una seal en tiempo
discreto se define para cada valor n para < n < . Por
lo general, nos referimos a x(n) como la n-sima
muestra de la seal aun cuando x(n) sea inherentemente
en tiempo discreto.

ALGUNAS SEALES ELEMENTALES EN TIEMPO
DISCRETO
A continuacin veremos cuatro seales discretas en el
tiempo que aparecen con frecuencia en el anlisis de
sistemas y seales.

El impulso unitario.- Se denomina (n) y se
define como:

Es una seal que vale siempre cero, excepto en
n=0 donde vale uno.

Escaln unitario.- Se denota como u(n) y se
define como:
Jhonatan Valencia.
Universidad de las Fuerzas Armadas- ESPE
Quito-Ecuador
SEALES Y SISTEMAS DISCRETOS EN MATLAB
LABORATORIO 1
2

Rampa.- Se denota como s(n) y se define
como:

Exponencial.- Es una secuencia de la forma:


SEALES Y SISTEMAS DISCRETOS EN
EL TIEMPO EN MATLAB
Signal Processing toolbox de Matlab tiene varias
funciones que ayuda en el procesamiento de seales
discretas. Los siguientes cdigos son los que guardan
relacin directa con el material en este laboratorio.

stem: Grafica una secuencia de datos en el eje x
terminado en crculos.

Los parmetros de entrada:
o los valores ordinales t para los cuales se
va a representar grficamente.
o los valores de x para representarse
grficamente.
Ejemplo:
t=[0:0.1:2];
x=cos(pi*t+0.6);
stem(t,x);

conv: Realiza la convolucin discreta de dos
secuencias.
Los parmetros de entrada los vectores a y b
que sostiene las dos secuencias.
Parmetro de salida: el vector y la celebracin
de la convolucin de a y b.
Ejemplo
a=[1 1 1 1 1]; b=[1 2 3 4 5 6 7 8 9];
c=conv(a,b);
stem(c);

impz: Calcula la respuesta del impulso de un
sistema relajado inicialmente descrita por una
ecuacin de la diferencia.
Los parmetros de entrada:
o Un vector b que contiene los valores de
bl, para l = 0; 1; :::; M;
o Un vector de una que contiene los
valores de ai, para i = 0; 1; :::, N;
o El nmero deseado de N muestras de la
respuesta de impulso.

Parmetro de salida: un vector h sosteniendo la
respuesta del impulso del sistema.
Ejemplo:
a=[1 -0.22 -0.21 0.017 0.01]; b=[1 2 1];
h=impz(b,a,20);
stem(h);

SISTEMAS RECURSIVOS
Ejemplo: Encontrar la respuesta de impulso al sistema
[]

[ ] [], suponiendo que esta


inicialmente relajado.
Una solucin numrica de este problema se puede
determinar, para = 1,15 y 0 n 30, usando los
siguientes comandos de Matlab.

alpha = 1.15;
N = 30;
x = [1 zeros(1,N)];
y = filter(1,[1 -1/alpha],x)
stem(y);

La respuesta de esta ecuacin de diferencias con y N
es:

3
En general, el comando de Matlab

Determina la solucin general al sistema de ecuaciones:
[]

[ ]

[ ]

[]

[ ]

[
]
Cuando la seal de entrada es dada por un vector x y un
vector Zi contiene sus condiciones iniciales.

MUESTREO
Para ilustrar esa idea, considere una funcin f1 general
(t) . El uso de una frecuencia de muestreo de las
muestras fs por en segundo lugar, el proceso de muestreo
se obtiene la funcin de tiempo discreto f1 (nTs ), con Ts
= 1 = fs y entero n .
Muestreo de cualquier funcin de la forma f2 (t) = f1(t) ,
con cualquier positiva , Utilizando una frecuencia de
muestreo

fs = fs , obtenemos Ts = 1 = fs = Ts = . Por lo tanto,
f2 (nTs ) = f1 ( (nTs ) ) = f1 (nTs ) , que corresponde a
la mismo conjunto de muestras como antes.
Por lo tanto, en general, un conjunto de muestras no
especifica la funcin original de tiempo continuo en de
una manera nica Para reducir esta incertidumbre,
debemos especificar la frecuencia de muestreo empleada
para generar las muestras dadas. Hay, sin embargo, un
ltimo candidato que debe ser eliminado para evitar la
ambigedad. Ilustremos este caso mediante la emulacin
de un procedimiento de muestreo usando Matlab.

Considere la funcin coseno con 3 Hz
muestreadas a fs = 10 muestras por segundo, para un intervalo
de tiempo seg, con el comando Matlab:
tiempo = 0:0.1:0.9;
f_1 = cos (2 * pi * 3. * tiempo)
Una lista muestra idntica se puede conseguir, con la misma
velocidad de muestreo y el intervalo de tiempo, a partir de un
7-Hz. La funcin coseno como se da
por
f_2 = cos (2 * pi * 7. * tiempo)
Obtenemos:
time = 0:0.1:0.9;
f_1 = cos(2*pi*3.*time)
f_2 = cos(2*pi*7.*time)
time_aux = 0:0.001:(1-0.001);
figure(1);
stem(time,f_1);
hold on;
plot(time_aux, cos(2*pi*3.*time_aux));
hold off;
figure(2);
stem(time,f_2);
hold on;
plot(time_aux, cos(2*pi*7.*time_aux));
hold off;





En esta secuencia, la espera de comandos permite trazar
ms de una funcin en la misma figura y la variable de
tiempo aux se utiliza para emular un contador de tiempo
continuo en los comandos de parcela para dibujar las
funciones de fondo.
Para eliminar la ambigedad ilustrada en este ejemplo,
debemos mencionar el teorema de muestreo. Ese
resultado indica que una funcin coseno 7HZ no deber
ser muestreada con FS = 10 Hz, puesto que la
frecuencia mnima de muestreo en este caso debe estar
por encima de Fs = 14 Hz. Por lo tanto, si el criterio de
muestreo de Nyquist, slo hay una continua - funcin de
tiempo asociada a un conjunto determinado de discretos
- tiempo las muestras y a determinada frecuencia de
muestreo.

RUIDOS Y FILTROS
Supongamos que la seal
, muestreada con Fs = 1000 muestras por
segundo, es corrompido por una pequea cantidad de ruido, de
acuerdo con los comandos siguientes:

amplitude_1 = 5; freq_1 = 5;
amplitude_2 = 2; freq_2 = 50;
F_s = 1000; time = 0:1/F_s:(1-1/F_s);
sine_1=amplitude_1*sin(2*pi*freq_1.*time);
sine_2=amplitude_2*sin(2*pi*freq_2.*time);
noise = randn(1,length(time));
x_clean = sine_1 + sine_2;
x_noisy = x_clean + noise;
figure(1);
plot(time,x_clean);
title('Figura 1')
figure(2);
plot(time,x_noisy);

4
En particular, el comando randn genera el nmero especial
de muestras de un pseudo-aleatoria la seal con
distribucin gaussiana con media cero y varianza unidad.
Podemos minimizar el ruido electrnico eect promediando
las muestras sucesivas de N [] , la
implementacin de la siguiente ecuacin en diferencias:

Como se mencion en la seccin 3, podemos realizar dicho
procesamiento especificando el valor de N y el uso de los
comandos de Matlab:
b = ones(1,N);
y = filter(b,1,x_noisy);

Si traza las guras para N = 3, N = 6, N = 10 y N = 20, se
ver que el promedio tcnica es bastante efectivo para
reducir la cantidad de ruido de la seal de corrompido. En
este caso, la mayor sea el valor de N, mayor ser la
capacidad de eliminar el componente de ruido. Si, sin
embargo, N es demasiado grande, entonces el
procedimiento de promediado casi elimina la componente
sinusoidal de alta frecuencia. Uno puede entonces
argumentan si es posible reducir el componente de ruido
sin la original seal significativamente. Tal vez un
procesamiento ms elaborado puede preservar mejor los
componentes sinusoidales. La teora y diseo de
herramientas para responder a este tipo de pregunta es el
tema principal de este curso.
En los siguientes laboratorios, se investigaron varias
tcnicas para el procesamiento de una amplia gama de
seales. Aunque intuicin es importante en algunas
situaciones prcticas, como se ilustra en este experimento,
nuestra presentacin sigue un camino formal y
tcnicamente justificable. Al final, el alumno puede ser
capaz no slo de emplearlos mtodos presentados a lo largo
del curso, sino tambin para los entienden, la seleccin de
la herramienta adecuada para cada aplicacin particular.


%Para N=3
figure(3);
b=ones(1,3);
y=filter(b,1,x_noisy);
plot(time,y);
title('Para N=3')


%Para N=6
b=ones(1,6);
y=filter(b,1,x_noisy);
plot(time,y);
title('Para N=6')


%Para N=10
b=ones(1,10);
y=filter(b,1,x_noisy);
plot(time,y);
title('Para N=10')


%Para N=20
b=ones(1,20);
y=filter(b,1,x_noisy);
plot(time,y);


Con la ayuda del comando filter se puede observar cmo se
elimina el ruido de la seales, mientras mayor es el N
mejor es el resultado de la seal.
5
III. EJERCICIOS ADICIONALES
1. Calcular la suma de convolucin de los
siguientes pares de secuencias, usando la funcin
de convolucin de Matlab:

%EJERCICIO 1
clc
clear all
close all
x=[1 1 1 0 0 0 0 1 1 0];
h=[0 1 2 3 4 0 0 0 0 0];
y=conv(x,h);
subplot(2,2,1)
stem(x), grid on
axis([-1 12 -1 2])
title 'x[n]'
subplot(2,2,2)
stem(h), grid on
axis([-1 12 -1 7])
title 'h[n]'
subplot(2,2,3)
stem(y), grid on
axis([-1 19 -1 12])
title 'y[n]'


Con la ayuda de la instruccin de matlab, conv, se puede
observar que se realiza la convolucin de dos sistemas
discretos, de una manera muy sencilla.

2. Calcular para la
secuencia utilizando la funcin conv de Matlab.

%EJERCICIO 2
clc
clear all
close all
x1=[1 1 0 0 ];
x2=[1 1 0 0 ];
y1=conv(x1,x2);
y2=conv(y1,x1);
y3=conv(y2,x1);
subplot(2,1,1)
stem(x1), grid on
axis([-1 6 0 2])
title 'x[n]'
subplot(2,1,2)
stem(y3), grid on
axis([-1 19 0 7])
title 'x[n]'


Se observa que al presentarse un ejercicio con convoluciones
sucesivas, se puede resolverlo separndolas en operaciones de
dos sistemas a la vez.

3. Escribir un programa MATLAB para trazar las
muestras de las soluciones de las siguientes
ecuaciones en diferencias n = 0 a n = 20



%EJERCICIO 3
clc
clear all
close all
%LITERAL a)
n=20;
a=[1, 2, 1];
b=[0, 0, 0];
z=filtic(b,a,[0 1])
%z=[1 0];
x=[1 zeros(1,n)];
y =filter(b,a,x,z);
stem(y);
grid on;


6

%LITERAL b)
n=20;
a=[1, 1, 2];
b=[0, 0, 0];
z=filtic(b,a,[0 1])
x=[1 zeros(1,n)];
y =filter(b,a,x,z);
stem(y);
grid on;

Se pudo resolver y graficar con gran facilidad una ecuacin de
diferencia, y se puede observar que con tan solo cambiar los
coeficientes de la ecuacin la respuestas en su totalidad.

4. Escribir un programa Matlab para calcular las
respuestas de impulso de los sistemas descritos por
las siguientes ecuaciones en diferencias:


%EJERCICIO 4
clc
clear all
close all
%LITERAL a)
n=20;
a=[1, 1, 1];
b=[1, 0, 0];
x=[1 zeros(1,n)];
y =filter(b,a,x);
stem(y);
grid on;



%LITERAL b)
n=20;
a=[4, 1, 3, 0, 0];
b=[1, 0, 0, 0, 1];
x=[1 zeros(1,n)];
y =filter(b,a,x);
stem(x);
grid on;

Al realizar el presente ejercicio se puedo observar que la
respuesta de una seal al impulso vara segn cual sea
principalmente los coeficientes y forma de la ecuacin.


5. Escribir un programa Matlab para graficar la
solucin a una entrada de los
filtros descritos por las siguientes tres ecuaciones de
diferencias. Configurar para w = / 3 y w = .


Para w = / 3

%EJERCICIO 5
%LITERAL a)
% para w= pi/3
clc
clear all
close all
n=-10:20;
x=[1:31];
y=[1:31];
for k=1:31
if(k>=1 && k<=10)
x(k) = 0;
else
x(k) = sin((pi/3)*(k-11));
end
end
for j=1:31
if(j>=1 && j<=10)
y(j) = 0;
else
y(j) = x(j-2)+x(j-1)+x(j);
end
end
stem(n,x,'k'),hold on,
stem(n,y,'r'),hold off
axis([-5 25 -3 3])
grid 'on'


7


Para w =
%LITERAL a)
% para w= pi
n=-10:20;
x=[1:31];
y=[1:31];
for k=1:31
if(k>=1 && k<=10)
x(k) = 0;
else
x(k) = sin((pi)*(k-11));
end
end
for j=1:31
if(j>=1 && j<=10)
y(j) = 0;
else
y(j) = x(j-2)+x(j-1)+x(j);
end
end
figure(1)
stem(n,x,'b'),hold on,
stem(n,y,'r'),hold off,
grid 'on'



Para w = / 3
%LITERAL b)
% para w= pi/3
n=-10:20;
x=[1:31];
y=[1:31];
for k=1:31
if(k>=1 && k<=10)
x(k) = 0;
else
x(k) = sin((pi/3)*(k-11));
end
end
for j=1:31
if(j>=1 && j<=10)
y(j) = 0;
else
y(j)= x(j) + 1/2*y(j-1);
end
end
figure(1)
stem(n,x,'k'),hold on,
stem(n,y,'r'),hold off,
axis([-5 25 -2 2])
grid 'on'


Para w =
%LITERAL b)
% para w= pi
n=-10:20;
x=[1:31];
y=[1:31];
for k=1:31
if(k>=1 && k<=10)
x(k) = 0;
else
x(k) = sin((pi)*(k-11));
end
end
for j=1:31
if(j>=1 && j<=10)
y(j) = 0;
else
y(j)= x(j) + 1/2*y(j-1);
end
end
figure(1)
stem(n,x,'k'),hold on,
stem(n,y,'r'),hold off,title 'y(n) para w=pi'
grid 'on'

8


Para w = /3
%LITERAL c)
% para w= pi/3
n=-10:20;
x=[1:31];
y=[1:31];
for k=1:31
if(k>=1 && k<=10)
x(k) = 0;
else
x(k) = sin((pi/3)*(k-11));
end
end
for j=1:31
if(j>=1 && j<=10)
y(j) = 0;
else
y(j)= x(j-2) +2*x(j-1)+x(j);
end
end
stem(n,x,'k'),hold on,
stem(n,y,'r'),hold off
axis([-5 25 -5 5])
grid 'on'



Para w =
%LITERAL c)
% para w= pi
n=-10:20;
x=[1:31];
y=[1:31];
for k=1:31
if(k>=1 && k<=10)
x(k) = 0;
else
x(k) = sin((pi)*(k-11));
end
end
for j=1:31
if(j>=1 && j<=10)
y(j) = 0;
else
y(j)= x(j-2) +2*x(j-1)+x(j);
end
end
figure(1)
stem(n,x,'k'),hold on,
stem(n,y,'r'),hold off
grid 'on'




Se puede observar que una seal responde de diferente manera
segn la entrada que tenga, y adems un factor importante que
influye a la salida del sistema es su frecuencia.

6. Supongamos que queremos procesar la seal en
tiempo continuo

El uso de un sistema de tiempo discreto. La
frecuencia de muestreo utilizada es de 4000 muestras
por segundo.
El procesamiento en tiempo discreto llev a cabo en
las muestras de la seal x (n) se describe mediante la
siguiente ecuacin en diferencias

%EJERCICIO 6
clc
clear all
close all
t=-10:0.01:10;
xa=3.*cos(2.*pi.*1000.*t) + 7.*sin(2.*pi.*1100.*t);
n=-10:0.04:10;
x=3.*cos(2.*pi.*1000.*n) + 7.*sin(2.*pi.*1100.*n);
figure(1)
plot(t,xa,'k'), hold on
plot(n,x,'dr'),
x(n)',hold off
y=[1:501];
y(1)=6;
y(2)=6;
for k=3:501
y(k)=x(k)+x(k-2);
end
figure(2)
plot(n,y)

9



Con la ayuda de Matlab se pudo tener una nocin de
cmo se realiza el filtrado y muestreo de una seal.

IV. CONCLUSIONES
Mediante las herramientas Signal Processing
toolbox proporcionada por MATLAB, se pudo
generar las diferentes soluciones y graficas de
los problemas planteados de una ms fcil rpida
y educativa.
Se observ que en una seal mientras ms alto
sea el valor de N, el ruido que se eliminara de la
seal original ser mayor, con respecto a un N
menor.
Se concluye que las respuestas a las ecuaciones de
diferencia, depende de la entrada y adems delos
coeficientes de la misma.
Se recomienda escribir correctamente los comandos
en MATLAB, que no se produzca ningn error de
ejecucin

V. BIBLIOGRAFA

http://catarina.udlap.mx Baja por web: Sbado 26
de Abril del 2014

http://www.ingelec.uns.edu.ar/ Baja por web:
Domingo 27 de Abril del 2014

Diniz P. ( 2012).Digital signal processing. Segunda
Edicin. 12- 10-2012.

Vous aimerez peut-être aussi