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

📄 fb_00.cc

📁 这是一个从音频信号里提取特征参量的程序
💻 CC
字号:
// file: $isip/class/algo/FilterBank/fb_00.cc// version: $Id: fb_00.cc,v 1.13 2002/07/10 00:53:24 picone Exp $//// isip include files//#include "FilterBank.h"//------------------------------------------------------------------------//// required public methods////-----------------------------------------------------------------------// method: assign//// arguments://  const FilterBank& arg: (input) object to be assigned//// return: a boolean value indicating status//// this method assigns the input object to the current object//boolean FilterBank::assign(const FilterBank& arg_a) {  // assign the algorithm name  //  algorithm_d = arg_a.algorithm_d;  implementation_d = arg_a.implementation_d;  // assign the parameters related to the algorithm specification:  //  input_mode_d = arg_a.input_mode_d;  filters_d.assign(arg_a.filters_d);  fsmp_d = arg_a.fsmp_d;  scale_d = arg_a.scale_d;  order_d = arg_a.order_d;  bandwidth_d = arg_a.bandwidth_d;  filters_pfile_d.assign(arg_a.filters_pfile_d);      // assign temporary buffers related to filter bank computation  //  warp_freq_d.assign(arg_a.warp_freq_d);  lin_freq_d.assign(arg_a.lin_freq_d);  cen_freq_d.assign(arg_a.cen_freq_d);  // assign valid flag  //  is_valid_d = arg_a.is_valid_d;    // call the base assign method  //  return AlgorithmBase::assign(arg_a);}// method: eq//// arguments://  const FilterBank& arg: (input) object to be compared//// return: a boolean value indicating status//// this method checks whether the current object is identical to the// input object//boolean FilterBank::eq(const FilterBank& arg_a) const {  // compare the data members  //  return ((algorithm_d == arg_a.algorithm_d) &&	  (implementation_d == arg_a.implementation_d) &&	  (filters_d.eq(arg_a.filters_d)) &&	  (filters_pfile_d.eq(arg_a.filters_pfile_d)) &&	  (scale_d == arg_a.scale_d) &&	  (fsmp_d == arg_a.fsmp_d) &&	  (input_mode_d == arg_a.input_mode_d) &&	  ((fsmp_d != ORDER) || (order_d == arg_a.order_d)) &&	  ((fsmp_d != BANDWIDTH) || (bandwidth_d == arg_a.bandwidth_d)) &&	  (is_valid_d == arg_a.is_valid_d));}// method: clear//// arguments://  Integral::CMODE ctype: (input) clear mode//// return: a boolean value indicating status//// this method resets the data members to the default values//boolean FilterBank::clear(Integral::CMODE ctype_a) {  if (ctype_a != Integral::RETAIN) {    // reset the parameters related to the algorithm specification to    // default values    //    algorithm_d = DEF_ALGORITHM;    implementation_d = DEF_IMPLEMENTATION;    input_mode_d = DEF_INPUT_MODE;    scale_d = DEF_SCALE;    fsmp_d = DEF_FREQUENCY_SAMPLING;    order_d = DEF_ORDER;    bandwidth_d = DEF_BANDWIDTH;    filters_pfile_d.assign(DEF_FILTERS_PFILE);    filters_d.clear(ctype_a);  }    // clear the temporary buffers related to filter bank amplitude  //  warp_freq_d.clear(ctype_a);  lin_freq_d.clear(ctype_a);  cen_freq_d.clear(ctype_a);  // call the base clear method  //  return AlgorithmBase::clear(ctype_a);}//---------------------------------------------------------------------------//// class-specific public methods://  public methods required by the AlgorithmBase interface contract////---------------------------------------------------------------------------// method: assign//// arguments://  const AlgorithmBase& arg: (input) object to be assigned//// return: a boolean value indicating status//// this method assigns the input algorithm object to the current object.//boolean FilterBank::assign(const AlgorithmBase& arg_a) {  // case: input is an FilterBank object  //  if (typeid(arg_a) == typeid(FilterBank)) {    return assign((FilterBank&)arg_a);  }  // case: other  //  if the input algorithm object is not an FilterBank object, return  //  an error.  //  else {    return Error::handle(name(), L"assign", Error::ARG, __FILE__, __LINE__);  }}// method: eq//// arguments://  const AlgorithmBase& arg: (input) object to be compared//// return: a boolean value indicating status//// this method checks whether the current FilterBank object is identical// to the input algorithm object.//boolean FilterBank::eq(const AlgorithmBase& arg_a) const {    // case: input is a FilterBank object  //  if (typeid(arg_a) == typeid(FilterBank)) {    return eq((FilterBank&)arg_a);  }  // case: other  //  if the input algorithm object is not a FilterBank object, return  //  an error.  //  else {    return Error::handle(name(), L"eq", Error::ARG, __FILE__, __LINE__);  }}// method: init//// arguments: none//// return: a boolean value indicating status//// this method reads in the ma and ar coefficients for filters from// the parameter file for TIME algorithm// boolean FilterBank::init() {    // check algorithm: TIME  //  if (algorithm_d == TIME) {    // declare the local variables    //    Sof param_file;    long tag;    long index = (long)0;    long num = (long)0;          // open the sof file in the read mode    //    param_file.open(filters_pfile_d, File::READ_ONLY, File::TEXT);    // get the number of filters    //    num = param_file.getCount(Filter::CLASS_NAME);    // set the length of the vector of filters    //    filters_d.setLength(num);    // read all the instances of the object Filter from the Sof file    //    for (tag = param_file.first(filters_d(0).name()); tag != Sof::NO_TAG;	 tag = param_file.next(filters_d(0).name(), tag)) {      filters_d(index).read(param_file, tag);      index++;    }            // close the filters parameter file    //    param_file.close();  }   	     // check algorithm: FREQUENCY  //  else if (algorithm_d == FREQUENCY) {    // no initialization needed  }    // set the initialization flag  //  is_valid_d = true;    // exit gracefully  //  return true;}//-----------------------------------------------------------------------------//// we define non-integral constants in the default constructor//      //-----------------------------------------------------------------------------// constants: class name//const String FilterBank::CLASS_NAME(L"FilterBank");// constants: i/o related constants//const String FilterBank::DEF_PARAM(L"");const String FilterBank::PARAM_ALGORITHM(L"algorithm");const String FilterBank::PARAM_IMPLEMENTATION(L"implementation");const String FilterBank::PARAM_FILTERS_PFILE(L"filters_param_file");const String FilterBank::PARAM_SCALE(L"scale");const String FilterBank::PARAM_FREQUENCY_SAMPLING(L"frequency_sampling");const String FilterBank::PARAM_INPUT_MODE(L"input_mode");const String FilterBank::PARAM_ORDER(L"order");const String FilterBank::PARAM_BANDWIDTH(L"bandwidth");const String FilterBank::PARAM_CMODE(L"compute_mode");const String FilterBank::PARAM_DMODE(L"data_mode");// constants: default constants for each algorithm//const String FilterBank::DEF_FILTERS_PFILE(L"filters.sof");// constants: NameMap(s) for the enumerated values//const NameMap FilterBank::ALGO_MAP(L"FREQUENCY, TIME");const NameMap FilterBank::IMPL_MAP(L"UNIFORM, TRIANGULAR, RAISED_COSINE, CCDE");const NameMap FilterBank::SCALE_MAP(L"LINEAR, MEL, BARK");const NameMap FilterBank::FREQUENCY_SAMPLING_MAP(L"ORDER, BANDWIDTH");const NameMap FilterBank::INPUT_MODE_MAP(L"FULL, SYMMETRIC");// static instantiations: memory manager//MemoryManager FilterBank::mgr_d(sizeof(FilterBank), FilterBank::name());

⌨️ 快捷键说明

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