DFT,IDFT,FFT,IFFT算法的C++实现

DFT,FFT的算法原理见:https://zh.wikipedia.org/wiki/%E5%BF%AB%E9%80%9F%E5%82%85%E9%87%8C%E5%8F%B6%E5%8F%98%E6%8D%A2

 

#include 
#include 
#include 
#include 
#define eps 1e-6 
#define PI 3.14159265354
typedef std::complex complex_t;
using namespace std;
 
//旋转因子的计算 
complex_t W(int k,int n,int N){
	return complex_t(cos(2*PI*k*n/N),-sin(2*PI*k*n/N));
}
 
//格式化 零 
complex_t format(complex_t &c){
	if(fabs(c.real()) &x_n,vector &X_k){
	X_k.clear();
	int N=x_n.size();
	for(int k=0;k &X_k,vector &x_n){
	x_n.clear();
	int N=X_k.size();
	for(int n=0;n x_n(N);
	vector X_k(N);
	for(int i=0;i>=1;
	}
	return n;
}
 
 
int reverse_bit(int n,int len){//bit反转 
	int tmp=0;
	while(len--){
		tmp+=((n&1)<>=1;
	}
	return tmp;
 
}
 
//序数重排 
void resort(vector &x_n,int N){
	vector v(x_n);
	int len=bitlen(N);
	for(int i=0;i &x_n){
	int N=x_n.size();
	int r=bitlen(N);
	
	vector W(N);
 
	//预先计算旋转因子 
	for(int i=0;i &x_n){
	int N=x_n.size();
	int r=bitlen(N);
	
	vector W(N);
 
	//预先计算旋转因子 
	for(int i=0;i x_n;
	complex_t c(0,0);
	for(int i=0;i


运行结果与Python的scipy库中的fft算法运行结果对比,基本验证了该算法的正确性:

DFT,IDFT,FFT,IFFT算法的C++实现_第1张图片

DFT,IDFT,FFT,IFFT算法的C++实现_第2张图片

你可能感兴趣的:(程序设计)