资源简介
编程实现基于时间抽取的基2的FFT算法
要求:实现任意长度的基于时间抽取的基2的FFT算法,统计算法运行所需时间,与DFT的直接实现进行运行时间对比,与现存的FFT算法运行时间进行对比。
代码片段和文件信息
/**********************************
名称:编程实现基于时间抽取的基2的FFT算法
要求:实现任意长度的基于时间抽取的基2的FFT算法,统计算法运行所需时间,与DFT的直接实现进行运行时间对比,与现存的FFT算法运行时间进行对比。
作者:朱振兴
QQ:1094296051
/**********************************/
#include
#include
#include
#include
#include
#define PI 3.1415926535
struct finger//---------------------复数结构体
{
float shi;
float xu;
};
struct finger jiafa(struct finger astruct finger b)//---------------------复数加法
{
struct finger result;
result.shi = a.shi + b.shi;
result.xu = a.xu + b.xu;
return result;
}
struct finger jianfa(struct finger astruct finger b)//--------------------复数减法
{
struct finger result;
result.shi = a.shi - b.shi;
result.xu = a.xu - b.xu;
return result;
}
struct finger chengfa(struct finger astruct finger b)//-------------------复数乘法
{
struct finger result;
result.shi = (a.shi * b.shi) - (a.xu * b.xu);
result.xu = (a.shi * b.xu) + (a.xu * b.shi);
return result;
}
int daoxu(int aint n)//-------------------倒序实现
{
int ibresult=0;
for(i=0;i {
b = a & 1;
a = a>>1;
result = result<<1;
result = result | b;
}
return result;
}
struct finger xuanzhuanyinzi(int Nint P)//-------------------旋转因子计算
{
struct finger wn;
wn.shi = cos(2*PI/N*P);
wn.xu = -sin(2*PI/N*P);
return wn;
}
void diexingyunsuan(struct finger *pstruct finger *qstruct finger wn)//-------------------蝶形运算
{
struct finger res1res2;
struct finger temp;
temp = chengfa(*qwn);
res1 = jiafa(*ptemp);
res2 = jianfa(*ptemp);
*q = res2;
*p = res1;
}
int log_2(int b)//-------------------log2的对数运算
{
float result1cd;
int result2;
c = log10(b);
d = log10(2);
result1 = c/d;
result2 = ceil(result1);
return result2;
}
void view1()//---------------------界面1
{
printf(“\n“);
printf(“\t\t\t---------------------\n“);
printf(“\t\t\t FFT算法实现 \n“);
printf(“\t\t\t---------------------\n“);
printf(“\n“);
}
void view2()//---------------------界面2
{
printf(“\n“);
printf(“\t\t\t---------------------\n“);
printf(“\t\t\t DFT算法实现 \n“);
printf(“\t\t\t---------------------\n“);
printf(“\n“);
}
/****************************************
DFT算法
****************************************/
void DFT()
{
struct finger *A*x;
struct finger c;
time_t c_startc_end;
int ijkLM=0N=0;
view2();
printf(“注意:L 代表为2的L次方 \n“);
printf(“\nPlease input the size of L : “);//输入序列的大小
scanf(“%d“&L);
N=pow(2L);
printf(“\n“);
M=log_2(N);
A = (struct finger*)malloc(N*sizeof(struct finger));//---------------------设置动态数组
if(!A)
{
printf(“Building the first array error!“);
exit(1);
}
else
printf(“Building the first array successful!“);
x = (struct finger*)malloc(N*sizeof(struct finger));
if(!x)
{
printf(“Building the first a
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-11-24 00:44 FFT&DFT\
目录 0 2018-11-24 00:44 FFT&DFT\Debug\
文件 241720 2018-11-24 00:44 FFT&DFT\Debug\FFT&DFT.exe
文件 262000 2018-11-24 00:44 FFT&DFT\Debug\FFT&DFT.ilk
文件 20964 2018-11-24 00:43 FFT&DFT\Debug\FFT&DFT.obj
文件 212968 2018-11-24 00:43 FFT&DFT\Debug\FFT&DFT.pch
文件 467968 2018-11-24 00:44 FFT&DFT\Debug\FFT&DFT.pdb
文件 33792 2018-11-24 00:44 FFT&DFT\Debug\vc60.idb
文件 45056 2018-11-24 00:43 FFT&DFT\Debug\vc60.pdb
文件 8082 2018-11-24 00:43 FFT&DFT\FFT&DFT.c
文件 3413 2018-11-24 00:43 FFT&DFT\FFT&DFT.dsp
文件 522 2018-11-24 00:44 FFT&DFT\FFT&DFT.dsw
文件 33792 2018-11-24 00:44 FFT&DFT\FFT&DFT.ncb
文件 48640 2018-11-24 00:44 FFT&DFT\FFT&DFT.opt
文件 759 2018-11-24 00:44 FFT&DFT\FFT&DFT.plg
相关资源
- window c语言编写的多线程的Socket局域网
- IPMSG飞鸽传书源代码,linux-c语言,有
- C语言实现CFOP解魔方算法
- 快速傅里叶算法FFTc语言实现
- Linux下c语言实现对文本内容的三种输
- 贪吃蛇 C语言程序
- 汉诺塔C语言源程序
- 矩阵相乘c语言编程
- 数据结构c语言实现严蔚敏版
- C语言解决哲学家就餐问题
- 捷联惯性导航C语言实现
- DTW算法 C语言代码
- rsa加密解密算法C语言代码
- FFT 和IFFT基二的C语言和MATLAB实现
- 超级效率的FFT的代码(C语言)
- 灰度预测模型C语言源代码
- C语言实现二值图像连通区域标记,可
- SM2/SM3算法C语言实现
- 用C语言实现异质链表
- 消消乐游戏c语言代码
- at89c51单片机产生5KHZ方波c语言编程
- STM32系列单片机C语言编程语法指导
- 东北大学C语言课设—小金库
- C语言课设---汉诺塔程序代码
- c语言实现矩阵求逆程序
- Linux c语言多线程实现生产者/消费者问
- 航班信息管理系统C语言编写
- 图像分割和边缘检测完全C语言源代码
- C语言后台代码
- 基于蚁群算法的机器人路径规划C语言
评论
共有 条评论