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

📄 ft_qf_2.cc

📁 这是处理语音信号的程序
💻 CC
字号:
// file: $PDSP/class/fourier_transform/v3.0/ft_qf_2.cc//// system include files//#include <math.h>// isip include files//#include "fourier_transform.h"#include "ft_qf.h"#include "fourier_transform_constants.h"// method: qf_init_cc//// This code very closely follows the algorithm described in://    H.Guo et.al,"The Quick Discrete Fourier Transform",  Proceedings of//    ICASSP 1994, pp. 453-456, SanFrancisco, CA, April 1994.//// This implementation is  adapted from the code written by G.A.Sitton at// Rice University.//// arguments://   int_4 order_a: (input) new order//// return: a logical_1 value indicating status//// creates lookup tables for sine and cosine terms. note that space is// allocated in this method only when the order changes. also all temporary// space is allocated here.logical_1 Fourier_transform::qf_init_cc(int_4 order_a) {  // if the order is the same as the previous call, we are done  //  if (qf_last_order_d == order_a) {    return ISIP_TRUE;  }   // assign the order  //  N_d = order_a;  qf_last_order_d = N_d;   float_8 q;  int_4 i, m, n2, n2m1, temp;  n2 = N_d >> (int_4)1;  is_power_cc((int_4&)m, (int_4)2);    // Allocate the QFT memory	  //  ws = new float_8*[sizeof(float_8*)*m + sizeof(int_4)*6*m +		   sizeof(float_8)*3*(N_d + m)];  // seperate memory is allocated for real and complex computations  // in this case since the qft real routine is called from the complex  // routine  //  qf_real_coeff_d = new float_8[N_d];  qf_imag_coeff_d = new float_8[N_d];;  qf_real_temp_d = new float_8[N_d];  // memory space specifically used only for the complex routine  //  qf_comp_real_coeff_d = new float_8[2*N_d];  qf_comp_imag_coeff_d = new float_8[2*N_d];;  qf_comp_real_temp_d = new float_8[N_d];  qf_comp_imag_temp_d = new float_8[N_d];      // the following variables are used to do the indexing, recursion and  // workspace traversing  //  nc = (int_4*)&ws[m];  ic = &nc[m];  mc = &ic[m];  sc = (float_8*)&mc[m];  ws[0] = &sc[n2 - 1];    // Initialize tables	  //  nc[0] = N_d;  ic[0] = 1;  mc[0] = m;    for (i = 1; i < m; ++i) {    temp = nc[i - 1];    nc[i] = temp >>  (int_4)1;    temp = ic[i - 1];    ic[i] = temp << (int_4)1;        if (i > 1)      ws[i] = ws[i - 1] + (2 * (int_4)(nc[i - 1] + 2));    else      ws[i] = ws[i - 1] + nc[i] + 1;	  }	    // Compute scaled secants  to be used to compute the even and odd functions  // which are used in the DCT and DST computations.  //  q = M_PI/N_d;  n2m1 = n2 - 1;  for (i = 0; i < n2m1; ++i) {    sc[i] = 0.5 / (float_8)cos(q * i);	  }    // exit gracefully  //  return ISIP_TRUE;}

⌨️ 快捷键说明

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