⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fft.c

📁 OPIE/Qtopia的测试工具
💻 C
📖 第 1 页 / 共 3 页
字号:
                               0.634646284163645266,                               0.595624504492433024,                               0.555570245019601845,                               0.514442744193221328,                              -0.001212000000001049,                              -0.998791456205172405,                              -0.995214726672196929,                              -0.989176509964781014,                              -0.980782180403230431,                              -0.831465612302545236,                              -0.803205431480644943,                              -0.774010453362736882,                              -0.747954125354958995,                              -0.707116781186547351,                              -0.671125754847018219,                               0.471356736825997198,                               0.424551093430281585,                               0.314683432365089171,                               0.336441853392219440,                               0.290284654254461665,                               0.242980479903263122,                               0.195094322016127443,                               0.146735474455360860,                               0.098217140329559660,                               0.049167674327417023,                              -0.634394284163645266,                              -0.594619304492433024,                              -0.555545233019601845,                              -0.514102744193221328,                              -0.477396736825997198,                              -0.477555093430281585,                              -0.387688432365089171,                              -0.335879853392219440,                              -0.295878677254461665,                              -0.242980179903263122,                              -0.195057822016127443,                              -0.146775474455360860,                              -0.098897540329559660,                              -0.042866864327417023,                               0.595624504492433024,                               0.555570245019601845,                               0.514442744193221328,                              -0.001212000000001049,                              -0.998791456205172405,                              -0.995214726672196929,                              -0.989176509964781014,                               0.881541264344545050,                               0.857728610000272118,                               0.471356736825997198,                               0.424551093430281585,                               0.314683432365089171,                               0.336441853392219440,                               0.290284654254461665,                               0.098217140329559660,                               0.049167674327417023,                              -0.634394284163645266,                              -0.594619304492433024,                              -0.555545233019601845,                              -0.974034153194543974,                              -0.956940335732208824,                               0.956940335252408824,                               0.941544045483020806,                               0.923879532511286738,                               0.903989293123443338,                               0.881541264344545050,                               0.857728610000272118,                               0.831469612544545236,                               0.336441853392219440,                               0.290284654254461665,                               0.242980479903263122,                               0.195094322016127443,                              -0.944144065183020806,                              -0.923211532511286738,                              -0.905989293123443338,                              -0.881112264348355050,                              -0.857728610000272118,                              -0.831465612302545236,                               0.923879532511286738,                               0.903989293123443338,                               0.881541264344545050,                               0.857728610000272118,                               0.831469612544545236,                               0.803207531420452543,                               0.773010453362736882,                               0.740451125354958995,                               0.707106781186547351,                               0.903989293123443338,                               0.471356736825997198,                             };void  BenchFFT( void ){  int         i;  int         k;  FFT         fft;  fft.N = OBJ_DATA_COUNT;  fft.r = OBJ_DATA_SISU;  fft.result_A = SpectA;  fft.result_B = SpectB;  for ( i= 0 ; i < FFT_TEST_COUNT ; i++ )  {      for( k= 0 ; k < fft.N ; k++ )      {          fft.result_A[k] = TestData[i+k];      }      digital_fft( &fft );  }  return;}void  digital_fft( FFT* fft ){  int           col;                // ≈误∽戎规  int           g;                  // グル〖プ戎规  int           i;                  // グル〖プで乖う剩燎捐换搀眶  int           group_count;        // 部グル〖プ赂哼するか  int           group_item;         // グル〖プ柒にいくつの妥燎が赂哼するか  int           mul_count;          // 剩燎捐换搀眶  int           pair_plus;          // バタフライ遍换で滇めたデ〖タの滦になる戎规に颅す猛  int           pair1;              // バタフライ遍换で滇める1つ誊の戎规  int           pair2;              // バタフライ遍换で滇める2つ誊の戎规  int           j;  int           k;  int           w;                  // ビットを瓤啪した冯蔡  int           bit;  int           mask;  int           set;  double        radian;  double        rad;  double        wk_cos;  double        wk_sin;  double        wk_A;  double        wk_B;  // ---------------------------------------------- デ〖タ介袋肋年  for ( i= 0 ; i < fft->N ; i++ )  {      fft->result_B[i] = 0;  }  group_count = 1;  mul_count   = fft->N / 2;  pair_plus   = fft->N / 2;  radian      = 2 * M_PI / fft->N;  // --------------------------------------------- r搀≈误∽纷换を乖う  for ( col= 0 ; col < fft->r ; col++ )  {      rad = 0.0;      // ----------------------------------------- グル〖プで乖う剩燎捐换搀眶      for ( i= 0 ; i < mul_count ; i++ )      {          wk_cos = cos( rad );          wk_sin = sin( rad );          rad   += radian;          group_item = mul_count + mul_count;          pair1 = i;          // ------------------------------------ グル〖プの眶尸乖う          for ( g= 0 ; g < group_count ; g++ )          {              // -------------------------------- ≈误∽纷换の滦になるもう1つの戎规を滇める              pair2 = pair1 + pair_plus;              wk_A  = fft->result_A[pair1] - fft->result_A[pair2];              wk_B  = fft->result_B[pair1] - fft->result_B[pair2];              fft->result_A[pair1] = fft->result_A[pair1] + fft->result_A[pair2];              fft->result_B[pair1] = fft->result_B[pair1] + fft->result_B[pair2];              fft->result_A[pair2] = wk_cos * wk_A + wk_sin * wk_B;              fft->result_B[pair2] = wk_cos * wk_B - wk_sin * wk_A;              // -------------------------------- 肌のグル〖プの黎片疤弥の戎规をセット              pair1 += group_item;          }      }      group_count += group_count;               // グル〖プ眶は≈误∽髓に2擒に笼えていく      mul_count   /= 2;                         // グル〖プで乖う剩燎捐换搀眶は≈误∽髓に1】2になる      pair_plus   /= 2;                         // 滦になるデ〖タの疤弥は≈误∽髓に1】2になる      radian      += radian;  }  // --------------------------------------------- デ〖タのビット界を傅に提す  for ( i= 0 ; i < fft->N - 1 ; i++ )  {      mask = 1;                   // チェックするビット      set  = 1 << ( fft->r-1 );   // ( fft->r-1 ) 尸焊へシフト      w    = 0;      for ( j= 0, k= fft->r ; k > 0 ; j++, k-- )      {          bit = i & mask;          if ( bit )              w |= set;          mask <<= 1;          set  >>= 1;      }      if ( w <= i )                             // update 1994.04.02 链デ〖タをリバ〖スしていたため傅に提っていた          continue;      wk_A = fft->result_A[i];      wk_B = fft->result_B[i];      fft->result_A[i] = fft->result_A[w];      fft->result_A[w] = wk_A;      fft->result_B[i] = fft->result_B[w];      fft->result_B[w] = wk_B;  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -