T:=16; //16点信号变换
VARIABLE : x[T]=(15, 32, 9, 222, 118, 151, 5, 7, 56, 233, 56, 121, 235, 89, 98, 111);
VARIABLE : y[T*2]=0; //以复数方式返回结果,因此需要2倍容量
If IsLastbar Then
Begin
MFFFT(x,y,T,0);
w:2*3.14/T ;
ft1:=0;
for j=1 to T do begin
for i = 0 to T - 1 do begin
ft1:=ft1 + y[i * 2]*cos(i*w * j)/T + y[i * 2 + 1]*sin(i*w*j)/T;
end;
msgout(1,NUMTOSTR(ft1 / T,5));
end;
End
结果 :
2020/08/20 16:30:57 5.85846
2020/08/20 16:30:57 10.70716
2020/08/20 16:30:57 21.31674
2020/08/20 16:30:57 24.41963
2020/08/20 16:30:57 32.06571
2020/08/20 16:30:57 37.75488
2020/08/20 16:30:57 41.76019
2020/08/20 16:30:57 48.59118
2020/08/20 16:30:57 52.76111
2020/08/20 16:30:57 58.53273
2020/08/20 16:30:57 66.14874
2020/08/20 16:30:57 69.21599
2020/08/20 16:30:57 79.82165
2020/08/20 16:30:57 84.64967
2020/08/20 16:30:57 90.49294
2020/08/20 16:30:57 97.42217
不太对啊。