FFT&DFT 实现 编程实现基于时间抽取的基2的FFT算法 亲测有效 欢迎下载

编程实现基于时间抽取的基2的FFT算法
要求:实现任意长度的基于时间抽取的基2的FFT算法,统计算法运行所需时间,与DFT的直接实现进行运行时间对比,与现存的FFT算法运行时间进行对比。

运行结果

实现FFT算法
部分代码:

//-------------------倒序实现

int daoxu(int a,int n)
{
	int i,b,result=0;
	for(i=0;i<n;i++)
		{
		b = a & 1;    
		a = a>>1; 
		result = result<<1;            
		result = result | b; 	        			
		}
		return result;	
}

//-------------------旋转因子计算

struct finger xuanzhuanyinzi(int N,int P)
{	
	struct finger wn; 	
	wn.shi = cos(2*PI/N*P);		
	wn.xu = -sin(2*PI/N*P);
	return wn;		
} 

//-------------------蝶形运算

void diexingyunsuan(struct finger *p,struct finger *q,struct finger wn)
{
	struct finger res1,res2;
	struct finger temp;
   	 temp = chengfa(*q,wn);
	res1 = jiafa(*p,temp);
	res2 = jianfa(*p,temp);
	*q = res2;
	*p = res1;	
}

核心算法:

for(j=0;j<N;j++)
{
	A[j]=x[daoxu(j,M)];
}


	for(L=1;L<=M;L++)
	{
		 B = pow(2,L-1);			
		for(J=0;J<B;J++)
		{
			P=J*pow(2,M-L);
		    
			for(K=J;K<N;K+=pow(2,L))
				{	
					struct  finger Wn;
					Wn=xuanzhuanyinzi(N,P);						
					diexingyunsuan(&A[K],&A[K+B],Wn);						
				}
		}
		
	}

完整代码:https://download.csdn.net/download/qq_38305241/10804763

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值