快速FFT变换源程序- #include <stdio.h>
- #include <math.h>
- typedef struct //定义复数结构体变量
- {
- double real;
- double imag;
- }complex;
- #define N 5
- #define PI 3.1514926535897932384626433832795028841971 //定义圆周率
- void c_plus(complex, complex, complex *); //复数加运算
- void c_sub(complex, complex, complex *); //复数减运算o
- void c_mul(complex, complex, complex *); //复数乘运算
- void Wn_i(int, int, complex *); //旋转因子
- int main()
- {
- complex f[N] = { 1, 2, 2, 3 };
- complex wn;
- Wn_i(8, 3, &wn);
- c_mul(f[0], wn, &f[2]);
- c_sub(f[1], f[2], &(f[3]));
- c_plus(f[1], f[2], &(f[4]));
- printf("f[%d]为:%lf + %lf \n", 2, f[2].real, f[2].imag);
- printf("f[%d]为:%lf + %lf \n", 3, f[3].real, f[3].imag);
- printf("f[%d]为:%lf + %lf \n", 4, f[4].real, f[4].imag);
- return 0;
- }
- void c_plus(complex a, complex b, complex *c) //复数加法
- {
- c->real = a.real + b.real;
- c->imag = a.imag + b.imag;
- }
- void c_sub(complex a, complex b, complex *c) //复数减法
- {
- c->real = a.real - b.real;
- c->imag = a.imag - b.imag;
- }
- void c_mul(complex a, complex b, complex *c) //复数乘法
- {
- c->real = a.real*b.real - a.imag*b.imag;
- c->imag = a.real*b.imag + a.imag*b.real;
- }
- void Wn_i(int n1, int i, complex *Wn) //定义旋转因子
- {
- Wn->real = cos(2 * PI*i / n1);
- Wn->imag = -sin(2 * PI*i / n1);
- }
复制代码
全部资料51hei下载地址:
fft.zip
(699 Bytes, 下载次数: 43)
|