⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fft.h

📁 一种混合高速的FFT算法 可以快速计算高阶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 + -