|
快速FFT變換源程序- #include <stdio.h>
- #include <math.h>
- typedef struct //定義復(fù)數(shù)結(jié)構(gòu)體變量
- {
- double real;
- double imag;
- }complex;
- #define N 5
- #define PI 3.1514926535897932384626433832795028841971 //定義圓周率
- void c_plus(complex, complex, complex *); //復(fù)數(shù)加運(yùn)算
- void c_sub(complex, complex, complex *); //復(fù)數(shù)減運(yùn)算o
- void c_mul(complex, complex, complex *); //復(fù)數(shù)乘運(yùn)算
- void Wn_i(int, int, complex *); //旋轉(zhuǎn)因子
- 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) //復(fù)數(shù)加法
- {
- c->real = a.real + b.real;
- c->imag = a.imag + b.imag;
- }
- void c_sub(complex a, complex b, complex *c) //復(fù)數(shù)減法
- {
- c->real = a.real - b.real;
- c->imag = a.imag - b.imag;
- }
- void c_mul(complex a, complex b, complex *c) //復(fù)數(shù)乘法
- {
- 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) //定義旋轉(zhuǎn)因子
- {
- Wn->real = cos(2 * PI*i / n1);
- Wn->imag = -sin(2 * PI*i / n1);
- }
復(fù)制代碼
全部資料51hei下載地址:
fft.zip
(699 Bytes, 下載次數(shù): 43)
2019-5-31 15:02 上傳
點(diǎn)擊文件名下載附件
源程序 下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|