fft.h

来自「一种混合高速的FFT算法 可以快速计算高阶FFT」· C头文件 代码 · 共 78 行

H
78
字号
// 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 + =
减小字号Ctrl + -
显示快捷键?