unlversl dad auton om a metro po lltana148.206.53.84/tesiuami/uamr0205.pdf · obtencion del...

49
UNlVERSl DAD AUTON OM A METRO PO LlTANA ~ Casa abterta al tiempa UNIDAD IZTAPALAPA División de Ciencias Básicas e Ingenieda DEPARTAMENTO DE ING. ELECTRICA Area Iny. Electrónica "TRANSFOPUDA RAPIDA DE FOURIER" t Autores : Mauricio L6pez Villaseñor Gonzálo Diichen Sáiichez Fausto Casco Sánchez 02.0202.I1.01.003/92 [Reimpresión. 94:)

Upload: dinhcong

Post on 01-Oct-2018

213 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

UNlVERSl DAD AUTON OM A METRO PO LlTANA ~

Casa abterta al tiempa UNIDAD IZTAPALAPA División de Ciencias Básicas e Ingenieda

DEPARTAMENTO D E I N G . ELECTRICA

Area I n y . E l e c t r ó n i c a

"TRANSFOPUDA RAPIDA D E FOURIER"

t

Autores : Mauricio L6pez Vil laseñor

Gonzálo Diichen Sáiichez

Faus to C a s c o Sánchez

0 2 . 0 2 0 2 . I 1 . 0 1 . 0 0 3 / 9 2 [Reimpresión. 94:)

Page 2: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

DEPARTAMENTO DE ING. ELECTRICA

Area ing. Electrónica

“TRANSFORMADA RAPIDA DE FOURIER”

Autores :

Mauricio LÓpez Villaseñor

Gonzálo Duchen Sánchez

Fausto Casco Sánchez

02.0202.11.01.003/92 [Reimpresión. 941

Page 3: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

UNIVERSIDAD AUTONOMA METROPOLITANA-IZTAPALAPA División C B I

Departamento de Ingeniería Eléctrica

Area de Ingeniería Electrónica

TRASNSFORMADA RAPIDA DE FOURIER

Monografía

M. en I. Mauricío López Villaseñor M. en C. Gonzalo Duchen G.

M. en C. Fausto Casco Sánchez

Diciembre 1991.

Page 4: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

Transformada Rápida de Fourier

Mauricio López Villaseñor

Gonzalo Duchen G. Fausto Casco Sánchez

R E S U M E N

En este trabajo se describe a la Transformada Rápida de Fourier (TRF) ,

que es un algoritmo computacional para la obtención de la Transformada

de Fourier Discreta (TFD).

Se plantea una matriz como solución de la TFD ; a travéz de un

desarrollo intuitivo de la TRF, se explica con un ejemplo el

funcionamiento del algoritmo para N = 4 puntos.

Adjunto se tiene un paquete computacional para la obtención de

la TRF, fácil de usar en una computadora personal.

Finalmente cabe mencionar que este trabajo es de utilidad en la

uea Procesamiento de Señales de la Licenciatura de Ingeniería

Electrónica, Ó bien en cursos de extensión universitaria, para

actualización de ingenieros.

Otras Obras Publicadas :

1- Transformada Z

UAM-Iztapalapa ( Julio 1991 1

M. en I. Mauricio López Villaseñor, M. en C. Fausto Casco Sánchez

2- Convolución Continua

UAM-Iztapalapa ( Noviembre 1991 1 M.en I. Mauricio López Villaseñor, M. en C. Fausto Casco Sánchez

2

Page 5: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

C O N T E N I D O

1. o

1.1

1.2

1.3

1 . 4

1.4. 1

1. 4 .2

1.5

1.6

1 .7

2.

INTRODUCCION

PLANTEAMIENTO DE LA MATRIZ

COMPORTAMIENTO INTUITIVO DE LA TRF

SEÑALES DE FLUJO GRAFICO

NODO DUAL

ESPACIAMENTO DE LOS NODOS DUALES

EVALUACION DE LOS NODOS DUALES

DETERMINACION DE LOS TERMINOS Wp

REACOMODO DE LA TRF

OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF

LISTADO DEL PROGRAMA.

APENDICE A

APENDICE B

APENDICE C

BIBLIOGRAFIA

4

5

6

12

14

15

17

20

22

23

28

33

36

44

47

3

Page 6: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

TRANSFORMADA RAPIDA DE FOURIER (TRF).

1. O. INTRODUCCION.

Una de las herramientas más importantes con las que cuenta el

Ingeniero en Comunicaciones es la Teoría Matemática de Fourier, ya que le permite interpretar las características sobresalientes de las

señales y los sistemas de comunicación de manera rápida y eficiente.

En la actualidad con la llegada de las computadoras se abrió un nuevo

panorama para obtener la Transformada de Fourier por medio de

algoritmos computacionales, llamada Transformada de Fourier Discreta

(TDF), sin embargo el cálculo es lento a medida que el número de

muestras crece. Afortunadamente se cuenta con algoritmos rápidos que

puede evaluar esta Transformada de Fourier Discreta, llamada

Transformada Rápida de Fourier (TRF). De aquí que en los diferentes

campos de la Ingeniería donde se aplica la Transformada Rápida de

Fourier no se requiere de un estudio a fondo de su algoritmo pero si

de un claro entendimiento de la Transformada de Fourier Discreta; esto

se debe a que la TRF es simplemente un algoritmo (y por ende un método particular de ejecutar una serie de cálculos.), que puede encontrar la

Transformada de Fourier Discreta mucho más rápido que otros

algoritmos. Por esta razón nuestra discusión de la TRF se direcciona

sólo al aspecto computacional.

Inicialmente se usa un ejemplo de matriz factorizada para justificar

intuitivamente el algoritmo de la TRF, posteriormente se representa

recíprocamente a las matrices factorizadas por señales de flujo

gráfico y a partir de estas Últimas se construye la lógica del

programa de la TRF.

4

Page 7: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

1 . 1 . PLANTEAMIENTO DE LA MATRIZ.

X(0) - X ( 1 )

X(2 1 X ( 3 )

- -

- a

Como se mencionó la TRF es un algoritmo rápido para obtener la TDF y por ende su análisis matemático se fundamenta en este Último.

Inicialmente se parte de la definición de la Transformada de Fourier

Discreta (TDF), dada por:

- wo wo wo wo - - x0(O) - wo w' w2 w3 x o ( l )

wo w2 w4 w6 xo ( 2 1 wo w3 w6 w9 X J 3 ) -

N- 1

(1.1) - J2Tlnk/N X(k) = 1 xo(n) e ; con k = O, 1. . . . . , ( N - 1 ) n=O

observando que esta describe el cálculo de N ecuaciones. Antes de verificar lo anterior se hace el cambio de variable W = e en la

ecuación (1.11, la cual queda como:

- j 2X/N N

N - 1

X(k) = 1 xo(n) W i k n=O

( 1 . 2 )

Si la secuencia x (n) a transformar se considera de 4 muestras O

( N = 4) la ecuación ( 1 . 2 ) puede describirse como:

X ( O ) = x0(O) wo + x o ( l ) wo + x0(2 ) wo + x0(3) wo X(1)= x0(O) wo + x o ( l ) w1 + x0(2) w2 + xo(3) w3 X(2)= x0(O) wo + x o ( l ) w2 + x0(2 ) w4 + xo(3 ) w6 X ( 3 ) = x0(O) wo + x o ( l l w3 + x0(2 ) w6 + xo(3 ) w9

o en forma matricial de la forma:

Una expresión compacta de ( 1 . 4 ) es:

(1 .3)

( 1 . 4 )

(1.5) nk + 2 ( k ) = dN xo(n)

+ y debido a que 3 y posiblemente x (n) son complejas, entonces son N O

5

Page 8: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

necesarias N2 multiplicaciones complejas y N(N-1) sumas complejas

para evaluar la matriz.

1 1 1 1 -

1 w1 w2 w3 1 w2 wo w2 1 w3 w2 w1

A

De hecho, la TRF es un algoritmo que reduce el número de

multiplicaciones y sumas requeridas en el cálculo de la matriz, y con

el fin de mostrar cómo se realiza esta reducción se parte de un

análisis intuitivo.

x0(O) - xo(l 1 x0 (2 )

x0 (3 ) - -

1.2. COMPORTAMIENTO INTUITIVO DE LA TRF.

Con el fin de ilustrar el algoritmo de la TRF, es conveniente

seleccionar el número de muestras o puntos de x (n) de acuerdo a la relación N = 2 , donde a es un entero. De acuerdo a esta condición es posible evaluar la TRF para el ejemplo previamente considerado ya que

se seleccionó a N = 4 = 2'= 2 (7 = 2 ) .

O T

2

El primer paso en el desarrollo del algoritmo de la TRF para este

ejemplo, es escribir la ecuación (1.4) como:

(1.6)

La modificación de la matriz se justifica en el hecho de que el

producto nk (en la ecuación (1 .211, para N 5 nk < 2N puede

considerarse como la suma de N muestras más "p" muestras (con p < NI, es decir nk = N + p, y esta suma de términos permite aplicar la

cuya ecuación general esta dada por:

(p+mN) W"k = w = Up, para toda m y con p < N. (1.8a)

6

Page 9: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

o bien :

- 1 w o o o - - 1 o w o o - - x0(OS 1 w 2 0 0 0 1 0 wo xo(l)

1 o w 2 0 x0(2)

O 0 1 w 3 0 1 0 w2 x0(3)

- - O 0 l w l

- - - A - d

Las modificaciones realizadas en (1 .4 ) se muestran a continuación

(para N=4):

2 6 1 9 w = w wo = w4, w = w Y

El segundo paso en el desarrollo del algoritmo de la TRF, es

factorizar la matriz (1.6) como:

(1.9)

La metodología de la factorización está basada en la teoría del

algoritmo de la TRF. Por el momento, es suficiente que la

multiplicación de las dos matrices cuadradas den como resultado a la

matriz cuadrada (1.6), con la excepción de que los renglones 1 y 2 de

? ( k ) están intercambiados; el vector intercambiado se puede denotar

por:

Esta factorización es la clave de la eficiencia del algoritmo de la

TRF .

Es el momento de examinar el número de multiplicaciones requeridas

para el cálculo de la ecuación (1.91. Inicialmente se genera un nuevo

vector cuyo resultado es el producto del vector x (n) con la segunda

matriz cuadrada en (1.91:

i

O

7

Page 10: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

x0(O) - x o ( l )

x0 (2 )

x0(3) - - - - I - - X 1 ( O ) - - 1 o wo o -

X l ( l ) 0 1 0 wo

x1 (3) O 1 0 w2

- - 1 o w 2 0 x1 (2)

(1 .111

El elemento x (O) se calcula mediante una multiplicación compleja y una suma compleja ( W presente en (1.11) no se reduce a la unidad con

el fin de obtener un resultado generalizado), como se muestra:

1 O

x (O) = x0(O) + wo xo(2) ( 1 . 1 2 ) 1

y el elemento x (1) también se determina por una multiplicación y una

adición: 1

Para evaluar el

y ésto se justif

x (1) = x o ( l ) + wo x0(3) 1

término x (2) s ó l o se requiere de una suma

za por el hecho de que el factor W es igua 1

O

(1.13)

compleja,

a: - w2:

(1. 14)

O y la multiplicación W x ( 2 ) ya fué calculada al determinar x l ( 0 ) ,

esto se muestra a continuación: o

(1.15) O x ( 2 ) = x (O) + w2 x ( 2 ) = x (O) - w x 0 ( 2 ) 1 O O O

A partir de un razonamiento similar, x (3) se determina por s ó l o una 1

suma compleja y ninguna multiplicación:

x ( 3 ) = x ( 1 ) + w2 x 0 ( 3 ) = x o ( l ) - wo x0(3) (1.16) 1 O

+ Es así, que el vector intermedio x (n) se determina por 4 sumas 1

complejas y dos multiplicaciones complejas.

Continuando con el cálculo del arreglo (1 .91 , se obtiene el vector

X(k) mediante el producto del vector x (n) con la primera matriz i 1

+ -

8

Page 11: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

cuadrada de (1.9):

(1.17)

El término x (O) se determina por una multiplicación compleja y una suma compleja, y el término x (1) por una suma compleja, ya que w0 =

-W2:

2

2

X2(O) = X 1 ( O 1 + wo x p 1 (1. 18)

(1. 19) 2 x (1 ) = x ( O ) + w x ( 1 ) = x (O) - wo x p 2 1 1 1

Razonando en forma similar, x (2) se determina por una multiplicación 2

compleja y una suma compleja, y x ( 3 ) por sólo una suma compleja: 2

x (2) = x1(2) + w' x1(3) (1.20) 2

x (3) = x (2) + w3 x (3) = x1(2) - w 1 x1(3) (1.21) 2 1 1

+ Se observa que el vector x (n) requiere de 4 sumas complejas y dos

multiplicaciones complejas. 2

De las indicaciones de los Últimos párrafos se concluye que al

evaluar el vector X k) mediante la ecuación (1.91, solo se requieren 4

multiplicaciones y 8 sumas complejas, que son mucho menos operaciones que las requeridas para determinar el vectorX)(k) de (1.41, ya que se

necesitarían 16 multiplicaciones y 12 sumas complejas. Se observa que

el proceso de factorización de la matriz, introduce ceros dentro de

las matrices factorizadas, dando como resultado la reducción del número de multiplicaciones y sumas complejas requeridas.

- 4

Además para este ejemplo, el proceso de factorización reduce el

número de multiplicaciones por un factor cuadrático, y tomando en

9

..

Page 12: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

cuenta que el tiempo de proceso de cómputo se gobierna principalmente

por el número de multiplicaciones, se concluye que el algoritmo de la

TRF es un proceso eficiente.

a En resumen, el algoritmo de la TRF para N = '2 es simplemente un

proceso para factorizar una matriz N * N en 7 matrices (cada una de N * NI de tal forma que cada una de las matrices factorizadas tienen la propiedad especial de minimizar el número de multiplicaciones y sumas comple jas.

Si se extiende el resultado del ejemplo previo, se observa que la TRF requiere de Na/2 multiplicaciones complejas (Na/2 = 4 ) y Na sumas complejas (NT = 81, mientras que el método directo requiere de N2 multiplicaciones complejas (N = 16) y N(N-1) sumas complejas (N[N-11 = 12).

2

N (número de muestras)

Fig. 1. Comparación de las multiplicaciones requeridas por el algoritmo directo y el de la TRF.

Por Último si se asume que el tiempo de proceso de cómputo es

proporcional al número de multiplicaciones, entonces la razón de la aproximación del tiempo de computación de la forma directa y TRF es:

Page 13: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

N2 2N - - - N7/2 - a (1 .22)

10 asi para N = 1024 = 2 se tiene una reducción del tiempo de proceso

de cómputo por más de 200 a 1. La figura 1 ilustra la relación entre

el número de multiplicaciones requeridas usando el algoritmo de la TRF comparándola con el número de multiplicaciones usando el método

directo.

Sin embargo el proceso de factorizar la matriz introduce una

discrepancia, esta se fundamenta en el hecho de que los vectores de

( 1 . 4 ) y (1.9) son diferentes en relación al orden en l o s renglones,

como se muestra a continuación:

( 1 . 2 3 )

Este reacomodo es intrínseco en el proceso de la factorización de la

matriz y afortunadamente es un problema menor ya que no se desvía del

fin último.

A continuación se presenta una técnica generalizada para reacomodar

Inicialmente se escribe a $ ( k ) - - X(k) con el fin de obtener x)(k) . + reemplazando el argumento k por su equivalente binario:

( 1 . 2 4 )

Obsérvese que si en los argumentos binarios se cambian o invierten

sus bits (O1 quedando 10; 10 quedando 01, etc. 1, entonces ( 1 . 2 4 ) se

expresa:

11

Page 14: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

(1.25)

Siendo este comportamiento un resultado generalizado del reacomodo de

renglones en la TRF.

Para N mucho mayor que 4, es tedioso describir el proceso de la

factorización de la matriz análogamente a (1.91, por esa razón se

interpretará a (1.9) por medio de señales de flujo gráfico y a partir

de este Último generalizar un programa para computadora.

1.3. SEÑALES DE FLUJO GRAFICO.

Con el fin de introducir las señales de flujo gráfico que describen a

la ecuación (1.9) es necesario partir de esta Última:

Esta conversión se indica en la figura 2, en la que se representa el

vector dato o arreglo x (n) por una columna vertical de nodos en la parte izquierda de la gráfica, el segundo arreglo vertical de nodos se

representa por el vector xl(n), y el siguiente arreglo vertical

correponde al vector x2(n) = X(k). Como se mencionó habrá a arreglos donde N = 2 .

i

o

3

3 - 3 a

La señal de flujo gráfico se interpreta como sigue: para cada nodo

(excepto el primero) entran dos líneas representando los caminos de

transmisión provenientes de l o s nodos del arreglo previo, estos

caminos transmiten o transportan una cantidad x (n) (donde i indica el i

12

Page 15: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

arreglo vertical de nodos antecesores al considerado y n toma

diferentes valores según el caso), en donde uno de ellos se multiplica

por W p . El factor Wp aparece cerca de la flecha del camino de

transmisión; la ausencia de este factor implica que Up = Wo = 1 , y el resultado total de un nodo es la suma de los dos caminos de

transmisión.

Con el fin de ser más explícitos en la interpretación de la señal de

flujo gráfico, considérese el nodo x (2) de la figura 2 y de acuerdo a las reglas establecidas por los párrafos anteriores el vector de este

nodo está dado por:

1

x1(2) = x0(O) + w 2 x0(2) (1.27)

el cual es idéntico al ya especificado, ver (1 .15) . Cada nodo de la

señal de flujo gráfico se expresa en forma similar.

En resumen, la s-eñal de flujo gráfico es un método que representa el

cálculo de la matriz factorizada en el algoritmo de la TRF donde cada

columna de la gráfica corresponde a una matriz factorizada; es así que

se requiere de a arreglos verticales de N puntos cada uno (N = 2'1.

Como se observa el uso de está representación gráfica permite

describir fácilmente el proceso de factorización de la'matriz para N

grande.

ARREGLO COMPUTACIONAL Arreglo - de Datos Arreglo 1 Arreglo 2

xdk)

Fig. 2. Señal de flujo gráfico de la TRF, N = 4.

Page 16: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

En la figura 3 se muestra la señal de flujo gráfico para N = 16,

ahora partiendo de esta dimensión es posible generalizar las

propiedades concernientes al proceso de factorización de la matriz y

así proporcionar los fundamentos para desarrollar el diagrama de flujo

del algoritmo de la TRF.

1 . 4 . NODO DUAL.

La figura 3 revela que en cualquier arreglo de nodos (excepto para el

primero), se pueden encontrar dos nodos evaluados por el resultado de

l o s caminos de transmisión provenientes de dos nodos ubicados al mismo

nivel con respecto a los renglones del arreglo previo. Por ejemplo,

los nodos x ( O ) y x (8) se calculan en términos de l o s nodos x ( O ) y 1 1 O

xo(8), además éstos Últimos no inciden en ninguna forma en cualquier

otro nodo y debido a esta característica particular a este par de

nodos se les define como par de nodos dual.

Lo anterior permite visualizar que un par de nodos dual se puede

evaluar mediante un programa computacional de manera simultánea, es

decir los nodos x (O) y x ( 8 ) de la figura 3 se calcula en términos de

x ( O ) y x (8) y el resultado de estos Últimos se almacena en las

mismas localidades de memoria de una computadora previamente ocupadas

por xo(0) y x0(8):

1 1

O O

x 1 (O) = x o ( 0 ) + xo(8) Wo (1.28a)

x (8) = xo(0) + xo(8) W8 (1.28b) 1

La discusión del Último párrafo permite establecer la mínima

capacidad de memoria de datos requerida al desarrollar un programa

computacional y ésta está restringida por el número de puntos del

arreglo inicial de datos xo(n), es decir al evaluar un arreglo de

nodos el resultado regresa a las mismas localidades de memoria de

datos.

14

Page 17: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

ARREGLO DE DATOS

X O ( k )

ARREGLO COMPVTACIONAL

Fig. 3. Ejemplo de nodos dual.

1 . 4 . 1 . ESPACIAMIENTO DE LOS NOWS DUAL.

El objetivo de esta sección es proporcionar una herramienta para

establecer el espaciamiento de los nodos dual para los diferentes

arreglos bajo el esquema de señales de flujo gráfico.

Partiendo de la figura 3 se pueden identificar 5 arreglos de nodos

(en forma vertical) y para referirnos a cada uno de ellos se usará la

variable "l", en donde la columna de la parte izquierda es el arreglo

15

Page 18: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

1 = O, el segundo el arreglo 1 = 1. etc.

Ahora, con el fin de proporcionar el espaciamiento entre los nodos

dual inicialmente se hacen las siguientes observaciones: del par de

nodos dual para el segundo arreglo ( 1 = 11, por decir x l ( 0 ) y x1(8 ) se

percibe que están separados por n = 8 = 16/2 = N/2 muestras, para un

par de nodos dual en el tercer arreglo ( 1 = 21, por decir x 2 ( 8 ) y x ( 1 2 ) están separados por n = 4 = 16/22 = N/2 muestras y de manera

similar, para el cuarto arreglo ( 1 = 3) los pares de nodos x 3 ( 4 ) y x ( 6 ) están separados por n = 2 = 16/2 = N/2l, finalmente para el

arreglo n = 4 ( 1 = 3 ) el par de nodos, por decir x ( 8 ) y x 4 ( 9 ) están

separados por n = 1 =16/2

1 1

1

2

3

3

4 4 = N/2l.

Generalizando estos resultados, se observa que el espaciamiento

entre nodos dual para cualquiera de los arreglos 1 está dada por N/2 . Así, si se considera un nodo particular xl(n) su nodo dual es

x1 (n+N/2* 1 , esta propiedad permite identificar fácilmente un par de

nodos dual.

1

Para el ejemplo considerado ( N = 1 6 ) : N = 2' con 7 = 4, se puede

obtener el siguiente conjunto de pares duales para: 1 = 1 , 2 , 3 y 4:

x ( O ) = x ( O + 16/22) = ~ ~ ( 4 ) 1 1 2 2

x ( O ) = x (O + 16/21 = ~ ~ ( 8 )

x ( 1 ) = x ( 1 + 16/41 = x 2 ( 5 ) 1 1 2 2

x ( 1 ) = x ( 1 + 16/21 = ~ ~ ( 9 )

x (21 = x 2 ( 6 ) 2

x 1 ( 2 ) = X1(1O)

x ( 3 ) = X l ( l l ) x 2 ( 3 ) = x 2 ( 7 ) 1

x ( 4 ) = x1(12) x ( 8 ) = x2(12) 1 2

x ( 9 ) = x2(13) 2

x (5) = ~ ~ ( 1 3 ) 1

x (10) = x2(14) x1 (6 ) = x1(14) 2

x (7 ) = x (15) x (11 ) = x2(15) 1 1 2

Page 19: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

x3(0) = x3(0 + 16/23) = ~ ~ ( 2 )

x ( 1 ) = x 3 ( l + 16/81 = x3(3)

x3 (4 ) = x3(6)

3

x ( 5 ) = x3(7) 3

x (8) = x3(10) 3

x ( 9 ) = x p 3

x (12) = ~ ~ ( 1 4 )

x (13) = x3(15)

3

3

x4(0) = x (O + 16/24) = x 4 ( l ) 4

x4(2) = x4(l + 16/16) x4 (3 )

x4 (4 ) = x4(5)

x4 (6 ) = x4(7)

x ( 8 ) = x4(9) 4

X 4 ( 1 O ) = x 4 ( l l )

x4(12) = x4(13)

x (14) = x4(15) 4

1.4.2 EVALUACION DE NODOS DUAL.

Esta sección permite observar que un par de nodos dual requiere para

su evaluación de s ó l o una multiplicación compleja y 2 sumas complejas.

Inicialmente considere el nodo x ( 8 ) y su dual ~ ~ ( 1 2 ) . ilustrado en la

figura 3. Los caminos de transmisión que fluyen desde el nodo x (12)

al arreglo 1 = 2 se ven afectados por W y W cuyos resultados son

los nodos x2(8) y x 2 ( 1 2 ) , respectivamente, como l o muestran las

siguientes ecuaciones:

2

1 4 12

4 x 2 ( 8 ) = x2(12) W + otro término ( 1 . 2 9 a )

x 2 ( i 2 ) = x 1 ( i 2 ) + otro término (1 .29b)

4 Ahora, si el factor principal en un nodo es Up (ejemplo W 1 , entonces

, donde n = 12 el factor principal en su nodo dual es WP+N/2(ejernplo W

161, pero debido a que Up = - (ejemplo 12 - 8 4 -

e w4 = e -jn 4 = - wI6; por i o tanto w4 = - se '16 - '16 '16 -

4 -J (2TI/16)8

'16 16

17

Page 20: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

observa que se requiere sólo una multiplicación en la evaluación de un par de nodos dual, de aquí que para cualquier par de nodos dual su cálculo está dado por el par de ecuaciones:

x (n) = x (n) + wP x (n + 1 1-1 1-1

1-1 xl(n + N/2l) = x (n) - Wp x

1-1

N/2I ) (1.30a)

n + N/2') (1.30b)

A continuación se presentan las ideas principales que deberá observar

la lógica de un algoritmo computacional para calcular los pares de

nodos dual. Se parte de que se sabe que el dual de cualquier nodo en

el arreglo 1 está ubicado después de N/2 valores de muestra del mismo

arreglo al evaluar éste en forma ascendente, es decir iniciando con el

nodo n = O. Como el espaciamiento es de N/2 muestras se concluye que 1 un algoritmo debe "saltar" N/2l nodos una vez que ha calculado N/2

muestras y así sucesivamente hasta terminar de evaluar todo el

arreglo, esto se ilustra en la figura 4 al considerar el arreglo 1 = 2

e iniciar con el nodo n = O, donde el nodo dual está localizado en n =

1

1

N/2L = 1614 = 4. De igual manera se procede en forma ascendente en

este arreglo, hasta llegar al nodo 3, ya que el nodo dual está

espaciado 4 valores hacia abajo (2 = 4 ) . 2

Una vez obtenidos los primeros 4 puntos de este arreglo (n = O, 1, 2

y 3) se entra a un conjunto de nodos previamente evaluados, los cuales son los nodos duales de los nodos n = O , 1, 2 y 3. Por consiguiente es

necesario "saltar" sobre los nodos n = 4, 5, 6 y 7, y continuar con el

nodo n = 8 hasta el nodo 11 siguiendo la convención original.

En general, si se trabaja de arriba hacia abajo en el arreglo 1,

desde el punto de vista matemático deben calcularse las

ecuaciones establecidas por (1.30a) y (1.30b) para los primeros N/2 nodos, a continuación se salta los N/2l nodos consecutivos y así

sucesivamente dejando de saltar cuando se llega al nodo cuyo índice sea mayor que N - 1 (N-1 = 1 5 ) .

1

18

Page 21: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

Por el momento las ecuaciones (1.30a) y (1.30b) no pueden ser

evaluadas totalmente ya que falta por determinar el termino Up, el

cual será tema de la próxima sección.

ARREGLO DE DATOS

F i g . 4. Ejemplo de nodos a ser saltados cuando se calcula la señal de flujo.

19

Page 22: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

1.5 DETERMINACION DE LOS TERMINOS Up.

Hasta este punto se han definido las propiedades de cada arreglo con

la excepción del valor de p de las ecuaciones (1.30). A continuación

se proporciona la lógica para encontrar este valor.

El valor de p se determina por el siguiente procedimiento:

1.- Escribir el índice n en forma binaria con a bits, donde n es el nodo a calcularse.

2 . - Desplazar este número binario a - 1 bits hacia la derecha e introducir ceros en la posición del bit de lado izquierdo.

3.- Invertir el orden de los bits. Este número de los bits

invertidos es el término p.

Con el fin de ilustrar este proceso, considere el nodo x ( 8 ) de la

figura 4 con a = 4, n = 8 y 1 = 3. E l primer paso en el procedimiento

es escribir n en forma binaria: 1000, el segundo paso es desplazar

este número binario hacia la derecha a - 1 = 4 - 3 = 1 bit

introduciendo un cero: 0100. Por último se invierte el orden de los

bits produciendo 0010 o en forma decimal 2, y el valor de p es

entonces 2 .

3

Ahora, es necesario implantar un proceso para las operaciones de la

inversión de los bits. Se sabe que un número binario, por decir algo

a a a a puede escribirse en base 10 como se muestra a

continuación: 3 2 1 0

a x z 3 + a 2 x z 2 + a x2' + a x2O (1.31) 3 1 O

mientras que el número deseado con los bits invertidos se describe como :

a x z 3 + a x 2 ' + a x z l + a x2O ( 1 . 3 2 ) O 1 2 3

20

.

Page 23: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

Al comparar (1.31) y (1.32) se observa que si se describe una técnica para determinar l o s bits: a a a a entonces se ha definido la

3’ 2’ 1’ o* operación de la inversión de los bits.

Inicialmente se supone que M es un número binario igual a: a a a a 3 2 1 0 ’ se divide M por 2, se trunca y se multiplica el resultado por 2. Es

[ a3 a2 al a. - 2 ( a3 a2 al 1 I , si el bit a es decir, se calcula

cero, ésta diferencia será cero ya que un número binario es par si su

bit menos significativo es cero y al dividir por dos y multiplicar por

dos no se altera el valor de M, además el dividir por 2 un número binario implica un corrimiento a la derecha introduciendo un cero en

el bit más significativo y multiplicar por 2 implica un corrimiento

hacia la izquierda introduciendo un cero en el bit menos

significativo. Si el bit a es uno (un número binario es impar si su

bit menos significativo es uno), el truncamiento cambia el valor de M y la expresión de la diferencia anterior será uno. Lo anterior se

puede ver como la diferencia de: un número M y el número M dividido entre 2, truncado su valor fraccionario y multiplicado por 2.

O

O

Obsérvese que por medio de esta técnica se puede determinar si el bit

a es O ó 1. Por ejemplo, sea: a a a a = 1000, en base 10 equivale O 3 2 1 0 a 8 , se divide entre 2 (resulta 41, se trunca la parte fraccionaria

(resulta 4), se multiplica por dos (resulta 8 ) y se realiza la

diferencia (resulta O); con lo cual a = O. Ahora sea: a a a a =

1001, en base 10 equivale a 9, al dividir por dos (resulta 4.51, al

truncar la parte fraccionaria (resulta 41, al multiplicar por dos

(resulta 8 ) y al diferenciar resulta diferente de cero (9-8 < > O),

con lo cual a = 1.

o 3 2 1 0

O

Se puede identificar el bit a de manera similar a partir del valor:

a a a donde la ecuación de diferencia es [ a a a - 2 ( a3 a2 1 I , 3 2 1 3 2 1 y si la diferencia es cero entonces a = O, de lo contrario a = 1. Los

bits a y a se determinan en forma similar.

1

1 1

2 3

Este proceso será la base en la ejecución de la rutina del programa

encargado de la inversión de los bits que será estudiada posteriormente.

21

Page 24: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

1 . 6 . REACOMOW DE LA TRF.

Antes de pasar al desarrollo del algoritmo computacional, el paso

final de la TRF es el reacomodo de los resultados del vector al

vector XJk). Recuerde que de manera general el proceso de reacomodo A

- del vector X k ) es escribir k en forma binaria e invertir este número -L binar io.

2

3

4

5

6

7

a

9

10

11

12

13

X4(0010)

x4(001 I)

x,(OlOO)

~ ~ ( 0 1 0 1 )

x4(Oí IO)

x4(Of 11)

X4(1000)

x4( 1 o01 )

~ ~ ( 1 0 1 0 )

~ ~ ( 1 0 1 I)

x4( 1 100)

x4( i 101)

x(oo1 o)

x(oo11)

x(o100)

x(0101)

x(o11 o)

x(o111)

x( 1000)

x( 1001)

x( 1 Of o)

x( lOl1)

x( 1 100)

x( l lO1)

Fig. 5. Ejemplo de la operación de inversión de bits, N = 16

22

Page 25: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

Se muestra en la figura 5 el resultado de esta operación de inversión

de los bits, en donde se han intercambiado los términos x4(n) y x4(i),

e i es el valor entero obtenido al invertir los bits del valor entero

n.

De lo anterior se observa que aquí se presenta una situación similar

como en el concepto de nodos dual en relación a la inversión de bits,

para el acomodo del arreglo de salida. Si se procede hacia abajo en el arreglo, intercambiando x(n) con el adecuado x(i), se puede

eventualmente encontrar un nodo que ha sido previamente intercambiado.

Por ejemplo, en la figura 5, el nodo n = O permanece en la misma

posición, los n = 1, 2 y 3 son intercambiados por l o s nodos 8 , 4 y 12 respectivamente. Continuando, el próximo nodo a ser considerado es el

nodo 4, pero este nodo fué previamente intercambiado con el nodo 2.

Una forma para eliminar la posibilidad de considerar un nodo que ha

sido previamente intercambiado, es verificando si i (el valor entero

obtenido por la inversión de l o s bits del valor entero n) es menor que

n, si esto ocurre, implica que el nodo ha sido intercambiado por una

operación previa. Con esta verificación es posible asegurar un proceso

de reacomodo correcto.

1.7. OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF.

Usando las propiedades discutidas en la señal de flujo gráfico de la

TRF, se puede realizar fácilmente un diagrama de flujo con el fin de

programar una computadora. Se inicia al proporcionar un resumen de las

secciones estudiadas.

Primero se calcula el arreglo 1 = 1, iniciando en el nodo n = O y

trabajando en forma ascendente del arreglo. Para cada nodo n se

calcula el par de ecuaciones (1 .30) donde p está determinado por la

descripción estudiada. Procediendo en forma ascendente, hasta llegar

al conjunto de nodos que hay que "saltar", y una vez que se "saltan"

los nodos apropiados se continúa con el proceso hasta llegar al final

23

Page 26: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

del arreglo. Continuando con el cálculo de los arreglos restantes,

usando el mismo procedimiento. Finalmente se ordena el Último arreglo

para obtener el resultado deseado.

Los pasos anteriores se pueden esquematizar en la figura 6 la cual

representa el diagrama de flujo del algoritmo de la TRF, y la

descripción se proporciona a continuación.

El bloque 1 establece los datos de entrada necesarios, donde el

vector x (k) se asume complejo. Sin embargo si x (k) es real entonces

la parte imaginaria se establece a cero. El número de muestras N debe

satisfacer la relación N = 2 , donde a es un entero.

O O

7

En el bloque 2 se inicializan algunos parámetros del programa, estos

son: el parámetro "1" es el número del arreglo considerado, iniciando

con el arreglo 1 = 1; el espaciamiento entre los nodos dual está

asignado por el parámetro N2, de aquí que para el arreglo 1 = 1, N2 =

N/2 y se inicaliza como tal; el parámetro NU1 es el número de bits que deben recorrerse hacia la derecha, necesarios para determinar el valor

de p y es inicializado a 7 - 1 ( 7 - 1 ) ; finalmente el índice k del

arreglo se inicializa a k = O, así se trabaja de arriba hacia abajo en

el arreglo.

El bloque 3 se encarga de verificar si el arreglo 1 a calcularse es mayor que 7 ( 7 indicador del total de arreglos), si esto ocurre el

programa "salta" al bloque 13 acomodando los resultados obtenidos al

invertir los bits, de lo contrario (todos los arreglos no han sido

calculados) se va al bloque 4.

El bloque 4 inicializa un contador I el cual se encargará de

monitorear el número de pares de nodos dual que han sido considerados.

Recuerde que es necesario "saltar" ciertos nodos con el fin de

asegurar que los nodos previamente considerados no sean encontrados

una segunda vez.

Los bloques 5 y 6 se encargan de evaluar las ecuaciones:

24

Page 27: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

x (n) = x (n) + Wp x (n + N / 2 l ) 1 1-1 1-1

xl(n + N / 2 1 ) = x (n) - Up x (n + N / 2 l ) 1-1 1-1

donde se puede observar que debido a que k y 1 se han inicializado a O y a 1, respectivamente, el nodo considerado inicialmente es el primer nodo del primer arreglo. Para determinar el factor p para este nodo,

se debe primero recorrer el número binario k a la derecha a - 1 bits y para realizarlo se calcula el valor entero de k/2'-l = k/2NU1 y se

establece el resultado M como se muestra en el bloque 5. De acuerdo al

procedimiento para determinar p, se pueden invertir los bits de M al representarlo por 7 = NU bits.

La función IBR(M) referida en el bloque 5, es una rutina o función

especial que se encarga de invertir los bits; esta rutina sera

descrita posteriormente.

1 El bloque 6 calcula las ecuaciones x (n) y x (n + N / 2 1 . En principio se obtiene el producto Up x (k + N / n 2 ) y se asigna el resultado a

una localidad de memoria temporal, a continuación se suma y se resta

este término de acuerdo a las ecuaciones x (n) y x ( n + N / 2 1 y el

1 1 1

1-1

1

1 1

- resultado es la salida del nodo dual.

Con el fin de calcular el próximo nodo del arreglo, k se incrementa

en 1, como se muestra en el bloque 7 y para evitar que se evalúe un

nodo dual previamente considerado, se verifica en el bloque 8 si el

contador I es igual a N 2 . Por ejemplo para el arreglo 1, el número de

nodos que deben ser considerados sin "saltar" es igual a N / 2 = N 2 , de

aquí que el bloque 8 determina esta condición. Si I no es igual a N 2 ,

se continúa con el nodo siguiente y se incrementa el contador I como

lo muestra el bloque 9. Bajo esta Última condición (I Q N 2 ) los

bloques 5 y 6 son repetidos para el nuevo valor de k (k fue incrementado en el bloque 7). Ahora si se cumple que I = N 2 en el

bloque 8, entonces se ha llegado a un nodo previamente considerado,

por consiguiente se salta N 2 nodos estableciendo a k = k + N 2

(mostrado en el bloque lo), y como k se incrementó en 1 en el bloque 7

25

Page 28: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

es suficiente incrementar k por N2 para "saltar" los nodos previamente

cons iderados.

INlClO

DATOS: x@). k = O. 1.. . . , N - 1

N - 2'. 7 es un entero

N2-N/2 NU1 - 7 - 1

K-O I

-T M -Valor entero de (U P - IBR(M)

o

K - K + l

1 I- N2 7 K - K i N Z K < N - 1 ?

I1 - I 1 + 1 I B R - 2 * IBR (M - 2- J2)

Fig. 6. Diagrama de f l u j o del programa de la TRF.

26

Page 29: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

Por otra parte, antes de ejecutar los cálculos indicados en los

bloques 5 y 6 para el nuevo nodo k = k + N2, se debe primero verificar

si este valor de k no excede el tamaño del arreglo, como lo muestra el

bloque 11. Si k es menor que N-1 (k tiene l o s límites de O a N-1) se

inicializa el contador I a 1 en el bloque 4 y se repite el bloque 5 y el bloque 6. Sin embargo, si k > N-1 en el bloque 11, se debe evaluar

el arreglo que sigue. De aquí que es necesario inicializar las

variables mostradas en el bloque 12: 1 se incrementa a 1, el nuevo

espaciamiento N2 es simplemente N2/2 (espaciamiento es N/2 I , NU1 se decrementa por 1 ( N U 1 es igual a a - 11 y k se inicializa a cero.

1

Posteriormente se verifica en el bloque 3 si todos los arreglos han

sido calculados; si es así, se procede a reacomodar el resultado

final. Esta operación es realizada por l o s bloques del 13 al 17.

El bloque 13 se encarga de invertir los bits del valor entero k para

obtener el valor entero i, esto con ayuda de la función IBR(kI la cual

es la que realiza propiamente la operación de inversión de los bits.

Para reacomodar la TRF simplemente se intercambia x(k1 por x(i) y esta manipulación es realizada por las operaciones indicadas en el

bloque 15. No obstante antes de entrar al bloque 15 es necesario

determinar, como se muestra en el bloque 14, si i es menor o igual a

k, con el fin de evitar que se alteren l o s nodos reacomodados

previamente.

El bloque 16 verifica en que momento todos los nodos han sido

reacomodados y en el bloque 17 simplemente se incrementa la variable k con el fin de considerar el siguiente nodo x ( k ) .

En el bloque 18 se describe la lógica de la función IBR(k), inversora de los bits, en la que se ha implementado el procedimiento relacionado

a la inversión de l o s bits.

Finalmente es necesario considerar a las variables X(kI y W’como

números complejos al implantar el diagrama de flujo en un lenguaje.

27

Page 30: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

2 . LISTADO DEL PROGRAMA.

Las señales en muchas ocasiones son procesadas con el fin de

modificarlas de tal forma que facilite su interpretación, este

procesamiento se lleva a cabo en la mayoria de los casos mediante el

uso del algoritmo de la Transformada Rapida de Fourier. A continuación se proporciona el listado del programa del procedimiento de la

Transformada Rápida de Fourier que en secciones anteriores fue

estudiado, en su culminación, como un diagrama de flujo:

PROCEDURE FFT(VAR n,nu : Integer; VAR xrea1,ximag : arreglo);

{ Encuentra la Transformada Rapida de Fourier }

VAR 1, { Parametro del arreglo 1 aconsiderar } k, { indice del arreglo (arriba hacia abajo) } waste, { Auxiliar de la potencia de W 1 PP { Valor potenica de W ( W a la p ) } N2 9 { Espaciamiento de los nodos duales } Nul, { Corrimiento a la derecha en el

i, { Contador que monitorea el numero de calculo del parametro p }

pares de nodos duales que han sido considerados }

kl,kln2 : Integer; { Variables auxiliares } arg, { Argumento del seno y del coseno } c, s, { Valores del coseno y del seno } trea1,timag : Real; { Variables temporales en la

transferencia de la parte real y parte imaginaria }

FUNCTION ibitr(j,nu : Integer): Integer;

Funcion inversora de bits }

VAR ji, i, j2, { Variables auxiliares 1 temp : Integer; { Variable temporal }

BEGIN { Ibitr } j1: =j. temp: =O; FOR i:=l TO nu DO BEG IN j2:=jl DIV 2; temp: =temp*2+( jl-2*j2); ji: =j2 END ;

28

-- .

Page 31: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

ibitr: =temp END: 4 Ibitr }

BEGIN { FFT } n2:=n DIV 2; nul: =nu-1; k: =O; 1: =o; REPEAT

1: =1+1; REPEAT

i: =O; REPEAT

i: =i+l; waste: =k DIV TRUNC(potencia(2,nul) 1; p: =ibitr(waste,nu); arg: =2*pi*p/n; c: =COS(arg); s: =SIN(arg); kl: =k+l; kln2: =kl+n2; treal:=xreal[kln2l*c+ximag[kln2l*s; timag:=ximag[kln2l*c-xreal[kln2l*s; xreal[kln2l:=xreal[kll-treal; ximag[kln2l:=ximag[kll-timag; xreal[kll:=xreal[kll+treal;

- ximag [ kl I : =ximag [ kl 1 + t imag; k: =k+l

Until (i=n2); k: =k+n2;

Until (k>=n); k: =O; nul: =nul-1; n2:=n2 DIV 2;

Until (l=nu); k: =O; REPEAT k: =k+l; i: =ibitr(k-l,nu)+l; IF (i>k) THEN BEGIN

treal: =xreal [kl ; timag: =ximag[kl; xreal[kl:=xreal[il; ximag [kl : =ximag [ i I ; xreal [ i 1 : =treal; ximag [ i 1 : =timag END

Until (k=n) END; { FFT }

Con el fin de tener una mejor idea de las caracteríscticas de este

procedimiento a continuación se proporciona una descripción del

29

Page 32: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

--

procedimiento FFT y del procedimiento IBITR, en la que se puede

identificar la forma de declararla, los parámetros usados, las

variables utilizadas y su relación cruzada:

FFT Declaración procedure FFT(VAR n,nu : Integer;

VAR xrea1,ximag : arreglo);

Forma de usarse FFT(n, nu, xreal, ximag);

Parámetros n : (Entero) Número total de puntos a pro- cesar. Correspondiente a la resolución del diseño.

nu : (Entero) Valor potencia de dos. xreal: (Arreglo vectorial real) Variable del

vector que controla la parte real de la función discretizada al entrar, y controla la parte real del espectro en frecuencia al salir.

ximag: (Arreglo vectorial real) Variable del vector- que controla la parte imaginaria de la función discretizada al entrar, y controla la parte imaginaria del espectro en frecuencia al salir.

Variables

k

waste :

P

N2

NU 1

i

kl, kln2: arg

C S

treal :

timag :

(Entero) Parámetro del arreglo "1" a considerar. (Entero) Indice del arreglo (de arri- ba hacia abajo). (Entero) Auxiliar de la potencia de W. (Entero) Valor de la potenica de W ( W a la p). (Entero) Espaciamiento de los nodos dua 1 es. (Entero) Corrimiento a la derecha en el cálculo del parámetro p. (Entero) Contador que controla el

número de pares de nodos duales que han sido considerados. (Enteros) Variables auxiliares.

coseno. (Real) Valor del coseno. (Real) Valor del seno. (Real) Variable temporal en la trans- ferencia de la parte real. (Real) Variable temporal en la trans- ferencia de la parte imaginaria.

(Real) Argumento del seno y del

30

Page 33: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

Descripción Realiza el cálculo de la Transformada Rápida de Fourier.

Restricciones N i nguna . Relación Cruzada Potencia.

Ibitr.

Ibitr

Declaración function ibitr( j,nu : Integer): Integer;

Forma de usarse ibi tr ( j , nu ;

Parámetros

Var i ab 1 es

j : (Entero) Bit a invertir. nu : (Entero) Valor potencia de dos

ji, i, j2 : (Enteros) Variables auxiliares. temp : (Entero) Variable temporal.

Descripción Función inversora de bits.

Restricciones Ninguna .

Además, para que el lector le sea fácil implementar el algoritmo y

obtener las gráficas que le permita visualizar el comportamiento

espectral de una cierta señal, en este programa se incluye la lógica

que debe seguir un programa que incluye l a s librerías de Turbo

Graphics para la visualización por pantalla.

Inicialmente se proporciona un listado de programa de un algoritmo

que genera una señal de prueba, el cual se encuentra en el apéndice A, y así asegurar al lector que su programa esta funcionando

problema. Este programa genera un archivo de datos el cual

en el directorio de trabajo con el nombre: 'PRUEBA.DAT' el

ser leído por el programa que realiza de Transformada

sin ningún

se almacena

cual deberá Rápida de

31

Page 34: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

Fourier

En el apéndice B se proporciona el listado del programa que se

encarga de obtener la Transformada Rápida de Fourier. En este se puede

distinguir: el proceso de lectura, el del procesamiento (obtención de

la TRF) y el proceso de graficación.

El proceso de lectura le permite leer un archivo de datos, cuyas características principales es: debe ser un archivo texto, debe ser

potencia de dos (esto se justifica en el estudio de la sección

anterior). En caso de no ser el número de datos leídos potencia de

dos, la lógica del programa le indica al usuario de esta discrepancia

y selecciona el máximo número de puntos que sea potencia de dos y

realiza el procesado de l o s datos.

Finalmente el usuario podrá observar en su pantalla las gráficas de

la señal introducida, la gráfica de la parte real, la parte

imaginaria, la magnitud y la fase de la Transformada Discreta de

Fourier. Estas se encuentran desplegadas en el apéndice C.

32

Page 35: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

A P E N D I C E A

Page 36: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

Program generador-senal;

uses Crt, Dos, Printer;

TYPE arreglo = ARRAYfl.. 10241 OF Real; cadena = STñING[80];

VAR fnci : arreglo; tecla : Char; nn, j : Integer; archivo : cadena; arch : Text; datos : Real;

PROCEDURE Genera-Coeficientes(VAR j : Integer);

VAR k : Integer; arg, valor : Real; wt : Real;

{ Argumento de los calculos } { Valor de la funcion o de la ventana }

BEGIN { GENERA COEFICIENTES } for k : = 1 to 64 do

fncilkl : = 0.0; wt: =O. 5*pi; for k : = 1 to 6 do BEG IN arg: =wt* (k-1); IF (arg=O)

THEN fnci [7-k1: =O. 5 ELSE BEGIN

valor: =O. 5*(SIN(arg)/arg); fnci [7-kl: =valor; fnci [5+k]: =valor; END

END ;

BEG IN for k : = 1 to 11 do

valor : = fnci [12-k]; fnci[lZ-k] : = 0.0; fnci[26+kl : = valor END;

j : = 64 END; { GENERA COEFICIENTES }

34

Page 37: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

BEGIN ClrScr; Genera-Coeficientes(nn1; GotoXY(10.10); Write(’1nicia a crear el archivo de datos en el directorio actual’); archivo : = ’ prueba. dat’ ; ASSIGN(arch, archivo); Rewrite (arch); for j : = 1 to nn do BEG I N datos : = fncifjl ; wri teln(arch, datos ) END;

Close(arch); GotoXY(10,15); Write ( ’ El nombre del archivo generado es : PRUEBA. DAT’ ; GotoXY( 10.20); Write(’Cua1quier tecla para continuar’ 1; Repeat

tecla : = ReadKey; Until (tecla <> ” 1 END.

35

Page 38: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

A P E N D I C E B

Page 39: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

Program Trans-FourRapida;

{$I Float. Inc}

uses Crt, Dos, Printer, GDriver, Gkernel, GWindow, GShell;

CONST rnax-real = 1E16; max-long = 80; BELL = 7; lmax = 1024;

TYPE arreglo = ARRAY[l..lmaxI OF Real; cadena = STRINGImax-long];

VAR n, nu : Integer; preal, pimag, mag, fase, fnci : arreglo; adios : Boolean;

{ Representa la potencia de 2 ( 2 a la nu) }

FUNCTION Potencia(base : Real; exponente : Real) : Real;

BEGIN { Potencia }

END; { Potencia } potencia:=EXP(exponente*LN(base))

PROCEDURE Lectura(VAR i : Integer; VAR adios : Boolean);

VAR archivo : cadena; arch : Text; datos : Real; pot : Integer; tecla : Char;

FUNCTION Pot-Dos (m : Integer) : Boolean;

{ Entrega un valor verdadero si el numero m es potencia de dos y define el valor de NU para la FFT }

BEGIN { Pot-Dos } nu: =O; WHILE (m>i) and ((m MOD 2)=01 DO

BEG IN

37

Page 40: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

nu: =SUCC(nuI; m:=m DIV 2 END;

THEN po tdos : =true ELSE pot-dos: =false

IF (m=i)

END; { Pot-Dos }

BEGIN { Lectura 1 C1 rScr ; adios : = false; GotoXY(20,lOI; Write(’Cua1 es el nombre de su archivo : ’ I ; Readln(archiv0); ASSIGN(arch, archivo 1 ; {$I-} Reset (arch) {$I+}; IF (IOresult<>O)

THEN BEGIN gotoxy(20,15);

gotoxy(20,20); Write ( ’ No se encuentra ese archivo’ ;

Writeln(’ A D I O S ’ 1 ; writeln; wri teln; adios : = true END

ELSE BEG IN i: =O; While (not Eof(arch1) Do BEG IN i: =i+l; Readln(arch, datos); fnci[il .:= datos END ;

Close(arch1; IF (not Pot-dos(iII THEN BEG IN gotoxy(20,15);

gotoxy(20,17); Writeln(’E1 valor de i es : ’,i);

Write(’Su archivo no es potencia de dos’); gotoxy(20,18); Write(’se tomara el numero maximo de potencia de dos’); gotoxy(20,20); Write(’Presione cualquier tecla para continuar’ I ; Repeat

tecla : = Readkey; Until (tecla <> ” 1; pot: =TRUNC(ln(i)/ln(2)); i: =TRUNC(potencia(2,pot)I

END END

END: { Lectura }

Page 41: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

PROCEDURE FFT(VAR n,nu : Integer; VAR xrea1,ximag : arreglo);

{ Encuentra la Transformada Rapida de Fourier }

VAR 1, { Parametro del arreglo 1 aconsiderar } k. { indice del arreglo (arriba hacia abajo) 1 was te, { Auxiliar de la potencia de W } P. { Valor potenica de W (W a la p } N2, { Espaciamiento de los nodos duales } Nul, { Corrimiento a la derecha en el

i, Contador que monitorea el numero de calculo del parametro p }

pares de nodos duales que han sido considerados 1

kl,kln2 : Integer; { Variables auxiliares } arg, { Argumento del seno y del coseno } c, s> { Valores del coseno y del seno } trea1,timag : Real; { Variables temporales en la

transferencia de la parte real y parte imaginaria }

FUNCTION ibitr(j,nu : Integer): Integer;

{ Funcion inversora de bits }

VAR j1, i,j2, { Variables auxiliares } temp : Integer; { Variable temporal }

BEGIN Ibitr- } jl: =j; temp: =O; FOR i: =1 TO nu DO BEG IN j2:=jl DIV 2; temp:=temp*2+(jl-2*j2); jl: =j2

ibitr: =temp END; { Ibitr }

END;

BEGIN { FFT } n2:=n DIV 2; nul: =nu-1; k: =O; 1: =o; REPEAT

1: =1+1; REPEAT

i: =O; REPEAT

39

Page 42: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

i: =i+l; waste: =k DIV TRUNC(potencia(2, nul) 1 ; p: =ibitr(waste, nu); arg: =2*pi*p/n; c: =COS(arg); s: =SIN(arg); kl: =k+l; kln2: =kl+n2; treal:=xreal[kln21*c+ximag[kln2l*s; timag:=ximag[kln2l*c-xreal[kln2l*s; xreal[kln2l:=xreal[kll-treal; ximag[kln2l:=ximag[kll-timag; xreal[kll:=xreal[kll+treal; ximag [ kl I : =ximag [ kl I + t imag; k: =k+l

Until (i=n2); k: =k+n2;

Until (k>=n); k: =O; nul: =nul-1; n2:=n2 DIV 2;

Until (l=nu); k: =O; REPEAT k: =k+l; i : = i b i t r ( k- 1 , nu 1 + 1 ; IF (i>k) -

THEN BEGIN treal: =xreal [kl; timag: =ximag[kl; xreal[kl:=xreal[il; ximag[kl:=ximag[il; xreal[il: =treal; ximag[il: =timag END

Until (k=n) END; { FFT }

PROCEDURE Calculo-FFT(n : Integer);

VAR i : Integer;

BEGIN { Calculo-FFT } preal: =fnci; FOR i:=l TO n DO

FFT(n, nu, preal, pimag) pimag [ i 1 : =O;

END; { Calculo-FFT }

PROCEDURE TipoMagnitud;

40

Page 43: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

i : Integer; maxmag : Real;

BEGIN {TipoMagnitud) maxmag: =O; i: =O; REPEAT

i: =i+l; mag[il:=SQRT(SQR(preal[il )+SQR(pimag[il)); IF (mag[i]>maxmag)

THEN maxmag: =mag [ i I ; UNTIL ( i = n 1 END; {TipoMagnitud}

PROCEDURE TipoFase;

VAR i : Integer; aux : Real;

BEGIN { Tipo-Fase 1 i: =O; REPEAT

i: =i+l; IF ( preal[iI=O) . THEN fase [ i I : =90

ELSE BEGIN aux:=pimag[il/preal[il; fase[i]:=90*ARCTAN(aux)/(pi/2) END

UNTIL (i=n) END; { Tipo-Fase 1

PROCEDURE Graf icador (vec : Arreglo; Tip-graf: integer 1 ;

VAR tecla : Char; xmax, xmin, ymax, ymin : Real; A : PLOTARRAY;

PROCEDURE Eje-Grafica;

PROCEDURE Lim-Sup-Inf;

VAR ir : Integer; maxy, miny : Real;

BEGIN {Lim-Sup-Inf1 xmin: =O;

Page 44: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

xmax: =n-1; maxy: =O; miny: =maxy; ir: =O; REPEAT

ir: =ir+l; IF (vec[irl > maxy)

IF (vec[irl < miny)

A [ ir, 1 I : =xmax* ( ir- 1 1 /n; A [ ir, 21 : =vec [ ir 1

THEN maxy:=vec[irl;

THEN miny: =vec [ ir 1 ;

Until (ir = n); ymin: =1.075*miny; ymax: =1.075*maxy END; {Lim-Sup-Inf }

PROCEDURE Rotulos (Tip-Graf: Integer) ;

VAR cabeza: cadena;

BEGIN Rotulos } Clearscreen; SetForeGroundColor(7); Def ineWindow.( 1, O, O, XMAXGLB, YMAXGLB) ; Def ineWorld ( 1, O, 1000,1000, O ) ; SelectWorld(1); SelectWindow(1); CASE Tip-Graf OF

1: cabeza: =’ FUNCION DISCRETIZADA’ ; 2 : cabeza: =’ PARTE REAL’ ; 3: cabeza: =’ PARTE IMAGINARIA’ ; 4: cabeza: =’MAGNITUD’ ; 5: cabeza: =’ FASE’

END ; DefineHeader(1,cabeza); SetHeaderOn; SetHeaderToTop; DrawBorder END; { Rotulos }

BEGIN {Eje-Grafica} Lim-Sup-Inf; Rotulos(Tip-graf); Definewindow (2,1,45, XMAXGLB, YMAXGLB-2) ; Defineworld (2, xmin, ymin, xmax, ymax); SelectWorld(2); SelectWindow(2); Drawaxis(8,8, O, O, O, O, 20,20, true); DrawPolygon(A, 1, n, O, O, -1) END; {Eje-Graf ica}

BEGIN { Graficador 1

42

Page 45: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

Ini tGraphic; E jeGraf ica; Repeat

tecla : = Readkey; Until (tecla <> "1 ; LeaveGraphic

END; { Graficador 1

BEGIN Lectura(n, adios); IF (not adios)

THEN BEGIN CalculoFFT(n1; Graf icador ( f nci , 1 ; Graficador(preal,2); Graf icador (pimag, 3) ; TipoMagnitud; Ti po-Fase ; Graf icador (mag, 4 ) ; Graficador(fase, 5 )

END END.

43

Page 46: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

A P E N D I C E C

44

Page 47: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

1.6%

3.33.

3.20.

2.1%

1.76

1.03.

0.31.

.0.12.

.l.l+,

0 . 0 0 0.6

I

I

, , , I , , I , , , , , , , , , , I

45

Page 48: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

3 1 .0

0 . 9

O . 7

O .6

0 . 5

0 . 3

0 . 1

0 . 1

0 . 0 0 . 0 0

0 . 6 6 1 I: !

10 ' *

1 . 3 . 2 2

4 . 3 7

.7 .52 1-

46

Page 49: UNlVERSl DAD AUTON OM A METRO PO LlTANA148.206.53.84/tesiuami/uamr0205.pdf · OBTENCION DEL DIAGRAMA DE FLUJO DE LA TRF LISTADO DEL PROGRAMA. APENDICE A ... multiplicación de las

B I B L I O G R A F I A

1.- E. Oran Brigham, The Fast Fourier Transform, Prentice Hall

Englewood Cliffs, N. J., 1975.

2.- A. V. Oppenheim and W. S. Schafer, Digital Signal Processing,

Prentice Hall, Englewood Cliffs, N. J., 1975.

3.a L.R. Rabiner and B.Gold, Theory and Application of Digital Signal

Processing, Prentice Hall, Englewood Cliffs, N. J., 1975.

4.- A. Antoniou, Digital Filters: Analysis and Design, Mc Graw Hill, New York, 1979.

5 . - David J. DeFatta, Joseph G. Lucas and William S Hodgkiss, Digital Signal Processing : A System Design Apprach, John Wiley & Sons,

1988.

6. - William D. Stanley, Digital Signal Processing, Prentice Hall

Company , 1975.

7.- Fred J. Taylor, Digital Filter Design Handbook, Marcel Dekker,

Inc. , 1983.

8.- B. Gold and C. M. Rader, Digital Processing of Signals, Mc Graw - Hill, New York, 1969.

9.- Programs for Digital Signal Processing , Edited by the Digital

Processing Commitee, IEEE Acoustics, Speech, and Signal

Processing Society, John Wiley & Sons, Inc., 1979.

10- Digital Signal Processing, Edited by Lawrence R. Rabiner and

Charles M. Rader, IEEE PRESS, Board, New York, 1972.

47