📄 fft16x32.c
字号:
#define N 16
void radix4(int n, short x[], short wn[])
{
int n1, n2, ie, ia1, ia2, ia3;
int i0, i1, i2, i3, i, j, k;
short co1, co2, co3, si1, si2, si3;
short xt0, yt0, xt1, yt1, xt2, yt2;
short xh0, xh1, xh20, xh21, xl0, xl1,xl20,xl21;
n2 = n;
ie = 1;
for (k = n; k > 1; k >>= 2)
{
n1 = n2;
n2 >>= 2;
ia1 = 0;
for (j = 0; j < n2; j++)
{
ia2 = ia1 + ia1;
ia3 = ia2 + ia1;
co1 = wn[2 * ia1 ];
si1 = wn[2 * ia1 + 1];
co2 = wn[2 * ia2 ];
si2 = wn[2 * ia2 + 1];
co3 = wn[2 * ia3 ];
si3 = wn[2 * ia3 + 1];
ia1 = ia1 + ie;
for (i0 = j; i0< n; i0 += n1)
{
i1 = i0 + n2;
i2 = i1 + n2;
i3 = i2 + n2;
xh0 = x[2 * i0 ] + x[2 * i2 ];
xh1 = x[2 * i0 + 1] + x[2 * i2 + 1];
xl0 = x[2 * i0 ] - x[2 * i2 ];
xl1 = x[2 * i0 + 1] - x[2 * i2 + 1];
xh20 = x[2 * i1 ] + x[2 * i3 ];
xh21 = x[2 * i1 + 1] + x[2 * i3 + 1];
xl20 = x[2 * i1 ] - x[2 * i3 ];
xl21 = x[2 * i1 + 1] - x[2 * i3 + 1];
x[2 * i0 ] = xh0 + xh20;
x[2 * i0 + 1] = xh1 + xh21;
xt0 = xh0 - xh20;
yt0 = xh1 - xh21;
xt1 = xl0 + xl21;
yt2 = xl1 + xl20;
xt2 = xl0 - xl21;
yt1 = xl1 - xl20;
x[2 * i1 ] = (xt1 * co1 + yt1 * si1) >> 15;
x[2 * i1 + 1] = (yt1 * co1 - xt1 * si1) >> 15;
x[2 * i2 ] = (xt0 * co2 + yt0 * si2) >> 15;
x[2 * i2 + 1] = (yt0 * co2 - xt0 * si2) >> 15;
x[2 * i3 ] = (xt2 * co3 + yt2 * si3) >> 15;
x[2 * i3 + 1] = (yt2 * co3 - xt2 * si3) >> 15;
}
}
ie <<= 2;
}
}
int main(){
int i;
short x[2*N];
short w[2*N];
w[0]=0;
w[1]=32767;
w[2]=12540;
w[3]=30273;
w[4]=0;
w[5]=32767;
w[6]=23170;
w[7]=23170;
w[8]=0;
w[9]=32767;
w[10]=30273;
w[11]=12540;
w[12]=23170;
w[13]=23170;
w[14]=30273;
w[15]=12540;
w[16]=32767;
w[17]=0;
w[18]=23170;
w[19]=-23170;
w[20]=23170;
w[21]=-23170;
w[22]=-12540;
w[23]=-30273;
w[24]=-13108;
w[25]=-13108;
w[26]=0;
w[27]=32767;
w[28]=0;
w[29]=32767;
w[30]=0;
w[31]=32767;
for(i=0;i<2*N;i++)x[i]=i<<5;
radix4(N, x, w);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -