基于Cooley-Tukey的FFT算法的递归C实现

来源:Linux认证    发布时间:2012-11-10    Linux认证视频    评论

  信号处理课程需要用到FFT变换,于是找资料写了一个C程序,网上的资料不少,但是感觉没什么大用,基本上大部分是MATLAB写的,在 Introduction to Algorithm的第三十章有一个算法伪代码图,小心wn这个是每一次都变的而不是一直是2pi/N,我犯了这个错误,一直不大对,后来在 cprogramming上的以为朋友指出了这个错误,之后犯的错误是结果一直都是不对称,找来找去不知道错在哪里,第二天才发现关键错在

  re_w = re_w*W_RE - im_w*W_IM; im_w = im_w*W_RE + re_w*W_IM;

  应该替换为

  save_re = re_w;save_im = im_w;re_w = save_re*W_RE(len_x) - save_im*W_IM(len_x);im_w = save_im*W_RE(len_x) + save_re*W_IM(len_x);

  好了,贴上我的代码,大家有什么问题欢迎讨论

  #include<stdio.h>

  #include<math.h>

  #define PI 3.1415926

  #define N 16 //需要处理的离散信号的总个数

  #define W_RE(n) (cos(-2.0*PI/n))

  #define W_IM(n) (sin(-2.0*PI/n))

  void recursive_fft(double [],int,double [],double []);

  int main(){

  double x[N] = {

  0.5751,

  0.4514,

  0.0439,

  0.0272,

  0.3127,

  0.0129,

  0.3840,

  0.6831,

  0.0928,

  0.0353,

  0.6124,

  0.6085,

  0.0158,

  0.0164,

  0.1901,

  0.5869

  };

上一页123下一页

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答