📄 fft.txt
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "dsplib.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
//---------------------------------------------
//计算FFT 函数:
//输入:
// x:输入数据
// n:FFT点数
// isign:标志,1:IFFT,-1:FFT
//输出:x
void SPfft(complex *x,int n,int isign)
{
/* Local variables */
int i, l, m, mr,tmp_int;
complex t, tmp_complex, tmp;
float pisign;
double expx;
pisign = isign * PI;
mr = 0;
for (m = 1 ; m < n ; ++m) {
l = n;
l /= 2;
while (mr + l >= n){
l /= 2;
}
mr = mr % l + l;
if (mr > m)
{
t.r = x[m].r;
t.i = x[m].i;
x[m].r = x[mr].r;
x[m].i = x[mr].i;
x[mr].r = t.r;
x[mr].i = t.i;
} \
}
l = 1;
while (l < n)
{
for (m = 0 ; m < l ; ++m)
{
tmp_int = l * 2;
for (i = m ; tmp_int < 0 ? i >= (n - 1) : i < n ; i += tmp_int)
{
tmp.r = 0.0;
tmp.i = m * pisign / l;
expx = exp((double) tmp.r);
tmp_complex.r = (float) expx * cos((double) tmp.i);
tmp_complex.i = (float) expx * sin((double) tmp.i);
t.r = x[i + l].r * tmp_complex.r - x[i + l].i * tmp_complex.i;
t.i = x[i + l].r * tmp_complex.i + x[i + l].i * tmp_complex.r;
x[i + l].r = x[i].r - t.r;
x[i + l].i = x[i].i - t.i;
x[i].r = x[i].r + t.r;
x[i].i = x[i].i + t.i;
}
}
l *= 2;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -