x[j+k+l]=down;
//down为蝶形单元右下方的值
}
}
}
}
void initW() //计算W的实现函数
{
int i;
W=(complex *)malloc(sizeof(complex) * size_x); /*申请size_x个复数W的空间(这部申请的空间有点多,实际上只要申请size_x/2个即可)*/
for(i=0;i<(size_x/2);i++) /*预先计算出size_x/2个W的值,存放,由于蝶形算法只需要前size_x/2个值即可*/
{
W[i].real=cos(2*PI/size_x*i); //计算W的实部
W[i].img=-1*sin(2*PI/size_x*i); //计算W的虚部
}
}
void change() //输入的码组码位倒置实现函数
{
complex temp;
unsigned short i=0,j=0,k=0;
double t;
for(i=0;i<size_x;i++)
{
k=i;
j=0;
t=(log(size_x)/log(2));
while((t--)>0)
{
j=j<<1;
j|=(k & 1);
k=k>>1;
}
if(j>i)
{
temp=x[i];
x[i]=x[j];
x[j]=temp;
}
}
}
void output() //输出结果实现函数 VC++的FFT快速傅里叶变换编程设计+流程图+源代码(15):http://www.youerw.com/jisuanji/lunwen_954.html