📄 fft.h
字号:
// FFT.h: interface for the FFT class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_FFT_H__CD593AE1_37AE_4519_9265_74AF04330DE7__INCLUDED_)
#define AFX_FFT_H__CD593AE1_37AE_4519_9265_74AF04330DE7__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class FFT
{
//类的公共变量,一些预设参数
public:
double c3_1, c3_2, u5, c5_1, c5_2, c5_3, c5_4, c5_5, c8;
//类的private变量
private:
double xRe[maxIndex]; //输入序列实部
double xIm[maxIndex]; //输入序列虚部
double yRe[maxIndex]; //输出序列实部
double yIm[maxIndex]; //输出序列虚部
int length; //FFT序列长度
int radixLen, radices[maxFactorCount]; //length的因式分解因数
int fact[maxFactorCount], factLen; //length的因式分解结果
int groupOffset,dataOffset,blockOffset,adr;
int groupNo,dataNo,blockNo,twNo;
double omega, tw_re,tw_im;
double twiddleRe[maxPrimeFactor], twiddleIm[maxPrimeFactor],
trigRe[maxPrimeFactor], trigIm[maxPrimeFactor],
zRe[maxPrimeFactor], zIm[maxPrimeFactor];
double vRe[maxPrimeFactorDiv2], vIm[maxPrimeFactorDiv2];
double wRe[maxPrimeFactorDiv2], wIm[maxPrimeFactorDiv2];
public:
//构造和析构
FFT();
FFT(int len, double inRe[], double inIm[]);
virtual ~FFT();
//private参数操作
void setX(double inRe[], double inIm[]);
void getY(double outRe[], double outIm[]);
void setLength(int len);
int getLength(void);
void setRadices(int rLen, int r[]);
//FFT计算
void fft(void); //2、3、5...primMax的混合基FFT
void fft4(double xRe[], double xIm[]);
void fft5(double xRe[], double xIm[]);
void fft8(void);
void fft10(void);
void fftodd(int radix);
//FFT计算功能函数
void factorize(void); //混合因式分解
void transTableSetup(int sofar[], int actual[], int remain[]);
void permute(int remain[]);
void twiddleTransf(int sofarRadix, int radix, int remainRadix);
void initTrig(int radix);
double leak();
void outputX();
void outputY();
};
#endif // !defined(AFX_FFT_H__CD593AE1_37AE_4519_9265_74AF04330DE7__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -