我有一个有效的 FFT,但我的问题是如何将其转换为 IFFT?有人告诉我,IFFT 应该就像您使用的 FFT 一样。那么如何从 fft ic# 制作 ifft 呢?有人告诉我,应该只做一些改变才能得到结果。
我试着自己做,但我没有得到与我输入的相同的值......
所以我创建了一个值数组并将其放入 fft,然后放入 ifft,我无法获得与放入相同的值...
所以我认为我没有以正确的方式改变它。
这是我的 FFT:
public Complex[] FFT(Complex[] x )
{
int N2 = x.Length;
Complex[] X = new Complex[N2];
if (N2 == 1)
{
return x;
}
Complex[] odd = new Complex[N2 / 2];
Complex[] even = new Complex[N2 / 2];
Complex[] Y_Odd = new Complex[N2 / 2];
Complex[] Y_Even = new Complex[N2 / 2];
for (int t = 0; t < N2 / 2; t++)
{
even[t] = x[t * 2];
odd[t] = x[(t * 2) + 1];
}
Y_Even = FFT(even);
Y_Odd = FFT(odd);
Complex temp4;
for (int k = 0; k < (N2 / 2); k++)
{
temp4 = Complex1(k, N2);
X[k] = Y_Even[k] + (Y_Odd[k] * temp4);
X[k + (N2 / 2)] = Y_Even[k] - (Y_Odd[k] * temp4);
}
return X;
}
public Complex Complex1(int K, int N3)
{
Complex W = Complex.Pow((Complex.Exp(-1 * Complex.ImaginaryOne * (2.0 * Math.PI / N3))), K);
return W;
}