Você está na página 1de 7

Transformada Discreta

Galo Candela Karina Gutiérrez


Departamento de Eléctrica y Electrónica Departamento de Eléctrica y Electrónica
Quito, Ecuador Quito, Ecuador
gcandela@espe.edu.ec kgutierrez@espe.edu.ec

Abstract— In mathematics convolution is a mathematical invertida “temporalmente” y desplazada de la entrada ( x[n] )


operation in two functions (f and g) to produce a third function, dada por x[n-k] ambas en un eje k, donde n pasa a ser
which is normally seen as a modified version of one of the un parámetro fijo.
original functions. The idea of discrete convolution is the same as
the continuous convolution. Recall that convolution is a powerful Luego se multiplican estas dos señales obteniéndose la
tool to determine the outcome of a system after learning the secuencia de sumandos. Finalmente sumando los valores de
arbitrary input and the impulse response of the system. esta secuencia con respecto al índice k se alcanza el valor de la
salida y[n] en el instante n correspondiente. Esta última
Keywords— Discrete convolution, function, input, response, operación se repite para cada valor de n requerido.
system.
II. COMANDOS DE MATLAB UTILIZADOS PARA
I. INTRODUCCIÓN TRANSFORMADAS DISCRETAS

A. Comando Fft:
La convolución es similar a la correlación cruzada. Para
señales discretas de valores reales, difieren solo en una Calcula la DFT de un vector.
inversión de tiempo en una de las señales. Para señales Ejemplo:
continuas, el operador de correlación cruzada es el operador
adjunto del operador de convolución. >> t=0:0.001:0.25;
>> x=sin(2*pi*50*t)+sin(2*pi*120*t);
Tiene aplicaciones que incluyen probabilidad, estadísticas,
visión por computadora, procesamiento del lenguaje natural, >> y=fft(x);
procesamiento de imágenes y señales, ingeniería y ecuaciones >>plot(abs(y))
diferenciales.

La convolución se puede definir para funciones en el


espacio euclidiano y otros grupos. Por ejemplo, las funciones
periódicas, como la transformada de Fourier en tiempo
discreto, se pueden definir en un círculo y convolucionar por
convolución periódica. También se puede definir una
convolución discreta para funciones en el conjunto de los
enteros.

La respuesta y[n] de un sistema lineal y estacionario en


tiempo discreto a una entrada arbitraria x[n] se obtiene como
la suma de convolución dada por:

Fig1. Gráfico de la función “ff t”

Donde h[n], que se asume conocida, es la respuesta del B. Comando Ifft:


sistema a un impulso unitario en la entrada. Para obtener la Calcula la DFT inversa de un vector.
salida y[n] en un instante de tiempo n determinado, primero se
Ejemplo:
resuelve los productos h[k] . x[n-k] como una función de la
variable discreta k. Luego se realiza la sumatoria infinita de los >> w=[1:256];
mismos respecto a k obteniéndose y[n].
>> y=zeros(size(w));
Estas operaciones matemáticas tienen una interpretación
gráfica muy sencilla. Primero se traza h[k] y una versión >> y=(1:10)=1;

XXX-X-XXXX-XXXX-X/XX/$XX.00 ©20XX IEEE


>>y(248:256)=1; D. Comando Dftmtx:
>> x=ifft(y); Genera una matriz DFT.
>>plot(real(x)); Ejemplo:
>> t=0:0.001:0.25;
>> x=sin(2*pi*50*t)+sin(2*pi*120*t);
>> F=dftmtx(251);
>> y=F*x';
>> z=fftshift(y);
>>plot(abs(z))

Fig2. Gráfico de la función “ifft”

C. Comando Fftshift:
Intercambia las mitades izquierda y derecha de un vector.
Cuando se aplica a una DFT, la muestra desde - (N / 2) + 1 a
(N / 2).
Ejemplo: Fig4. Gráfico de la función “dftmtx”

>> t=0:0.001:0.25;
E. Comando Fftfil:
>> x=sin(2*pi*50*t)+sin(2*pi*120*t); Realiza el filtrado lineal utilizando el método de
>> y=fft(x); superposición y adición.
>> z=fftshift(y); Ejemplo:
>>plot(abs(z)) >> 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)

Fig3. Gráfico de la función “fftshift”

Fig5. Gráfico de la función “fftfil”


F. Comando Dct: >>subplot(2,1,1);
Calcula la DCT de un vector. >> stem(C(1,:));
Ejemplo: >> stem(C(6,:))
>> t=0:0.05:1;
>> x=sin(2*pi*3*t);
>>y=dct(x);
>> plot(y)

Fig8. Primer gráfico de la función “Dctmtx”

Fig6. Gráfico de la función “dct”

G. Comando Idct:
Calcula la DCT inversa de un vector de coeficientes.
Ejemplo:
>> y =1 : 3 2 ;
>> x= i d c t ( y ) ;
>> p l o t ( x )z =

Fig9. Segundo gráfico de la función “Dctmtx”

III. CONVOLUCIÓN LINEAL


La convolución lineal es la operación básica para calcular
la salida de cualquier sistema invariante en el tiempo lineal
dada su entrada y su respuesta de impulso.
La convolución circular es la misma operación, pero
considerando que el soporte de la señal es periódico (como en
un círculo).
Una de las maneras más eficientes de implementar la
Fig7. Gráfico de la función “dct” convolución es haciendo multiplicaciones en el dominio de la
frecuencia.
H. Comando Dctmtx:
A. Comando Conv
Genera una matriz DCT.
Sus argumentos de entrada pueden intercambiarse, ya que
Ejemplo: la operación de convolución es conmutativa.
>> C=dctmtx(8);
Ejemplo: Ejemplo:
>> x=ones(1,10); >> h=[1 2 3 4 5 6 7 8 9 10];
>> h=[1 2 3 4 5 6 7 8 9 10]; >>xaux=[x zeros(1,length(h)-1)];
>> y1=conv(x,h) >> y3=filter(h,1,xaux)

Fig12. Segundo gráfico de la función “filter”


Fig10. Gráfico de la función “conv”

C. Operación de filtrado digital a través del dominio de la


B. Comando Filter frecuencia usando la FFT
Los argumentos de entrada son dos vectores, que contienen Para evitar la convolución circular, primero se debe
los coeficientes del numerador y del denominador de H (z) y la rellenar x [n] y h [n] con el número correcto de ceros. La
señal de entrada.
manera más fácil de determinar este número es con la fórmula:
Ejemplo:
longitud (y) = longitud (x) + longitud (h) - 1.
>> x=ones(1,10);
>> h=[1 2 3 4 5 6 7 8 9 10];
>>length_y=length(x) + length(h)-1;
>> y2=filter(h,1,x)
>> X=fft(x,length_y);
>> H=fft(h,length_y);
>> Y4=X.*H

Con la siguiente función el tamaño de la FFT y la


segmentación de x[n] son automáticamente suministrados.

>>y5 = fftfilt(h,xaux);

IV. DOMINIO DEL TIEMPO Y DE LA FRECUENCIA

A. Diseño de filtro intuitivo


Ejemplo:
>> f s = 200;
>> f = 10 ;
>> time = 0:1/f s : (1-1/f s ) ;
Fig11. Primer gráfico de la función “filter”
>> k = 0;
Es interesante observar que el comando filter convierte la >> x = sin (2*pi*f .*time ) + k*randn (1 , fs) ;
magnitud del vector de salida igual a la magnitud de la >> figure (1);
entrada. Si se quiere determinar todas las muestras distintas de >> plot ( time , x )
cero de y [n], debemos hacer que x [n] tenga la magnitud de
salida deseada rellenando la entrada original con el número Donde el parámetro K controla la cantidad de ruido
correcto de ceros: presente en x[n].
En las figuras 13, 14, 15 y 16, se muestran las respuestas en
tiempo y frecuencia de la señal x[n], para distintos valores
de K respectivamente.

Fig16. Respuestas de X en tiempo y frecuencia para K=3

V. EJERCICIOS ADICIONALES

Fig13. Respuestas de X en tiempo y frecuencia para K=0


A. Convolución lineal en MatLab

>> N=20;
>> k =5;
>> x=randn (1, N);
>> h=rand (1, k);
>> f lops (0)
>> x l =[ x z e r o s ( 1 , k-1) ];
>> h l =[ h z e r o s ( 1 ,N-1) ];
>> Xl= f f t ( x l ) ; Hl= f f t ( h l );
>> co1= i f f t ( Xl . _ Hl );
>> f (1) = f lops;
>> f lops (0)
>> co2=conv (x, h);
>> f (2)=f lops;
>> f lops (0)
Fig14. Respuestas de X en tiempo y frecuencia para K=0,5
>> co3=f ilter (h,1,x);
>> f (3)=f lops;

Fig15. Respuestas de X en tiempo y frecuencia para K=1,5 Fig17. Resultados obtenidos mediante: fft, conv y filter.
Para N = 20 y K = 5, al utilizar la función FFT para
calcular la convolución lineal, se necesitan 6182 operaciones
de punto flotante, mientras que para el método conv se
necesitan 202 flops y para el método filter se usaron 200 flops.

Si se escoge (N +K - 1) como una potencia de 2, como se ve en


la tabla 1, el número de flops que se realizan con la función fft
es menor al número de flops que se usan para las funciones
conv y filter.

Fig19. Respuesta en frecuencia para N=128 con 64 ceros


Tabla 1: Resultados obtenidos para diferentes N y K,
cuando (N + K - 1) es potencia de 2
En el tercer literal se pide una señal de entrada x[n] con 128
Dada la señal: muestras, en la que en su respuesta en frecuencia todavía no
se logra distinguir las dos sinusoidales, pero al llenar la
misma con 128 ceros y al obtener así 256 muestras, las dos
sinusoidales se pueden distinguir, de igual manera cuando
Para el primer literal, tenemos tenemos una señal de se llena con 384 ceros para obtener una señal de 512
entrada x[n] con 64 muestras, la cual tiene una FFT en la muestras, las sinusoidales, se logran diferenciar, debido a
que no se pueden reconocer las dos sinusoidales, de igual que la cantidad de muestras que se tiene a la entrada es lo
manera cuando se llena con 64 ceros siguen sin suficientemente grande como para diferenciarlas en su
distinguirse las dos sinusoidales. respuesta en frecuencia.

Fig20. Respuesta en frecuencia para N=128 con 128 ceros

Fig18. Respuesta en frecuencia para N=64


Fig21. Respuesta en frecuencia para N=128 con 384 ceros

VI. CONCLUSIONES Y RECOMENDACIONES


En el presente laboratorio se realizó el procedimiento de
solución de cada uno de los ejercicios planteados mediante
códigos del programa de MatLab.
La resolución de los enunciados se obtuvo de manera
gráfica, lo cual facilitó la visualización de la respuesta en el
dominio de la frecuencia y del tiempo.
La convolución discreta tiene las propiedades conmutativa,
asociativa y distributiva.
La respuesta al impulso h(n) de un sistema discreto,
proporciona información del sistema con respecto a su
estabilidad, causalidad, y permite obtener la respuesta a
cualquier excitación.
Las generalizaciones de convolución tienen aplicaciones en
el diseño y la implementación de filtros de respuesta de
impulso finitos en el procesamiento de señales.

REFERENCIAS

[1] P. Diniz, E. da Silva y S. Netto, Digital Signal


Processing: System Analysis and Design, Cambridge
University Press, 2010.
[2] H. Monson, Schaum’s Outline of Theory and Problems of
Digital Signal Processing, McGraw Hill, 2011.

Você também pode gostar