• 大小: 5KB
    文件类型: .c
    金币: 2
    下载: 1 次
    发布日期: 2021-06-25
  • 语言: C/C++
  • 标签:

资源简介

利用FFT计算电压有效值的C语言例程,FFT_C.C 为vc++编写的C代码。

资源截图

代码片段和文件信息

想用FFT算法计算电压的有效值。试验用数据由Ui=1024*[1+sin(2*i*PI/N)](i=0,1,...N-1)得到理想的32点数值,存入数组data[32].Re中,而data[32].Im=0。对data[]逆序排列后,进行FFT运算,预想结果是:预想的运算结果data[]的实部之和应为AD_full的值,虚部之和为0   。但是以下程序运行结果data[]的实部之和为0。查了多半天,没有找到原因,头都大了。请大家帮忙看看,错在哪里。谢谢!*/   
  /*test_data(float   u_test[])和revers_order(struct   complx   A[])经验证没有问题,错误很可能在FFT()中。*/   
  #define   PI   3.141593   
  #define   AD_full   1024   
  #define   N   32   
  #include      
  #include      
  struct   complx   
  {   
      double   Re;   
      double   Im;   
  };   
    
  void   test_data(float   u_test[]);/*产生32个理想的电压数据点*/   
  void   FFT(struct   complx   A[]);         
  /*对复数进行FFT运算,A[]的实部为电压,虚部为0。预想的运算结果A[]的实部之和应为AD_full的值,虚部之和为0   */   
  void   revers_order(struct   complx   A[]);   /*   按照数组下标的二进制逆序重新排列数据*/   
    
  main()   
  {   
    int   i;   
    struct   complx   data[N];   
    float   sum_data=0.0u_test[N]re_test[N]im_test[N]sum_re=0.0sum_im=0.0;   
    test_data(u_test);   
    printf(“\ntest_data   are:\n“);   
    for(i=0;i    {   
        data[i].Re=u_test[i];   
        data[i].Im=0.0;   
        sum_data=sum_data+data[i].Re*data[i].Re;   
        printf(“d[%2d].Re=%f     d[%2d].Im=%1.1f\n   “idata[i].Reidata[i].Im);   
    }   
    getch();   
    revers_order(data);   
    printf(“\ntest   revers   data   are:\n“);   
    for(i=0;i      {   
        printf(“d[%2d].Re=%f     d[%2d].Im=%1.1f   “idata[i].Reidata[i].Im);   
        if((i+1)%2==0)   printf(“\n“);   
      }   
    getch();   
    FFT(data);   
    printf(“\ntest   FFT   data   are:\n“);   
    for(i=0;i      {   
        sum_re=sum_re+data[i].Re;   
        sum_im=sum_im+data[i].Im;   
        printf(“d[%2d].Re=%f     d[%2d].Im=%f   “idata[i].Reidata[i].Im);   
        if((i+1)%2==0)   printf(“\n“);   
      }   
        
    
  printf(“\n\nsum_re=%fsum_im=%fdata_sum=%f“sum_resum_imsqrt(sum_data/N));   
    getch();   
  }   
    
  void   FFT(struct   complx   A[])   
  {   
    struct   complx   UWT;   
    int   LELE1IJIP;   
    int   M=5;   
    double   temp;   
    i

评论

共有 条评论

相关资源