Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Cap-4 FFT

Descargar como doc, pdf o txt
Descargar como doc, pdf o txt
Está en la página 1de 15

CAPITULO IV

OBJETIVOS:

• Replantear el mecanismo de cálculo de la Transformada (y Transformada Inversa)


Discreta de Fourier, de modo de hacer más eficiente su cómputo. Esto es, establecer
los fundamentos del algoritmo de la Transformada Rápida de Fourier (FFT).

• Elaborar un Diagrama de Flujo que permita un mecanizado racional del algoritmo


que sea lo más general posible. Pasando por el análisis, utilizando la teoría de
grafos, desde un ejemplo particular.

22 - LA TRANSFORMADA RAPIDA DE FOURIER

Considérese la Transformada Discreta de Fourier (DFT):

N 1
j . 2. π . n. k
X( n) x 0 ( k ) . exp n 0 .. N 1 (22-1)
N
k=0

donde se ha reemplazado k.T por k y n/N.T por n por conveniencia de notación.


Se percibe que la ecuación (22-1) describe el cómputo de N ecuaciones. Por ejemplo, si
N = 4 y si se hace:

j . 2. π
W exp (22-2)
N

la expresión (22.1) puede ser escrita como:

0 0 0 0
X( 0 ) x 0 ( 0 ) . W x 0 ( 1 ). W x 0 ( 2 ). W x 0 ( 3 ). W
0 1 2 3
X( 1 ) x 0 ( 0 ) . W x 0 ( 1 ). W x 0 ( 2 ). W x 0 ( 3 ). W (22-3)
0 2 4 6
X( 2 ) x 0 ( 0 ) . W x 0 ( 1 ). W x 0 ( 2 ). W x 0 ( 3 ). W
0 3 6 9
X( 3 ) x 0 ( 0 ) . W x 0 ( 1 ). W x 0 ( 2 ). W x 0 ( 3 ). W

Las ecuaciones anteriores pueden ser más fácilmente representadas en forma matricial:

0 0 0 0 x 0( 0)
X( 0 ) W W W W
0 1 2 3 x 0( 1)
X( 1 ) W W W W
. (22-4)
X( 2 ) 0 2 4 6 x 0( 2)
W W W W
X( 3 ) 0 3 6 9 x 0( 3)
W W W W

o más compactamente:
n . k. (22-5)
X( n) W x 0( k)
El examen de (22-4) revela que ya que W y posiblemente x0(k) sean complejas,
entonces son necesarias N2 multiplicaciones complejas y N.(N-1) adiciones para
realizar el cómputo matricial requerido.
La FFT debe su éxito al hecho que el algoritmo reduce el número de multiplicaciones y
adiciones requeridas en el cálculo de (22-4). Ahora se discutirá, a nivel intuitivo, como
se lleva a cabo esta reducción.

23 - DESARROLLO INTUITIVO

Para ilustrar el algoritmo FFT, es conveniente elegir el número de puntos muestras de


x0(k) de acuerdo a la relación N = 2γ , donde γ es un entero. Recuérdese que la
ecuación (22-4) resulta de la elección N = 4 = 2γ = 22 por lo tanto, se puede aplicar
la FFT al cómputo de (22-4).
El primer paso en el desarrollo del algoritmo FFT para este ejemplo es reescribir
(22.4) como:

1 1 1 1 x 0( 0)
X( 0 )
1 2 3 x 0( 1)
X( 1 ) 1 W W W
. (23-1)
X( 2 ) 2 0 2 x 0( 2)
1 W W W
X( 3 ) 3 2 1 x 0( 3)
1 W W W

La matriz de la ecuación (23-1) se deriva de la (22-4) usando la relación:

n.k mod( n . k , N )
W W

Recúerdese que mod(n.k,N) es el resto de la división entre n.k y N, por lo tanto si N=4,
n=2 y k=3 entonces:

6 2 (23-2)
W W

ya que

n.k 6 j . 2. π .
W W exp ( 6) exp( j . 3. π ) exp( j . π )
4
j .π .2. 2 mod( n . k , N )
exp ( 2) W W (23-3)
4

El segundo paso en el desarrollo es factorear la matriz cuadrada en (23-1) como sigue:


0 0 x 0( 0)
X( 0 ) 1 W 0 0 1 0 W 0
2 0 x 0( 1)
X( 2 ) 1 W 0 0 0 1 0 W
. . (23-4)
X( 1 ) 1 2 x 0( 2)
0 0 1 W 1 0 W 0
X( 3 ) 3 2 x 0( 3)
0 0 1 W 0 1 0 W

Se puede demostrar fácilmente que el producto de las dos matrices cuadradas da por
resultado la matriz cuadrada de (23-1). Con la excepción que las filas 1 y 2 han sido
intercambiadas. Note que el intercambio ha sido tomado en cuenta en (23-4)
reescribiendo el vector columna X(n), se denota el vector con la fila intercambiada por:
X( 0 )
X( 2 )
X d ( n) (23-5)
X( 1 )
X( 3 )

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


Habiendo aceptado el hecho que (23-4) es correcta, aunque los resultados están
"revueltos", se puede observar el número de multiplicaciones requeridas para computar
la ecuación. Hágase primero:

x 1( 0) 0 x 0( 0)
1 0 W 0
x 1( 1) 0 x 0( 1)
0 1 0 W
. (23-6)
x 1( 2) 2 x 0( 2)
1 0 W 0
x 1( 3) 2 x 0( 3)
0 1 0 W

Esto es, el vector columna x1(k) es igual al producto entre el vector y la matriz a la
derecha de la ecuación (23-4).
El elemento x1(0) es computado por una multiplicación compleja y una adición
compleja (W0 no es reducido a la unidad para desarrollar un resultado general).

0
x 1( 0) x 0( 0) W .x 0( 2) (23-7)

El elemento x1(1) está también determinado por una multiplicación compleja y una
adición. Sólo una adición compleja se realiza para computar x1(2). Esto deviene del
hecho que W0 = - W2.
Por lo tanto

2 0
x 1( 2) x 0( 0) W .x 0( 2) x 0( 0) W .x 0( 2) (23-8)
donde la multiplicación compleja W0.x0(2) ya ha sido computada en la determinación
de x1(0).
Por el mismo razonamiento, x1(3) es computada por sólo por una adición compleja y
ninguna multiplicación. El vector intermedio x1(k) es entonces determinado por cuatro
adiciones y dos multiplicaciones complejas.

x 2( 0) 0 x 1( 0)
X( 0 ) 1 W 0 0
x 2( 1) 2 x 1( 1)
X( 2 ) 1 W 0 0
. (23-9)
X( 1 ) x 2( 2) 1 x 1( 2)
0 0 1 W
X( 3 ) x 2( 3) 3 x 1( 3)
0 0 1 W

El elemento x2(0) está determinado por una multiplicación y una adición complejas:
0
x 2( 0) x 1( 0) W .x 1( 1) (23-10)

El elemento x2(1) está determinado por una adición compleja porque

W0 = - W2.

Con un razonamiento similar x2(2) está determinado por una multiplicación compleja y
una adición y x2(3) por sólo una adición.
Luego el cómputo de (23-4) requiere un total de cuatro multiplicaciones complejas y
ocho sumas complejas. En cambio el cómputo de (22-4) requiere dieciséis
multiplicaciones complejas y 12 sumas complejas.
Nótese que el proceso de factorización de la matriz introduce ceros en las matrices
factoreadas y, como resultado, reduce el número requerido de multiplicaciones. Para
este ejemplo, el proceso de factorización de matriz ha reducido el número requerido de
multiplicaciones en un factor de dos.
Ya que el tiempo de cómputo es fuertemente gobernado por el número de
multiplicaciones, se ve la razón de la eficiencia del algoritmo FFT.
Para N = 2γ el algoritmo FFT es entonces simplemente un proceso de factorización de
una matriz N x N en γ matrices (cada una de N x N) de modo tal que cada una de las
matrices factoreadas tenga una propiedad especial de minimizar el número de
multiplicaciones y adiciones.
Si se extiende el resultado del ejemplo previo, se nota que la FFT requiere N.γ /2 = 4
multiplicaciones complejas y N.γ = 8 adiciones complejas, mientras que el método
directo requiere N2 multiplicaciones complejas y N.(N-1) adiciones complejas.
Si se supone que el tiempo de cómputo es proporcional al número de multiplicaciones,
entonces la razón aproximada de tiempo de cómputo del método directo al de la FFT
está dado por:
2
N 2. N
γ γ (23-11)
N.
2
la cual para N =1024 = 210 es una reducción computacional de más de 200 a 1. La
Figura 23.1 ilustra la relación entre el número de multiplicaciones requeridas usando el
algoritmo FFT comparada con el número de multiplicaciones del método directo.

2 N . ln( N )
f dir( N ) N f fft( N ) N 2 .. 1024
2 ln( 2 )

El procedimiento de factorización introduce una discrepancia. Recuérdese que el


cómputo de (23-4) produce:

X d ( n) en vez de X( n)

este reordenamiento es inherente al proceso de factorización de la matriz y es un


problema menor debido a que es sencillo generalizar una técnica de "reordenamiento"
de Xd(n) para obtener X(n).
Reescribiendo Xd(n) reemplazando el argumento n con sus equivalentes binarios:

X( 0 ) X( 00)
X( 2 ) X( 10)
se convierte en (23-12)
X( 1 ) X( 01)
X( 3 ) X( 11)

Obsérvese que si los argumentos binarios de (18) son "flippeados" o "bit reversed" (es
decir, 10 se transforma en 01, etc.) En otras palabras, la imagen del espejo del binario.
entonces
X( 00) X( 00)
X( 10) X( 01)
X d ( n) X( n) (23-13)
X( 01) “flipea a” X( 10)
X( 11) X( 11)

Es sencillo desarrollar un resultado generalizado para "reordenar" la FFT.


Para N mayor que 4, es voluminoso describir el proceso de factorización de la matriz
análoga a (23-4). Por esta razón es conveniente interpretar a (23-4) de manera gráfica.
Usando esta formulación gráfica se puede describir en forma suficientemente
generalizada un diagrama de flujo para un programa de computadora.

24 - GRAFICO DE FLUJO DE SEÑAL

Se convertirá la expresión (23-4) en un gráfico de flujo como el de la Figura 24.1.

Como se muestra, se representa el vector de datos o arreglo x0(k) por una columna
vertical de nodos sobre la izquierda del gráfico. El segundo arreglo vertical de nodos es
el vector x1(k) computado en la ecuación (23-6), y el próximo arreglo corresponde el
vector x0(k) = Xd(n), ecuación (23-9). En general, se computarán γ arreglos, donde
N =2γ .
El flujo de señal se interpreta como sigue. A cada nudo ingresan dos líneas sólidas
representando "sendas de transmisión" desde nudos previos. Una senda transmite o trae
una cantidad desde un nodo en un arreglo, multiplica la cantidad por Wp, y saca el
resultado por el nudo del próximo arreglo. El factor Wp aparece cerca de la flecha de la
senda de transmisión, la ausencia de este factor implica que Wp = 1.
Los resultados entrantes en un nudo desde dos sendas de transmisión son combinados
aditivamente.
Para ilustrar la interpretación del gráfico de flujo de señal, considérese el nudo x1(2) de
la Figura 24.1.
De acuerdo a las reglas para interpretar el gráfico de flujo de señal:
2
x 1( 2) x 0( 0) W .x 0( 2) (24.1)

lo cual es simplemente la ecuación (23-8). Cada nodo del gráfico de flujo de señal es
expresado similarmente.
Este método es entonces un método conciso para representar los cómputos requeridos
en la matriz factorizada del algoritmo FFT (23-4). Cada columna del gráfico
corresponde a una matriz factorizada; se requieren γ arreglos verticales de N puntos
cada uno (N=2γ ). La utilización de esta presentación gráfica permite fácilmente
describir el proceso de factorización para N grande.
Se muestra en gráfico aparte (Figura 24.2) el diagrama de flujo de señal para N=16.
Con un diagrama de flujo de señal de este tamaño, es posible desarrollar las propiedades
concernientes al proceso de factorización de la matriz y así proveer de un marco para el
desarrollo de un diagrama de flujo para un programa de computadora que aplique el
algoritmo FFT.

25 - NODOS DUALES

La inspección de la Figura 24.2 revela que en cada arreglo siempre se pueden encontrar
dos nodos cuyas entradas de senda de transmisión provienen del mismo par de nudos en
el arreglo previo. Por ejemplo, los nodos x1(0) y x1(8) son computados en términos de
los nodos x0(0) y x0(8). Note que los nodos x0(0) y x0(8) no entran en el cómputo de
cualquier otro nodo. Se define a tales nodos como Par de Nodos Duales.
Ya que le cómputo de un par de nodos duales es independiente de los otros nodos, es
posible realizar cómputo "in-place". Para ilustrar, nótese de la Figura 24.2 que se
pueden calcular simultáneamente x1(0) y x1(8) en términos de x0(0) y x0(8) y retornar
el resultado a las locaciones de almacenamiento previamente ocupadas por x0(0) y
x0(8). Los requerimientos de almacenaje están entonces limitados solamente al arreglo
de datos x0(k). A medida que cada arreglo es computado, los resultados son retornados
a este arreglo.

26 - ESPACIAMIENTO DE NODOS DUALES

Se investigará ahora el espaciamiento (medido verticalmente en términos del indice k)


entre un par de nodos duales. La siguiente discusión se referirá a la Figura 24.2.
Primero, en el arreglo l=1, un par de nodos duales, como x1(0) y x1(8), están separados
por k= 8=N/2l=21.
En el arreglo l=2, un par de nodos duales, como x2(8) y x2(2), están separados por
k= 4=N/2l=22
Similarmente, un par de nodos duales, como x3(4) y x3(6), en el arreglo l=3, están
separados k= 2=N/2l=23.
Generalizando estos resultados, se observa que el espaciamiento entre nodos duales en
el arreglo I está dado por N/2I. Así, si se considera un nodo en particular xl(k), entonces
su nodo dual es xl(k+N/2). Esta propiedad permite fácilmente identificar un par de
nodos duales.
27 - COMPUTO DE NODO DUAL

El cómputo de un par de nodos duales requiere sólo una multiplicación compleja.


Para clarificar este punto, considérese el nodo x2(8) y su dual x2(12) ilustrados en la
Figura 24.2. Las sendas de transmisión provenientes del nodo x1(12) están
multiplicadas por W4 y W12 antes de ingresar en los nudos x2(8) y x2(12),
respectivamente.
Es importante notar que W4 = - W12 y que sólo una de las multiplicaciones requeridas
desde el mismo dato x1(12) está para ser multiplicada por estos factores. En general, si
el factor ponderante en el nodo es Wp = - Wp-N/2, sólo se requiere una multiplicación
en el cómputo de un par de nodos duales. El cómputo de cualquier par de nodos duales
está dado por el par de ecuaciones:

En el cómputo de un arreglo, normalmente se comienza con el nodo k=0 y


secuencialmente se trabaja hacia abajo del arreglo, computando el par de ecuaciones
(27-1). Como se estableció previamente, el dual de cualquier nodo en el l-ésimo arreglo
está siempre N/2l abajo en el arreglo. Ya que el espaciamiento es N/2, entonces se
deduce que se deben saltar después cada N/2l.
En la Figura 27.1, si se comienza con el nodo k=0, entonces de acuerdo a la discusión
previa, el nodo dual está localizado en k=N/2l =4 lo cual puede ser verificado por
inspección de la figura. Procediendo hacia abajo en este arreglo, se nota que el nodo
dual está siempre localizado 4 posiciones por debajo en el arreglo hasta alcanzar el nodo
4.
En este punto se ha ingresado un conjunto de nodos previamente encontrados; esto es,
estos nodos son los nodos duales k=0, 1 , 2 y 3. Es necesario saltar sobre los nodos k=4,
5, 6 y 7. Los nodos 8, 9, 10 y 11 siguen la convención original del nodo dual localizado
4 posiciones más abajo en el arreglo.
En general, si se trabaja desde la cima al fondo en el arreglo l, entonces se computará la
ecuación (27-1) para los primeros N/2l nodos, salta a los próximos N/2l, etc. Se
detienen los "saltos" cuando se alcanza un índice de nodo superior a N-1.

28 - DETERMINACION DE Wp

En base a las discusiones precedentes, se han definido las propiedades de cada arreglo
con la excepción de los valores de p en (27-1). El valor p se determina p con el
siguiente procedimiento:

(a) Se escribe el índice k en forma binaria con γ bits,


(b) Se desliza el número binario encintrado en a) γ - l bits a la derecha,
llenándose las nuevas posiciones de bit abiertas a la izquierda con ceros y
(c) Finalmente, se invierte el orden de los bits.

Este número "bit-reversed" es el p.


Para ilustrar el procedimiento, refiérase a la Figura 24.2 y considérese el nodo x3(8).
Ya que γ = 4, k =8 y l = 3, entonces k en binario es 1000. Se desplaza este número γ
- l = 4-3 = 1 lugares a la derecha llenando con ceros los lugares libres, resultando 0100.
Entonces se revierte el orden de los bits produciéndose 0010 o el entero 2. Finalmente,
el valor de p es 2.
Considérese ahora el procedimiento para implementar esta operación de reversión de
bits. Se sabe que un número binario, por ejemplo a4a3a2a1 puede ser escrito en base 10
como a4.23 + a3.22 + a2.21 + a1.20 . El número bit-reversed que se está intentando
describir está dado entonces por a1.23 + a2.22 + a3.21 + a4.20 . Si se encuentra una
técnica para determinar los bits binarios a4 , a3 , a2 , a1, entonces se habrá definido la
operación "bit-reversng".
Supóngase que M es un número binario igual a a4 a3 a2 a1. Divídase a M por 2,
trúnquese y multiplíquese el resultado truncado por 2. Luego compútese [a4a3a2a1 - 2
(a4a3a2)]. Si el bit a1 es cero, entonces esta diferencia será cero porque la división por
2, el truncamiento, y la subsecuente multiplicación por 2 no altera M.
Sin embargo, si el bit a1 es 1, el truncamiento cambia el valor de M y la expresión
diferencia de arriba no será cero. Se observa que con esta técnica se puede determinar si
el bit a1 es 0 ó 1.
Se puede verificar el bit a2 de una forma similar. La expresión diferencia apropiada es
[a4a3a2 - 2 (a4a3)]. Si esta diferencia es cero, entonces a2 es cero. Los bits a3 y a4 se
determinan de la misma manera. Este procedimiento formará las bases del desarrollo de
un programa de computadora para bit-reversing.

29 - REORDENAMIENTO DE LA FFT

El paso final en el cómputo de la FFT es "reordenar" los resultados análogos a la


ecuación (23-13). Recuérdese que el procedimiento para reordenar el vector Xd(n) es
para escribir n en binario y revertir o "flipear" el número binario. Se muestra en la
Figura 29.1 el resultado de la operación bit-reversing; los términos x4(k) y x4(i) han
sido simplemente intercambiados donde i es el entero obtenido por bit-reversing del
entero k.
Nótese que una situación similar al concepto de nodo dual existe cuando se "reordena"
el arreglo de salida. Si se procede hacia abajo en el arreglo, intercambiando x(k) con el
apropiado x(i), eventualmente se encuentra un nodo el cual ha sido previamente
intercambiado.
Por ejemplo, en la Figura 29.1, el nodo k=0 permanece en su ubicación, los nodos k=1,
2, y 3 son intercambiados con los nodos 8, 4 y 12 respectivamente. El próximo nodo a
ser considerado es el 4, pero este nodo fue previamente intercambiado con el 2.
Para eliminar la posibilidad de considerar un nodo que ha sido previamente
intercambiado, simplemente chequéese para ver si i (el entero obtenido por bit-reversing
de k) es menor que k. Si es así, esto implica que el nodo ha sido intercambiado por una
operación previa. Con este chequeo se puede asegurar un sencillo procedimiento de
reordenamiento.

30 - DIAGRAMA DE FLUJO PARA EL COMPUTO DE LA FFT

Usando las propiedades discutidas para el gráfico de flujo de señal de la FFT, se puede
fácilmente desarrollar una diagrama de flujo para programar el algoritmo sobre una
computadora digital. Se sabe de las discusiones previas que primero se computa el
arreglo l=1 arrancando por el nodo k=0 y trabajando hacia abajo en el arreglo. En cada
nodo k se computa el par de ecuaciones (27-1) donde p está determinado por el
procedimiento descripto. Se continúa hacia abajo en el arreglo computando el par de
ecuaciones (27-1) hasta alcanzar la región de los nodos que deben ser saltadas.
Se salta sobre los nodos apropiados y se continúa hasta haber computado el arreglo
entero. Luego se procede a computar los arreglos remanentes usando el mismo
procedimiento. Finalmente se reordena el arreglo final para obtener los resultados
deseados.
El diagrama de flujo de la Figura 30.1 sirve para elaborar un programa de computadora
que realiza el algoritmo FFT.
La caja 1 describe los datos de entrada necesarios. El vector de datos x0(k) se supone
que es un complejo y está indexado como k = 0, 1, ..., N-1. Si x0(k) es real., entonces la
parte imaginaria debería ser puesta a cero. El número de puntos muestra N debe
satisfacer la relación N = 2γ , con γ entero.
La inicialización de varios parámetros del programa se lleva a cabo en la caja 2. El
parámetro l es el número de arreglo que está siendo considerado. Se arranca con el
arreglo l=1.
El espaciamiento entre los nodos duales está dado por el parámetro N2; para el arreglo
l=1, N2=N/2 y es inicializado como tal. El parámetro NU1 es el desplazamiento a
derecha requerido en la determinación del valor de p en la ecuación (27-1); es
inicializado a γ -1. El índice k del arreglo es inicializado a k=0, así trabajará desde la
cima y progresará hacia abajo en el arreglo.
La caja 3 chequea para ver si el arreglo l a ser computado es mayor que γ . De ser así,
el programa bifurca a la caja 13 para reordenar los resultados computados por inversión
de bit. Si todos los arreglos no han sido computados, se procede a la caja 4.
La caja 4 pone un contador I =1. Este contador monitorea el número de pares de nodos
duales que han de ser considerados. Recuérdese que es necesario saltar ciertos nodos
con el objeto de asegurar que los nodos previamente considerados no son encontrados
una segunda vez. El contador I es el control para determinar cuándo el programa debe
saltar.
Las cajas 5 y 6 realizan el cómputo de la ecuación (27-1). Ya que K y l han sido
iniciializados a 0 y 1 respectivamente, el nodo inicial considerado es el primer nodo del
primer arreglo. Para determinar el factor p para este nodo, recuérdese que primero se
debe escalar el número binario k a la derecha γ -l bits. Para llevar a cabo esto, se
computa el valor entero de k/2γ − l = k/2NUl , y se pone el resultado en M como se
muestra en la caja 5. De acuerdo a los procedimientos para la determinación de p, se
debe bit-reverse M, donde M está representado por γ = NU bits.
La función IBR(M) denotada en la caja 5 es una rutina especial para reversión de bit y
será descripta más adelante.
La caja 6, es el cómputo de (27-1). Se computa el producto Wp.(x(k+N/2) y se asigna el
resultado a una locación de almacenamiento temporario. Después se suma y se resta este
término de acuerdo con (27-1). El resultado es la salida del nodo dual.
Luego se procede hacia abajo en el arreglo en el próximo nodo. Como se muestra en la
caja 7, k se incrementa en 1.
Para evitar el cómputo de un nodo dual que ha sido considerado previamente, se
chequea en la caja 8 para determinar si el contador I es igual a N/2. Para el arreglo 1, el
número de nodos que pueden ser considerados consecutivamente sin saltar es igual a
N/2=N2. La caja 8 determina esta condición. Si I no es igual a N2, entonces se procede
hacia abajo en el arreglo y se incrementa el contador I como se muestra en la caja 9.
Recuérdese que k ya ha sido incrementado en la caja 7.
Las cajas 5 y 6 son entonces repetidas para el nuevo valor de k.
Si I = N/2 en la caja 8, entonces se sabe que se ha alcanzado un nodo previamente
considerado. Luego se saltan N2 nodos poniendo k=k+N2. Debido a que k ya ha sido
incrementado en 1 en la caja 7, es suficiente saltar a los nodos previamente
considerados incrementando a k en N2.
Antes de realizar los cómputos indicados en las cajas 5 y 6 para el nuevo nodo k=k+N2,
se debe chequear primero para ver que no se haya excedido el tamaño del arreglo. Como
se muestra en la caja 11, si k es menor que N-1 (recuérdese que k está indexado desde 0
a N-1), se resetea el contador I a 1 en la caja 4 y se repiten las cajas 5 y 6.
Si k > N - 1 en la caja 11, se sabe que se debe proceder al próximo arreglo. Por lo tanto,
como se muestra en la caja 12, I es indexado por 1. El nuevo espaciamiento N2 es
simplemente N2/2 (recuérdese que el espaciamiento es N/2l, NU1 es decrementado en 1
(NU1 es igual a γ - l) y k es reseteado a 0. Luego se chequea la caja 3 para ver si todos
los arreglos han sido computados. Si es así, se procede a reordenar el resultado final.
Esta operación es realizada en las cajas 13 a 17.
La caja 13 revierte los bits del entero k para obtener el entero i. De nuevo, se usa la
función de reversión de bit IBR(k) la cual se explicará posteriormente. Recuérdese que
para reordenar la FFT simplemente de intercambian x(k) con x(i). Esta manipulación es
realizada por las operaciones indicadas en la caja 15. Sin embargo, antes de ingresar en
la caja 15 es necesario determinar, como se muestra en la caja 14, si i es menor que o
igual a k. Este paso es necesario para prohibir la alteración de los nodos previamente
reordenados.
La caja 16 determina cuándo todos los nodos han sido reordenados y la caja 17 es
simplemente un índice para k.
En la caja 18, se describe la lógica de la función de reversión de bit IBR(k). Se ha
implementado el procedimiento de reversión de bit descripto en un parágrafo anterior.
Cuando se procede a implementar el diagrama de flujo de la figura adjunta en un
programa de computadora, es necesario considerar las variables x(k) y Wp como
números complejos y ellas deben ser manejadas acordemente.
Figura 24.2
Figura 27.1
Figura 29.1
Figura 30.1

También podría gustarte