Laboratorio 3 PDS TRANSFORMADAS DISCRETAS
Short Description
Descripción: LABORATORIO 3 TRANSFORMADAS DISCRETAS...
Description
1
LABORATORIO 3 TRANSFORMADAS DISCRETAS JhonatanValencia. Universidad de las Fuerzas Armadas- ESPE Quito-Ecuador
I.
INTRODUCCIÓN
En esta práctica, vamos a realizar algunos experimentos numéricos sobre transformadas discretas usando Matlab. El objetivo fundamental de esta práctica es conocer las diferentes instrucciones que tiene Matlab para realizar las diferentes ejercicios propuestos. Al igual que ocurre en el caso continuo, el concepto del dominio de la frecuencia es fundamental para entender las señales discretas y el comportamiento de los sistemas LIT. El espectro de una señal nos enseña cómo es esa señal en el dominio frecuencial; la respuesta en frecuencia de un sistema nos aporta el conocimiento de cómo se comporta ese sistema para diferentes entradas, gracias a la perspectiva que aporta el dominio de la frecuencia. El software utilizado para la implementación de señales discretas, en esta práctica es MATLAB, que es plataforma computacional de amplia cobertura, incluye una interfaz gráfica interactiva (SPTool) en la que se puede analizar y manipular señales digitales, filtros y espectros, sin necesidad de usar programación avanzada.
II.
DESARROLLO
TRANSFORMA DISCRETOS CON MATLAB
Las funciones descritas a continuación son parte del procesamiento de señal de MATLAB.
fft: Calcula el DFT de un vector. Parámetro de entrada: el vector de entrada x
Parámetro de salida: la DFT del entrada vector x. Ejemplo: t=0:0.001:0.25; x=sin(2*pi*50*t)+sin(2*pi*120*t); y=fft(x); plot(abs(y));
Análisis. Como resultado obtenemos la DFT de una forma directa de una función cualquiera.
ifft: Calcula la inversa DFT de un vector. Parámetro de entrada: el vector complejo entrada y tener los coeficientes DFT. Parámetro de salida: el inverso DFT de la entrada del vector y. Ejemplo: w=[1:256]; y=zeros(size(w)); y(1:10)=1; y(248:256)=1; x=ifft(y); plot(real(x));
2
Parámetro de salida: la matriz DFT n x n. Ejemplo: t=0:0.001:0.25; x=sin(2*pi*50*t)+sin(2*pi*120*t); F=dftmtx(251); z=fftshift(y); plot(abs(z));
Análisis. Como resultado se obtuvo la IDFT para cualquier señal de entrada.
fftshift: intercambia las mitades derecha e izquierdas de un vector. Cuando se aplica a un DFT, muestra de -(N=2) + 1 para N=2.
Parámetro de entrada: el DFT vector y. Parámetro de salida: el DFT vector z intercambiado. Ejemplo: t=0:0.001:0.25; x=sin(2*pi*50*t)+sin(2*pi*120*t); y=fft(x); z=fftshift(y); plot(abs(z));
Análisis: Se obtuvo como resultado los valores absolutos de los valores de la matriz DFT.
fftfilt: Efectúa un filtrado lineal usando el método de superposición y añadir. Parámetros de entrada: -El vector h que contiene los coeficientes del filtro. -El vector x contiene la señal de entrada. -La longitud n de los bloques no se superponen en que se divide x. Si n no se proporciona, la función utiliza su propio n optimizado (recomendado). Parámetro de salida: La señal del filtro y. Example:
Análisis. Se obtuvo como resultado un intercambio de los valores de derecha a izquierda, de una función discreta.
dftmtx: Genera una matriz DFT. Parámetro de entrada: el tamaño de la n DFT.
h=[1 2 3 4 4 3 2 1]; t=0:0.05:1; x=sin(2*pi*3*t); y=fftfilt(h,x); plot(y);
3
Ejemplo. y=1:32; x=idct(y); plot(x);
Análisis. Se obtuvo el grafico del filtrado de una señal de entrada por el método de superposición.
dct: Calcula la DCT de un vector. Parámetro de entrada: El vector de entrada x. Parámetro de salida: el DCT del vector de entrada x. Ejemplo:
t=0:0.05:1; x=sin(2*pi*3*t); y=dct(x); plot(y);
Análisis. Se obtuvo un gráfico de la transformada inversa DCT de una señal especificada.
dctmtx: Genera una matriz DCT. Parámetro de entrada: el tamaño de n DCT. Parámetro de salida: n x n matriz DCT. Ejemplo (parcelas las funciones de base de primer y sexto de una longitud-8 DCT): C=dctmtx(8); subplot(2,1,1), stem(C(1,:)); subplot(2,1,2), stem(C(6,:));
Análisis. Se obtuvo el grafico de la DCT de una señal específica.
idct: Calcula la inversa DCT de un vector de coeficientes. Parámetro de entrada: el coeficiente vector y. Parámetro de salida: el inverso DCT del vector y coeficientes.
Análisis. Se obtiene un gráfico de una matriz de coeficientes de un DCT.
4
CONVOLUCIÓN LINEAL Hemos visto que la señal de salida y [n] de un filtro lineal, tiempo-invariante, causal puede ser determinado por la convolución lineal entre la entrada de señal x [n] y el sistema impulso respuesta h [n]. En este experimento, se investigan varias maneras de realizar dicha operación usando Matlab. Aquí trabajamos con secuencias de corta longitud x [n] y h [n], tales como: x = ones(1,10); h = [1 2 3 4 5 6 7 8 9 10]; Para que el lector puede obtener el resultado deseado algebraicamente por adelantado. Más tarde, comparamos los resultados de cada método visto por debajo de las secuencias más largas. Dado x [n] y h [n], quizás la forma más fácil, pero no necesariamente la mayoría numéricamente eficientemente, es utilizar el comando conv: y1 = conv(x,h); Cuyos argumentos de entrada pueden ser cambiadas, ya que la operación de convolución es simétrica. Para un general filtro digital con función de transferencia
Con a0 diferente de 0, uno puede determinar la salida y [n] a la entrada x [n] usando el filtro de comando. De este comando, los argumentos de entrada son dos vectores, que contiene el numerador y el denominador coeficientes de H(z) y la señal de entrada. En este experimento, donde se da el impulso respuesta h [n], podemos usar el comando filtro suponiendo que A(z) = 1 y asociando h [n] con el vector del numerador-coeficientes, tales como: y2 = filter(h,1,x); Es interesante notar que el comando filtro las fuerzas de la longitud del vector de salida para ser igual a la de la entrada. Por lo tanto, si uno quiere determinar todas las muestras de distinto de cero y [n], nosotros debemos forzar x [n] para tener la longitud deseada salida por la entrada original con el adecuado número de ceros de relleno:
xaux = [x zeros(1,length(h)-1)]; y3 = filter(h,1,xaux); Como se mencionó en clase, uno puede implementar la operación de filtrado digital mediante el dominio de frecuencia utilizando la FFT. Para evitar la convolución circular, uno debe primero cojín x [n] y vectores h [n] con el adecuado número de ceros. La manera más fácil de determinar estos número de ceros es recordar que la longitud de la señal de salida deseada debe ser la longitud de la convolución lineal de x [n] y h [n]; es decir: length(y) = length(x) + length(h) - 1. Por lo tanto, debemos garantizar que las FFTs de x [n] y [n] h se determinan con esta longitud, interpretado por el siguiente script: length_y = length(x) + length(h) - 1; X = fft(x,length_y); H = fft(h,length_y); Y4 = X.*H; y4 = ifft(Y4)
En las versiones antiguas de Matlab, errores numéricos que se acumulan durante el proceso de filtrado, gen-salud cuidado complejo salida secuencia, incluso cuando x h [n] [n] y era señales reales. En estos casos, uno fue obligado a usar el comando real para guardar sólo la parte real del resultado. Las versiones actuales de Matlab deshacerse de la parte imaginaria espuria de y4 automáticamente. Como se mencionó anteriormente, este experimento se basó en corto x [n] y h [n] señales para permitir al lector a seguir de cerca todos los cómputos realizan en Matlab. En la práctica, si las longitudes de estas señales son su_ciently corto (ambos de ellos alrededor de 100 coeficientes), es la manera más simple y rápida para llevar a cabo la fltro digital con el comando conv. Si, sin embargo, ambas señales de ser demasiado largos, entonces el dominio de la frecuencia se vuelve muy ventajoso en términos de Cómputos numéricos. En el caso donde sólo una de las señales tiene una larga duración, puede aplicarse el método de superposición y añadir descrito en clase como. y5 = fftfilt(h,xaux); Donde el tamaño FFT y la segmentación de x [n] son elegidos automáticamente para garantizar la ejecución de eficiente.
5
Asignación. Asignación. El estudiante se anima a experimentar con todas las formas arriba para realizar el filtrado digital con distintas señales de entrada y las respuestas de impulsos. En particular, se puede aumentar la longitud de estas señales, a la orden de miles de muestras, para verificar cómo el dominio de la frecuencia se convierte en una herramienta importante en varias situaciones prácticas. DOMINIO DE TIEMPO Y FRECUENCIA Permítanos ahora emplean el dominio de la frecuencia para analizar el contenido de una determinada señal x [n] compuesta de 10Hz sinusoidal corrompida por el ruido, con Fs = 200 muestras/s para un intervalo de 1 s, como determinado por fs = 200; f = 10; time = 0:1/fs:(1-1/fs); k = 0; x = sin(2*pi*f.*time) + k*randn(1,fs); figure(1); plot(time,x);
Ejemplos de la trama de x [n] dañado con diferentes niveles de ruido. Utilizar k = 0, k = 0:5, k = 1:5 y k = 3. Además, se muestra el valor absoluto de la FFT correspondiente para los valores anteriores de k. utilizando los gráficos anteriores, indicar para qué valores de k el componente sinusoidal se observa claramente en el dominio del tiempo. Ahora, realizar el mismo análisis en el dominio de la frecuencia. Una forma de lidiar con casos de ruido grande es estimar el espectro para varios segmentos de tiempo diferente de x [n] y promedie los resultados. De esta manera, los picos sinusoidal de 10 Hz están presentes en todos FFTs, mientras que los picos de ruido al azar se encuentran en la diferente FFTs. Por lo tanto, la operación promedio tiende a preservar los picos FFT correspondientes a los 10 Hz sinusoidal mientras atenuando los picos debido al componente de ruido. Por lo tanto, repita este experimento una gran cantidad k _ 3 del componente de ruido. Promedio del valor absoluto de la FFT resultados para M repeticiones del experimento e identificar el componente sinusoidal en el espectro resultante. Determinar un buen valor de M para diferente los valores de k. fs = 200; f = 10; time = 0:1/fs:(1-1/fs); k = 0; x = sin(2*pi*f.*time) + k*randn(1,fs); figure(1); plot(time,x); K=0
Analisis. Se obtuvo un gráfico con un n número de muestras de una señal sinusoidal que presenta un ruido.
Donde el parámetro k controla la cantidad de ruido presente en x [n].
4.1
K= 0.5
6
EJERCICIOS ADICIONALES 1. Convolucion lineal usando matlab. Utilice el comando fft para determinar la convolución lineal entre dos señales dadas x [n] y h [n]. K= 1.5
Las señales que vamos a usar son x = ones(1,5); h = [1 2 3 4 5]; Usamos el comando length para hallar la longitud de las dos señales, hallamos sus correspondientes FFT las multiplicamos y procedemos a graficar la IFFT del producto de ellas, teniendo:
K=3
Para K mayores de 3 : K=10
Comparar la función que haya creado en el punto anterior con los comandos conv y filtro con respecto a la señal de salida y el número total de operaciones necesarias para convolución las dos señales de orden N y K, respectivamente.
Con el comando conv al igual que se dijo en el experimento 1 obtendremos la misma señal.
Análisis. Se obtiene como resultados, que a una señal tan sencilla como la senoidal y para los valores más altos de k, so observa que se presenta una señal con mas ruido.
7
Con el comando filter tendremos la convolución de las cinco primeras muestras ya que este proceso requiere un paso adicional para cumplir con N+M-1 En este caso estamos perdiendo cuatro muestras x = ones(1,5); h = [1 2 3 4 5]; y4 = filter(h,1,x); stem(y4);
Verificar los resultados experimentalmente (usando el comando de los fracasos) para valores generales de N y K. x = ones(1,5); h = [1 2 3 4 5]; y4 = filter([h zeros(1,4)],1,[x zeros(1,4)]); stem(y4);
Repetir ítem anterior teniendo en cuenta únicamente los valores de N y K tal que (N + K - 1) es una potencia de dos. x = ones(1,5); h = [1 2 3 4]; y4 = filter([h zeros(1,4)],1,[x zeros(1,3)]); stem(y4);
Análisis. Como podemos ver N tiene un valor de 5 y K un valor de 4, dando como resultado una convolución igual a 8. De forma podemos comprobar mediante la herramienta de Matlab una convolución de señales.
2. Dada la señal
8
Entonces: Para l = 100, calcular la DFT de x [n] con 64 muestras. ¿Se puede observar la presencia de ambas sinusoides? Como podemos observar si se logran distinguir señales sinusoidales. Al aumentar el muestreo podremos ver con un poco más de claridad pero teniendo en cuenta que la señal no va a variar en la forma que se presenta con 64 muestras.
Aumentar la longitud de la DFT a 128 muestras de relleno 64 ceros a las muestras originales de x [n]. Comentar los resultados. Se puede observar que presenta una forma similar a la gráfica Fig. Pero en esta aumentamos el muestreo a 128 e igual el aumento de 0 nos presenta como una sobre posición de muestras.
Calcular la DFT de x [n] usando 128 muestras. Usted ahora puede observar la presencia de ambas sinusoides. Ya se mencionó en el literal 1 que al aumentar el muestro observaremos la misma señal pero con intervalos más pequeños debido al número de veces que se muestrea.
Aumentar la longitud de la DFT de x [n] por 128 muestras de relleno 128 ceros a las muestras de x [n]. Repita para un acolchado de 384 ceros. Comentar los resultados. Se puede observar que presenta una forma similar a la gráfica Fig., pero en esta aumentamos el muestreo a 128 e igual el aumento de 0 nos presenta como una sobre posición de muestras.
Análisis. Al calcular la DFT de una forma más práctica y mediante un programa de
9
computadora en este caso la herramienta de Matlab nos podemos dar cuenta de que resulta en cierta forma más fácil desarrollar este trabajo con muestras mucho más grandes
CONCLUSIONES o Se puedo observar que la manera más fácil de calcular la convolución es con el comando conv ya que este no requiere pasos previos sino solo la ejecutación del comando.
o Se pudo observar que con el comando length se puede hallar las longitudes de cada una de las diferentes secuencias para el cálculo de la convolución con FFT. o Mientras mayor tenemos en la señal se puede observar que esta tiene mayor distorsión y no asemejarse a una sinusoidal como se observa en este artículo. o Se determinó que si el número de ceros es mayor que los polos, la magnitud de la función de transferencia tiene a ser mayor. o Con el comando filter se puede calcular la convolución de dos secuencias pero se tiene que tener en cuentra que este comando requiere un paso previo para cumplir con N+M-1. I. BIBLIOGRAFÍA Diniz P. ( 2012).Digital signal processing. Segunda Edición. 12-10-2012. http://www.gts.tsc.uvigo.es/ssd/practicas/pract ica4.pdf http://personal.us.es/contreras/practica4.pdf http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/datos/fourier/fourier_1. html
View more...
Comments