📄 exp7c.c
字号:
/*
exp7c.c - Example to test FFT and IFFT
*/
#include "icomplex.h"
#include "input7_i.dat" /* Experiment data file */
extern void fft(complex *, unsigned int, complex *, unsigned int);
extern void bit_rev(complex *, unsigned int);
extern void w_table(complex *, unsigned int);
#define N 128 /* Number of FFT points */
#define EXP 7 /* log2(N) */
#pragma DATA_SECTION(U, "fft_coef");
#pragma DATA_SECTION(X, "fft_in");
#pragma DATA_SECTION(spectrum, "fft_out");
#pragma DATA_SECTION(ltemp, "fft_temp");
#pragma DATA_SECTION(temp, "fft_temp");
#pragma CODE_SECTION(main, "fft_code");
complex X[N]; /* Declare input array */
complex U[N]; /* Twiddle e^(-j2pi/N) table */
complex temp;
lcomplex ltemp;
int spectrum[N];
int re1[N],im1[N],re2[N],im2[N];
void main()
{
unsigned int i,j;
/* Create Twiddle lookup table for FFT */
w_table(U, EXP);
/* Start FFT test */
j=0;
for (;;)
{
for (i=0; i<N; i++)
{
/* Generate input samples */
X[i].re = input7_i[j++];
X[i].im = 0;
/* Copy to reference buffer */
re1[i] = X[i].re;
im1[i] = X[i].im;
if (j==1664)
j=0;
}
/* Start FFT */
bit_rev(X,EXP); /* Arrange X[] in bit reversal order */
fft(X,EXP,U,1); /* Perform FFT */
/* Use spectrum to verify FFT result */
for (i=0; i<N; i++)
{
ltemp.re = (long)X[i].re*X[i].re;
ltemp.im = (long)X[i].im*X[i].im;
spectrum[i] = (int)((ltemp.re+ltemp.im)>>13);
}
/* Inverse FFT */
for (i=0; i<N; i++) /* Change the sign of imag part */
{
X[i].im = -X[i].im;
}
bit_rev(X,EXP); /* Arrange sample in bit reversal order */
fft(X,EXP,U,0); /* Perform IFFT */
/* Store IFFT output samples for verification */
for (i=0; i<N; i++)
{
re2[i] = X[i].re;
im2[i] = X[i].im;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -