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

📄 dspd_05.cc

📁 这是一个从音频信号里提取特征参量的程序
💻 CC
字号:
// file: $isip/class/algo/DisplayData/dspd_05.cc// version: $Id: dspd_05.cc,v 1.6 2002/01/29 22:38:37 gao Exp $//// isip include files//#include "DisplayData.h"// method: apply//// arguments://  Vector<AlgorithmData>& output: (output) output data//  const Vector< CircularBuffer<AlgorithmData> >& input: (input) input data//// return: a boolean value indicating status//// this method calls the appropriate computation methods//boolean DisplayData::apply(Vector<AlgorithmData>& output_a,			   const Vector< CircularBuffer<AlgorithmData> >&			   input_a) {  // determine the number of input channels and force the output to be  // that number  //  long len = input_a.length();  output_a.setLength(len);  boolean res = true;    // start the debugging output  //  displayStart(this);  // loop over the channels and call the compute method  //  for (long c = 0; c < len; c++) {    // display the channel number    //    displayChannel(c);    // call the compute method to produce our nicely formatted output    //    res &= compute(output_a(c), input_a(c)(0));        // possibly display the data. note that we only display if the    // debug level is greater than brief (the default). for the    // default mode, we call our own display routines in the compute    // method.    //    if (debug_level_d > Integral::BRIEF) {      display(output_a(c), input_a(c)(0), name());    }  }  // finish the debugging output  //  displayFinish(this);  // exit gracefully  //  return res;}// method: compute//// arguments://  AlgorithmData& output: (output) output data//  const AlgorithmData& input: (input) input data//// return: logical error status//boolean DisplayData::compute(AlgorithmData& output_a,			     const AlgorithmData& input_a) {  // create a nice display of the data  //  if ((debug_level_d >= Integral::BRIEF) && shouldDisplayFrame()) {    // for anything but a combination, just display the object    //    if (input_a.getDataType() != AlgorithmData::COMBINATION) {      displayObject(input_a);    }    // for a combination we need to loop over elements    //    else {      long len = input_a.getCombination().length();      for (long i = 0; i < len; i++) {	// produce a header for which element this is	//	String output(ELEMENT_HEADER_00);	output.concat(i);	output.concat(ELEMENT_HEADER_01);	Console::put(output);	// within indention, call the displayObject method	//	Console::increaseIndention();	displayObject(input_a.getCombination()(i));	Console::decreaseIndention();      }    }  }  // copy the data (note this also sets coef_type)  //  return output_a.assign(input_a);}// method: displayObject//// arguments://  const AlgorithmData& input: (input) input data//// return: logical error status//boolean DisplayData::displayObject(const AlgorithmData& input_a) const {  String output;  if (label_d.length() > 0) {    output.assign(label_d);    output.concat(LABEL_DELIM);  }    output.concat(prefix_d);    if (input_a.getDataType() == AlgorithmData::VECTOR_FLOAT) {    String num;    input_a.getVectorFloat().get(num);    output.concat(num);    output.concat(suffix_d);    Console::put(output);  }  else if (input_a.getDataType() == AlgorithmData::VECTOR_COMPLEX_FLOAT) {    String num;    input_a.getVectorComplexFloat().get(num);    output.concat(num);    output.concat(suffix_d);    Console::put(output);  }  else if (input_a.getDataType() == AlgorithmData::MATRIX_FLOAT) {    long len = output.length();    long nrow = input_a.getMatrixFloat().getNumRows();    if (nrow == 0) {      output.concat(EMPTY_MATRIX);      output.concat(suffix_d);      Console::put(output);      return true;    }    output.concat(MATRIX_START);        String num;    VectorFloat row_vec;    input_a.getMatrixFloat().getRow(row_vec, 0);    row_vec.get(num, MATRIX_DELIM);    output.concat(num);    output.concat(MATRIX_END);    if (nrow == 1) {      output.concat(suffix_d);      Console::put(output);      return true;    }    else {      Console::put(output);    }        String blank(len + MATRIX_START.length());    for (long j = 0; j < len; j++) {      blank(j) = MATRIX_DELIM(0);    }    blank(len) = (unichar)NULL;    blank.concat(MATRIX_START);        for (long i = 1; i < nrow; i++) {      output.assign(blank);      input_a.getMatrixFloat().getRow(row_vec, i);      row_vec.get(num, MATRIX_DELIM);      output.concat(num);      output.concat(MATRIX_END);      if (i == (nrow - 1)) {	output.concat(suffix_d);      }      Console::put(output);    }  }  else {    return Error::handle(name(), L"displayObject", Error::ARG,			 __FILE__, __LINE__);  }  // exit gracefully  //  return true;}// method: shouldDisplayFrame//// arguments: none//// return: whether or not this frame should display//// determine based on the frame number and class configuration if we// should display data for this frame or not.//boolean DisplayData::shouldDisplayFrame() const {  // ISIP_BUG #531: this needs to be overhauled  //  return true;}

⌨️ 快捷键说明

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