傅立叶变换

来源:百度知道 编辑:UC知道 时间:2024/05/27 23:45:26
查阅了下其他资料,fft(x,n)中,x是个具有一定函数表达式的函数,我现在所采集到的信号是离散的,是个数组。请问如何将这些离散的数组构造出来一个函数来应用fft。或者有其他函数可以直接计算出离散时域信号的傅立叶变换吗?
十分感谢,比较急,又不懂,唉。。。。。

void CCalculate::RealFFT(double data[], int &n, int &isign)
{
//一个实数序列的离散傅里叶变换(单道分离法)
//将2N个点采样值分离成两个N个点的采样值函数,并利用对N个采样值的
//变换方法得到2N个采样值的变换结果。
int n2p3,i,i1,i2,i3,i4;
double theta,c1,c2,wpr,wpi,wr,wi,wrs,wis,h1r,h1i,h2r;
double h2i,wtemp,wri;
wri=0.0;
theta = 6.28318530717959 / 2.0 / n;
c1 = 0.5;
if (isign == 1)
{
c2 = -0.5;
FFT(data, n, 1);
}
else
{
c2 = 0.5;
theta = -theta;
}
wpr = -2.0 * sin(0.5 * theta) * sin(0.5 * theta);
wpi = sin(theta);
wr = 1.0 + wpr;
wi = wpi;
n2p3 = 2 * n + 3;
for (i = 2; i<=n / 2 + 1; i++)
{
i1 = 2 * i - 1;
i2 = i1 + 1;
i3 = n2p3 - i2;
i4 = i3 + 1;
wrs = float(wr);
wis = float(wi);
h1r = c1 * (data[i1] + data[i3]);
h1i = c1 * (data[i2