laboratorio1 de diniz
-
Upload
edison-segovia -
Category
Documents
-
view
98 -
download
1
description
Transcript of laboratorio1 de diniz
Procesamiento Digital de Señales
Laboratorio1
Señales y sistemas discretos en Matlab
Edison Ramiro Segovia Vega
Escuela Politécnica del Ejército
Departamento de Eléctrica y Electrónica
Quito 10/09/2013
Palabras Claves.- Señal discreta, señal continua,
muestreo, ecuación de diferencias, respuesta al
impulso, Matlab.
I. INTRODUCCION
Aunque el nombre de Matlab significa laboratorio de
matrices, Matlab puede utilizarse como una
herramienta muy poderosa para todo tipo de cálculos
y visualizaciones científicas, de ingeniería y otros
campos. También es posible considerarlo como otro
lenguaje de programación para el desarrollo de
funciones avanzadas a partir de las utilidades
estándares de Matlab. Estas características han
hecho de Matlab una herramienta efectiva para la
educación y la investigación.
En nuestra primera practica usaremos la herramienta
de Matlab, para representar en forma de matrices los
datos encontrados en el estudio de señales y
sistemas, debido a esto las señales discretas son
representadas en forma perfecta mediante vectores,
no así las señales continuas que en Matlab son tan
solo aproximaciones para ello se deberá escoger
adecuadamente el intervalo de muestreo para así
lograr una aproximación más exacta.
II. FUNDAMENTOS TEORICOS
2.1. Señales continuas y señales discretas
Como ya sabemos existen dos tipos de señales
dependiendo de la naturaleza de la variable
independiente (tiempo): señales de tiempo continuo
y señales de tiempo discreto.
En una señal de tiempo continuo x (t), La variable
tiempo es una variable continua y por ello este tipo
de señales están definidas para cualquier par de
instantes de tiempo y para cualquier instante
comprendido entre este par. Por otro lado, una señal
de tiempo discreto x(n),
solamente está definida en ciertos instantes discretos
de tiempo, de tal manera que entre cada instante de
tiempo y el siguiente no está definida la señal. Una
señal de tiempo discreto también se puede
representar como una lista o secuencia de números,
denotado comúnmente como x(n).
Estos dos tipos de señales se relacionan de tal
manera que podemos obtener una señal discreta al
muestrear una señal continua. Esto se hace necesario
ya que para que una señal pueda ser procesada
digitalmente debe ser una señal digital y si la señal
es continua se debe convertir a una señal digital
mediante un proceso de muestreo (conversión a
señal de tiempo discreto) y cuantización (conversión
de su conjunto de valores a un conjunto finito).
Fig. 1 Señal discreta en el tiempo
Fig. 2 Señal continúa en el tiempo
2.2. Muestreo
Es el proceso de conversión de señales continuas a
señales discretas en el tiempo. Este proceso se
realizada midiendo la señal en momentos periódicos
del tiempo.
2.3. Ecuación de diferencias
Es una ecuación que muestra la relación entra
valores consecutivos de una secuencia y la
diferencia entre ellos. Usualmente se escribe en una
ecuación recurrente para que la salida del sistema se
pueda calcular de las entradas de la señal y sus
valores anteriores.
La ecuación de diferencia nos ayuda a describir la
salida del sistema descrito por la fórmula para
cualquier n.
III. EXPERIMENTOS
3.1. Experimento 1.1
En el ejemplo 1.7: 𝑦(𝑛) −1
∝𝑦(𝑛 − 1) = 𝑥(𝑛)
hemos sido capaces de determinar una expresión de
forma cerrada para la respuesta de impulso asociado
con la ecuación de diferencia .Una solución numérica
de este problema se puede determinar, para α = 1,15
y
0 ≤ n ≤ 30 usando los siguientes comandos de
MATLAB:
Comandos en Matlab a = 1.15;
N = 30;
x = [1 zeros(1,N)];
y = filter(1,[1 -1/a],x);
stem(y);
En general, el comando Matlab
Determina la solución de la ecuación de diferencia
general:
Cuando la señal de entrada se proporciona en el
vector X y el vector Z_i contiene sus condiciones
iniciales
Definimos los valores de alfa y N, estos los usaremos
para en los parámetros de la función filter, la cual
define a una ecuación diferencial.
y = filter (1, [1 -1/a], x);
Utilizaremos esto para crear una función que define
a una ecuación diferencial.
Podemos ver la respuesta de la ecuación de
diferencia con valores de α y N definidos arriba:
Fig. 3 Respuesta de la ecuación de diferencias
En este experimento logramos visualizar la respuesta
en tiempo discreto a una ecuación de diferencias con
la función filter.
3.2. Experimento 1.2
El proceso de muestreo puede ser visto como una
asignación de una función de tiempo continuo en un
conjunto de
muestras de tiempo discreto. En general, sin
embargo, hay infinitas funciones que pueden generar
los mismos conjuntos de muestras. Para ilustrar esta
idea, considerar una función general f1 (t). el uso de
una frecuencia de muestreo de las muestras de FS
por segundo, el proceso de muestreo se obtiene el
tiempo discreto función f1 (NTS), con Ts = 1/fs y n
entero.
Muestreo de cualquier función de la forma f2 (t) = f1
(αt), con cualquier α positivo, utilizando un
muestreo de frecuencia
que se corresponde con el mismo conjunto de
muestras como antes.
Por lo tanto, en general, un conjunto dado de
muestras no especifica la original función de tiempo
continuo de una manera única. Para reducir esta
incertidumbre, debemos especificar el muestreo de
frecuencia empleada para generar las muestras
dadas. Al hacerlo, el razonamiento algebraico
anteriormente se rompe y se eliminan (casi) todas las
funciones candidatas de tiempo continuo para una
muestra dada conjunto. Hay, sin embargo, un
candidato último que debe ser eliminado para evitar
ambigüedad. Vamos a ilustrar este caso, mediante la
emulación de un procedimiento de muestreo
utilizando Matlab.
Considere la posibilidad de la función 3-Hz coseno
f1 (t) = cos (2π3t) muestreada en Fs = 10 muestras por
segundo lugar, para un intervalo de tiempo de 1 s,
utilizando el comando Matlab:
Comandos en Matlab
tiempo = 0:0.1:0.9; f_1=cos(2*pi*3.*tiempo); f_2=cos(2*pi*7.*tiempo); tiem_aux = 0:0.001:(1-0.001); figure(1); stem(tiempo,f_1); hold on; plot(tiem_aux,
cos(2*pi*3.*tiem_aux),'r'); hold off; figure(2); stem (tiempo,f_2); hold on; plot(tiem_aux,
cos(2*pi*7.*tiem_aux),'r'); hold off;
Resultado:
f_1 = cos (2*pi*3.*time)
f = 3 Hz
Fig. 4 Muestreo de la función coseno a 3 Hz
f_2 = cos (2*pi*7.*time)
f = 7 Hz.
Fig. 5 Muestreo de la función coseno a 7 Hz
En este experimento podemos ver que para el
muestreo con una frecuencia de 7Hz el periodo
disminuye, debido a la relación inversa que existe
entre el periodo y la frecuencia.
En esta secuencia, el control sobre comandos
permiten trazar más de una función en la misma
figura y la variable timp_aux se utiliza para emular un
contador de tiempo continuo en la trama manda a
llamar a las funciones de fondo.
Para eliminar la ambigüedad, hay que hacer
referencia a la toma de muestras. Ese resultado indica
que una función de 7-Hz coseno no se muestreará con
Fs = 10 Hz, ya que la frecuencia mínima de muestreo
en este caso debe ser igual o mayor a Fs = 14 Hz.
3.3. Experimento 1.3
Supongamos que la señal x (t) = 5 cos (2π5t) + 2 cos
(2π50t), muestreados con fs = 1000 muestras por
segundo, como se muestra en la figura, es
corrompido por una pequeña cantidad de ruido, que
forma la señal se muestra en la Figura 1.25B
generados por los comandos siguientes:
Comandos en Matlab
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); figure(2); plot(time,x_noisy,'y');
En particular, el comando randn genera el número
especificado de muestras de una señal
pseudoaleatoria con distribución gaussiana con
media cero y varianza unitaria.
Podemos minimizar el efecto ruidoso por un
promedio de N muestras sucesivas de x (n) =
x_noisy, la aplicación de la siguiente ecuación en
diferencias:
Señal Limpia
Fig. 6 señales limpias
Señal con Ruido
Fig. 7 señales con ruido
Se puede 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);
el rendimiento de las parcelas se muestra en la Figure
para N = 3, N = 6, N = 10 y N = 20.
Esta gráfica nos indica que la técnica de promedio es
bastante eficaz para reducir la cantidad de ruido de la
señal dañado. En este caso, cuanto mayor sea el valor
de N, mayor será la capacidad de eliminar el
componente de ruido. Sin embargo, si N es muy
grande, como se observa en la siguiente gráfica a
continuación, el procedimiento de promedio casi
elimina la componente sinusoidal de alta frecuencia.
N=3
Fig. 8 N=3
N=6
Fig. 8 N=6
N=10
Fig. 8 N=10
N=20
Fig. 8 N=20
Entonces, uno puede discutir si es posible reducir el
componente de ruido sin afectar a la señal original
significativamente. Tal vez un procesamiento más
elaborado puede preservar los componentes
sinusoidales mejor. La teoría y el diseño de
herramientas para responder a este tipo de pregunta
es el tema principal de este proyecto.
Creamos una variable noise que generara valores al
azar y definirá el número máximo de elementos con
los valores de time. También creamos una variable
x_clean y después generamos otra variable llamada
x_noisy.
Para concluir generamos las gráficas que serán las
de la función con ruido y la función limpia.
IV. VERIFICAR LOS RESULTADOS
DE LOS EJERCICIOS
4.1. Ejercicio 1.4
Calcular la suma de convolución de los siguientes
pares de secuencias:
Codigo en Matlab
x=[0 ones(1,5) zeros(1,5)]; h=[0 ones(1,8) zeros(1,5)]; y= conv(x,h); n=0:10; n3=1:24; figure(1); stem(n,x),title 'x(n)' figure(2); stem(n,y),title 'h(n)','g';
figure(3); stem(n3,y),title 'convolucion
x(n)*h(n)' x(n)
Fig. 9 x(n)
h(n)
Fig. 10 h(n)
Convolución x(n)*h(n)
Fig. 11 convolución
Comandos en Matlab
x=[1 1 1 0 0 0 0 1 1 0 0]; h=[0 1 2 3 4 0 0 0 0 0 0]; y= conv(x,h); n=1:11; n1=1:21; subplot(221),stem(n,x),title 'x(n)' subplot(222),stem(n,h),title 'h(n)' subplot(212),stem(n1,y),title
'conv(x,h)'
Fig. 12 convolución x(n)*h(n)
Generamos dos vectores con once valores,
utilizamos el comando conv(vector1, vector2) y
realizamos la convolución. Al muestrear los 11
valores de la función, en la gráfica podemos
observar que a partir del numero 14, la función vale
0. Esto se debe a que solamente estaban definidos
nueve valores en la primera función y cuatro en la
segunda función. Entonces al realizar la
convolución, la respuesta será cero.
Comando en Matlab
x=[0 0 0 2 0 4 0 6 0 8 0 10]; h=[0.5 1 0.5 0 0 0 0 0 0 0 0 0]; y= conv(x,h); n=-5:6; n2=-1:21; subplot(221), stem(n,x),title
'x(n)' subplot(222), stem(n,h), title
'h(n)' subplot(212), stem (n2,y), title
'conv x(n)*h(n)'
Convolución x(n)*h(n)
Fig. 13 convolución x(n)*h(n)
En este ejercicio pudimos observar la convolución
de dos señales discretas dadas en Matlab por el
código conv.
Este proceso nos muestra que la convolución de dos
señales discretas nos dará otra señal discreta en el
tiempo.
4.2. Ejercicio 1.5
Para la secuencia:
Calcule
Compruebe su resultado en Matlab usando la
función conv.
Comando en Matlab x1=[1 1 0 0]; h1=[1 1 0 0]; y1= conv(x1,h1); x2=[1 1 0 0]; h2=[1 1 0 0]; y2= conv(x2,h2); yt=conv(y1,y2); n=1:13; stem(n,yt),title 'convolucion
y(n)=x(n)*x(n)*x(n)*x(n)'
Fig. 14 convolución
Generamos una variable z que corresponde a la
función de convolución de x(n)*x(n). Podemos notar
que la gráfica nunca toma el valor de cero, debido a
que solo pusimos dos valores en el vector y nunca
pusimos un cero en dicho vector
V. RESOLVER LOS EJERCICIOS
1.12, 1.15, 1.19, 1.23 Y 1.26
5.1. Ejercicio 1.12
Escribir un programa en MATLAB para trazar las
muestras de las soluciones de las ecuaciones en
diferencias en el ejercicio 1.9 desde n = 0 a n = 20.
Comandos en Matlab
a= [1, 2, 1]; b= [0, 0, 0]; x= zeros(1,20); zi = filtic (b,a,[1,0]); y =filter (b,a,x,zi); stem(1:20,y)
Fig. 15 respuestas a la ecuación de diferencias
Comandos en Matlab
a= [1, 1, 2]; b= [0, 0, 0]; x= zeros(1,20); zi = filtic (b,a,[1,0]); y =filter (b,a,x,zi); stem(1:20,y)
Fig. 16 respuestas a la ecuación de diferencias
Primero tenemos una ecuación diferencial con
condiciones iniciales, luego generamos nuestro
vector x. En la función filter debemos ingresar tres
parámetros, aquí irán los valores de los coeficientes
de nuestra ecuación diferencial y las condiciones.
5.2. Ejercicio 1.15
Escribir un programa Matlab para calcular las
respuestas de impulso de los sistemas descritos por
ecuaciones en diferencias siguientes:
Comandos en Matlab
n=-10:10; x=[1:21]; y=[1:21]; for k=1:21 if(k == 11) x(k) = 1; else x(k) = 0; end end for j=1:21 if(j>=1 && j<=10) y(j) = 0; else y(j) = x(j)-y(j-1)-y(j-2); end end stem(n,x,'r'),hold on, stem(n,y,'b'),hold off
Fig. 17 respuesta al impulso a la ecuación de
diferencias
En la gráfica podemos ver que nuestra función tiene
valores máximos en 1 y -1.
Comandos en Matlab
n=-10:10; x=[1:21]; y=[1:21]; for k=1:21 if(k == 11) x(k) = 1; else x(k) = 0; end end for j=1:21 if(j>=1 && j<=10) y(j) = 0; else y(j) = (x(j)-x(j-4)-y(j-1)-3*y(j-
2))/4; end end stem(n,x,'y'),hold on, stem(n,y,'b'),hold off
Fig. 18 respuesta al impulso a la ecuación de
diferencias
En esta grafica podemos ver que nuestra función
toma valores mayores a cero y que para ciertos
valores de x, en un mismo punto toman dos valores
al mismo tiempo.
5.3. Ejercicio 1.19
Escriba un programa Matlab para trazar la solución a
las tres ecuaciones en diferencias en el Ejercicio
1.18 para ω = π / 3 y ω = π.
Comandos en Matlab
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 figure(1) stem(n,x,'r'),hold on, stem(n,y,'b'),hold off,title 'y(n)
para w=pi/3'
w= π / 3
Fig. 19 para w= π / 3
w = π
Fig. 20 para w= π
w= π / 3
Fig. 21para w= π / 3
w = π
Fig. 22 para w= π
w= π / 3
Fig. 23 para w= π / 3
w = π
Fig. 24 para w= π
En este ejercicio podemos ver como la señal tiene una
respuesta a una entrada.
Podemos observar que para cada valor de w la
graficas varía en frecuencia.
5.4. Ejercicio 1.23
Supongamos que queremos procesar la señal 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
señal x (n) se describe mediante la siguiente
ecuación en diferencias
Comandos en Matlab
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,'y'), hold on plot(n,x), title 'Señal muestreada
xa(t) y 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),title 'Ecuacion de
diferencias y(n)'
Fig. 25 señal muestreada
Fig. 26 ecuaciones de diferencias
En el ejercicio anterior logramos ver como se realiza
el muestreo de una señal continua. Aquí podemos
observar las etapas de muestreo como lo es el
filtrado del espectro de la señal continua algo
demasiado importante para proceder con el siguiente
paso que es el muestreo holding el cual deja por un
periodo de tiempo corto el valor de la señal
muestreada.
5.5. Ejercicio 1.26
Dada una sinusoide y (t) = Acos (Ωct)
Demostrar que si y (t) es muestreada con una
frecuencia de muestreo ligeramente por encima
de la frecuencia de Nyquist (que es Ωs = 2Ωc
2Ωc + ε, donde ε «wc), entonces la envolvente
de la señal muestreada variará lentamente, con
una frecuencia de π ε / (2Ωc + ε) rad / muestra.
Esto se refiere a menudo como el efecto muaré.
Escribir un programa MATLAB para trazar 100
muestras de y (n) para ε igual a Ωs/100 y
confirmar el resultado anterior.
Comandos en Matlab
A = 10; Pc = 2; t=-10:0.01:10; y=A.*cos(Pc.*t); Ps = 5; n=-10:1/Ps:10; yn=A.*cos(Pc.*n); subplot(211),plot(t,y),title
'Función de t' subplot(212),stem(n,yn,'y'), title
'Function de n'
Fig. 27 señal continúa en el tiempo
Fig. 28 señal discreta en el tiempo
En este ejercicio logramos observar como pasamos
de una señal continua en el tiempo a la misma señal
e tiempo discreto.
Para lo cual nuestra señal continua debe ser
muestreada y filtrada para luego ser pasada a señal
discreta, la frecuencia de muestreo debe ser igual o
mayor a la frecuencia de Nyquist para así reducir el
efecto de aliasing.
VI. CONCLUSIONES
Para poder procesar una señal continua en
un sistema discreto necesitamos tomar una
frecuencia de corte mayor igual a la
frecuencia de Nyquist para eliminar el
efecto de aliasing.
El espectro de señal continua en el tiempo
debe ser procesada a través de un filtro pasa
bajos para su transformación a una señal
discreta.
Matlab nos permite representar señales
discretos de manera perfecta mientras que
para señales continuas nos da una
aproximación muy buena.
El muestreo de una señal continua es una
parte fundamental en el procesamiento de la
señal para su transformación a discreta en
el tiempo.
VII. BIBLIOGRAFIA
Diniz P. ( 2012).Digital signal processing. Segunda
Edición. 12- 10-2012.
http://es.wikipedia.org/wiki/Procesado_de_se%C3
%B1al
http://arantxa.ii.uam.es/~taao1/teoria/tema2/pdf/te
ma2.pdf
http://www.ingelec.uns.edu.ar/pds2803/materiales/
cap05/05-cap05.pdf
http://www.mailxmail.com/curso-muestreo-
digitalizacion-senales/senal-continua-senal-
discreta