📄 新建 文本文档.txt
字号:
typedef struct tagComplex{
float Re; //复数的实部
float Im; //复数的虚部
}Complex;
int NV2=N/2;
int NM1=N-1;
int I,J,K=0;
Complex T;//用于中介的复数变量T
I=J=1;
while(I<=NM1)
{
if(I {
T=A[J-1];//将A[J-1]的内容和A[I-1]的内容互换,借助于中间变量T
A[J-1]=A[I-1];
A[I-1]=T;
}
K=NV2;
while(K {
J-=K;
K/=2;
}
J+=K;
I++;
}
Complex U,W,T;
int LE,LE1,I,J,IP;
int N=(int)pow(2,M);
//在此采用的是时间抽选奇偶分解方式,所以在参加运算前首先要对时间序列进行倒序
ReverseOrder(A,N);
int L=1;
while(L<=M)
{
LE=(int)pow(2,L);
LE1=LE/2;
U.Re=1.0f;
U.Im=0.0f;
W.Re=(float)cos(PI/(1.0*LE1));//计算W算子的值
W.Im=(float)-1.0*sin(PI/(1.0*LE1));
if(abs(W.Re)<1.0e-12)
W.Re=0.0f;
if(abs(W.Im)<1.0e-12)
W.Im=0.0f;
J=1;
while(J<=LE1)
{
I=J;
while(I<=N)
{
IP=I+LE1;
T.Re=(float)A[IP-1].Re*U.Re-A[IP-1].Im*U.Im;//计算复数运算A*U
T.Im=(float)A[IP-1].Re*U.Im+A[IP-1].Im*U.Re;
A[IP-1].Re=(float)A[I-1].Re-T.Re;//计算复数运算A-T
A[IP-1].Im=(float)A[I-1].Im-T.Im;
A[I-1].Re+=T.Re;//计算复数运算A+T
A[I-1].Im+=T.Im;
I+=LE;
}
float temp=U.Re;
U.Re=(float)U.Re*W.Re-U.Im*W.Im;//计算复数运算U*W
U.Im=(float)temp*W.Im+U.Im*W.Re;
J++;
}
L++;
}
频率(Hz) FFT求得 X(f) 误差
0.00 1.00006E-03 1.00000E-03 6.10352E-08
100.00 9.67593E-04 9.67531E-04 6.14332E-08
200.00 8.75203E-04 8.75150E-04 6.25092E-08
300.00 7.36904E-04 7.36849E-04 6.39413E-08
400.00 5.72852E-04 5.72787E-04 6.52926E-08
500.00 4.05351E-04 4.05285E-04 6.61362E-08
600.00 2.54638E-04 2.54572E-04 6.61847E-08
700.00 1.35403E-04 1.35338E-04 6.53870E-08
800.00 5.47602E-05 5.46963E-05 6.39612E-08
900.00 1.20072E-05 1.19448E-05 6.23453E-08
1000.00 6.10719E-08 1.17757E-32 6.53870E-08
1100.00 8.05672E-06 7.99613E-06 6.05985E-08
1200.00 2.43706E-05 2.43095E-05 6.11450E-08
1300.00 3.93026E-05 3.92400E-05 6.25965E-08
1400.00 4.68226E-05 4.67581E-05 6.45128E-08
1500.00 4.50979E-05 4.50316E-05 6.62543E-08
1600.00 3.58664E-05 3.57992E-05 6.71930E-08
1700.00 2.30135E-05 2.29466E-05 6.69399E-08
1800.00 1.08697E-05 1.08042E-05 6.55073E-08
1900.00 2.74348E-06 2.68014E-05 6.33390E-08
2000.00 6.11826E-08 1.17757E-32 6.11826E-08
2100.00 2.25379E-06 2.19395E-06 5.98376E-08
2200.00 7.29243E-06 7.23256E-06 5.98625E-08
2300.00 1.25974E-05 1.25360E-05 6.13467E-08
2400.00 1.59746E-05 1.59107E-05 6.38421E-08
2500.00 1.62779E-05 1.62114E-05 6.64915E-08
2600.00 1.36254E-05 1.35571E-05 6.83226E-08
2700.00 9.16539E-06 9.09679E-06 6.86075E-08
2800.00 4.53216E-06 4.46500E-06 6.71550E-08
2900.00 1.21487E-06 1.15945E-06 6.44190E-08
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -