DSP_fft
/* | the stride between the elements | as follows: | */ |
/* | x(n), x(n + s), x(n + 2*s), x(n | + 3*s). | */ |
/* |
|
| */ |
/* | These four inputs are used to calculate four outputs */ | ||
/* | as shown below: |
| */ |
/* |
|
| */ |
/* X(4k) = x(n) + x(n + N/4) + x(n | + N/2) + x(n + 3N/4) */ | ||
/* X(4k+1)= x(n) −jx(n + N/4) − x(n | + N/2) +jx(n + 3N/4) */ | ||
/* X(4k+2)= x(n) − x(n +N/4) + x(N | + N/2) − x(n + 3N/4) */ | ||
/* X(4k+3)= x(n) +jx(n + N/4) − x(n | + N/2) −jx(n + 3N/4) */ | ||
/* |
|
| */ |
/* These four partial results can be re−written to show | */ |
/* the underlying DIF structure similar to DSP_radix2 as */
/* follows: | */ |
/* | */ |
/* X(4k) = (x(n)+x(n + N/2)) + (x(n+N/4)+ x(n + 3N/4)) | */ |
/* X(4k+1)= (x(n)−x(n + N/2)) −j(x(n+N/4) − x(n + 3N/4)) */ /* x(4k+2)= (x(n)+x(n + N/2)) − (x(n+N/4)+ x(n + 3N/4)) */
/* X(4k+3)= (x(n)−x(n + N/2)) +j(x(n+N/4) − x(n + 3N/4)) */
/**/
/* which leads to the real and imaginary values as foll: */
/* |
|
|
|
| */ |
/* y0r = x0r + x2r + | x1r + | x3r | = | xh0 + xh20 | */ |
/* y0i = x0i + x2i + | x1i + | x3i | = | xh1 + xh21 | */ |
/* y1r = x0r − x2r + (x1i − | x3i) | = | xl0 + xl21 | */ | |
/* y1i = x0i − x2i − (x1r − | x3r) | = | xl1 − xl20 | */ | |
/* y2r = x0r + x2r − (x1r + | x3r) | = | xh0 − xh20 | */ | |
/* y2i = x0i + x2i − (x1i + | x3i | = | xh1 − xh21 | */ | |
/* y3r = x0r − x2r − (x1i − | x3i) | = | xl0 − xl21 | */ | |
/* y3i = x0i − x2i + (x1r − | x3r) | = | xl1 + xl20 | */ |
/* −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− */
xh0 | = x0r | + | x2r; |
xh1 | = x0i | + | x2i; |
xh20 = x1r | + | x3r; | |
xh21 = x1i | + | x3i; | |
xl0 | = x0r | − | x2r; |