资源简介
用c语言实现的快速傅里叶算法,用了三个大循环,时域乱序输入频域自然序输出
代码片段和文件信息
// FFT.cpp : 此文件包含 “main“ 函数。程序执行将在此处开始并结束。
//
#include “pch.h“
#include
#include
#include
#define N 1000
/*定义复数类型*/
typedef struct {
double real;
double img;
}complex;
complex x[N] *W; /*输入序列变换核*/
int size_x = 0; /*输入序列的大小,在本程序中仅限2的次幂*/
double PI; /*圆周率*/
void fft(); /*快速傅里叶变换*/
void initW(); /*初始化变换核*/
void change(); /*变址*/
void add(complex complex complex *); /*复数加法*/
void mul(complex complex complex *); /*复数乘法*/
void sub(complex complex complex *); /*复数减法*/
void output();/*输出快速傅里叶变换的结果*/
int main()
{
int i; /*输出结果*/
system(“cls“);
PI = atan(1) * 4;
printf(“ 输出DIT方法实现的FFT结果\n“);
printf(“Please input the size of x:\n“);//输入序列的大小
scanf(“%d“ &size_x);
printf(“Please input the data in x[N]:\n“);//输入序列的实部和虚部
for (i = 0; i < size_x; i++)
{
printf(“请输入第%d个序列:“ i);
scanf(“%lf%lf“ &x[i].real &x[i].img);
}
printf(“输出倒序后的序列\n“);
initW();//调用变换核
fft();//调用快速傅里叶变换
printf(“输出FFT后的结果\n“);
output();//调用输出傅里叶变换结果函数
return 0;
}
/*快速傅里叶变换*/
void fft()
{
int i = 0 j = 0 k = 0 l = 0;
complex up down product;
change(); //调用变址函数
for (i = 0; i < log(size_x) / log(2); i++) /*一级蝶形运算 stage */
{
l = 1 << i;
for (j = 0; j < size_x; j += 2 * l) /*一组蝶形运算 group每个group的蝶形因子乘数不同*/
{
for (k = 0; k < l; k++) /*一个蝶形运算 每个group内的蝶形运算*/
{
mul(x[j + k + l] W[size_x*k / 2 / l] &product);
- 上一篇:操作系统生产者与消费者综合性实验北林
- 下一篇:C语言实现CFOP解魔方算法
相关资源
- FFT 和IFFT基二的C语言和MATLAB实现
- 超级效率的FFT的代码(C语言)
- DFT FFT 的C语言实现方法及程序
- NUFFT的matlab算法
- 用fft求互相关,速度更快,c语言实现
- FFT/IFFT变换C语言代码,包含浮点型C工
- 基于CCS和ICETEK5509实验箱FFT算法的C语言
- dsp图像处理二维傅里叶变换代码实现
- 图像处理 FFT快速傅里叶变换 C代码
- 最新快速傅里叶计算,C语言的FFT程序
- 快速傅立叶变换(FFT) C,C#源码
- C语言实现FFT(快速傅里叶变换)
- Visual C++实现的FFT变换
- c++编写的傅里叶变换FFT程序
- 实序列FFT算法的C语言实现
- 实序列快速傅里叶变换C语言源代码
- fftw使用说明
- 混合基快速傅里叶变换(2FFT+4fft)优
- C语言FFT
- 利用C语言实现FFT的程序方法
- MFC数字图像处理BMP格式读取 保存 DF
- TIDSP常用FFT算法研究与实现(C语言)
- 1024点FFT,查表法,已优化,C语言版,
- 快速傅里叶变换(fft\\ifft)C语言实现
- FFT滤波算法(FFT_CAL.c)
- FFT 快速傅里叶变换C++实现
- fft代码(不适用math库)
- 快速傅里叶变换FFT的C程序代码实现
- 用C++和matlab语言基二DIT FFT算法的实现
- FFT及IFFT的C语言实现
评论
共有 条评论