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

📄 algd_02.cc

📁 这是一个从音频信号里提取特征参量的程序
💻 CC
字号:
// file: $isip/class/mmedia/AlgorithmData/algd_02.cc// version: $Id: algd_02.cc,v 1.1 2002/06/07 14:31:13 gao Exp $//// isip include files//#include "AlgorithmData.h"// method: diagnose//// arguments://  Integral::DEBUG level: (input) debug level for diagnostics//// return: a boolean value indicating status//boolean AlgorithmData::diagnose(Integral::DEBUG level_a) {  //---------------------------------------------------------------------  //  // 0. preliminaries  //  //---------------------------------------------------------------------  // output the class name  //  if (level_a > Integral::NONE) {    SysString output(L"diagnosing class ");    output.concat(CLASS_NAME);    output.concat(L": ");    Console::put(output);    Console::increaseIndention();  }  //--------------------------------------------------------------------  //  // 1. required public methods  //     class constructors  //  //--------------------------------------------------------------------  // set indentation  //    if (level_a > Integral::NONE) {    Console::put(L"testing required public methods: class constructors...\n");    Console::increaseIndention();  }    AlgorithmData algd_1;  AlgorithmData algd_2(algd_1);    if (!algd_2.eq(algd_1)) {    return Error::handle(name(), L"copy constructor/eq", Error::TEST,			 __FILE__, __LINE__);  }  // reset indentation  //  if (level_a > Integral::NONE) {    Console::decreaseIndention();  }    //--------------------------------------------------------------------  //  // 2. required public methods  //     memory management methods  //  //--------------------------------------------------------------------  // set indentation  //    if (level_a > Integral::NONE) {    Console::put(L"testing required public methods: memory management methods...\n");    Console::increaseIndention();  }    AlgorithmData::setGrowSize((long)500);  for (long j = 1; j <= 10; j++) {    AlgorithmData** dyn_algd = new AlgorithmData*[j * 100];        // create the objects    //    for (long i = 0; i < j * 100; i++) {      dyn_algd[i] = new AlgorithmData();    }        // delete objects    //    for (long i = (j * 100) - 1; i >= 0; i--) {      delete dyn_algd[i];    }          delete [] dyn_algd;  }   // reset indentation  //  if (level_a > Integral::NONE) {    Console::decreaseIndention();  }  //---------------------------------------------------------------------  //  // 3. required public methods  //     i/o methods   //  //---------------------------------------------------------------------    //---------------------------------------------------------------------  //  // 4. class-specific public methods  //     set and get methods  //  //---------------------------------------------------------------------  // set indentation  //    if (level_a > Integral::NONE) {    Console::put(L"testing class-specific public methods: set and get methods...\n");    Console::increaseIndention();  }  // set and get type  //  algd_1.setDataType(VECTOR_FLOAT);  DATA_TYPE dt_val = algd_1.getDataType();  if (dt_val != VECTOR_FLOAT) {    return Error::handle(name(), L"setDataType", Error::TEST,			 __FILE__, __LINE__);  }  algd_1.setCoefType(SIGNAL);  COEF_TYPE ct_val = algd_1.getCoefType();  if (ct_val != SIGNAL) {    return Error::handle(name(), L"setCoefType", Error::TEST,			 __FILE__, __LINE__);  }  // test makeVectorFloat and getVectorFloat  //  VectorFloat ref(L"1, 2, 3");  VectorFloat ans;  algd_1.makeVectorFloat().assign(ref);  ans = algd_1.getVectorFloat();  if (!ans.eq(ref)) {    return Error::handle(name(), L"makeVectorFloat", Error::TEST,			 __FILE__, __LINE__);  }    // set and get type  //  algd_1.setDataType(VECTOR_DOUBLE);  dt_val = algd_1.getDataType();  if (dt_val != VECTOR_DOUBLE) {    return Error::handle(name(), L"setDataType", Error::TEST,			 __FILE__, __LINE__);  }  // test makeVectorDouble and getVectorDouble  //  VectorDouble ref_1(L"1, 2, 3");  VectorDouble ans_1;  algd_1.makeVectorDouble().assign(ref_1);  ans_1 = algd_1.getVectorDouble();  if (!ans_1.eq(ref_1)) {    return Error::handle(name(), L"makeVectorDouble", Error::TEST,			 __FILE__, __LINE__);  }    // test makeVectorComplexFloat and getVectorComplexFloat  //  VectorComplexFloat ref_2(L"1, 2.0j, -3, -4.0, 0, 1j, 1, 1, 1+1j");  VectorComplexFloat ans_2;  // set and get type  //  algd_1.setDataType(VECTOR_COMPLEX_FLOAT);  dt_val = algd_1.getDataType();  if (dt_val != VECTOR_COMPLEX_FLOAT) {    return Error::handle(name(), L"setDataType", Error::TEST,			 __FILE__, __LINE__);  }  algd_1.makeVectorComplexFloat().assign(ref_2);  ans_2 = algd_1.getVectorComplexFloat();  if (!ans_2.eq(ref_2)) {    return Error::handle(name(), L"makeVectorFloat", Error::TEST,			 __FILE__, __LINE__);  }    // test makeVectorComplexDouble and getVectorComplexDouble  //  VectorComplexDouble ref_3(L"1, 2.0j, -3, -4.0, 0, 1j, 1, 1, 1+1j");    VectorComplexDouble ans_3;  // set and get type  //  algd_1.setDataType(VECTOR_COMPLEX_DOUBLE);  dt_val = algd_1.getDataType();  if (dt_val != VECTOR_COMPLEX_DOUBLE) {    return Error::handle(name(), L"setDataType", Error::TEST,			 __FILE__, __LINE__);  }    algd_1.makeVectorComplexDouble().assign(ref_3);  ans_3 = algd_1.getVectorComplexDouble();  if (!ans_3.eq(ref_3)) {    return Error::handle(name(), L"makeVectorDouble", Error::TEST,			 __FILE__, __LINE__);  }    // test makeMatrixFloat and getMatrixFloat  //    MatrixFloat ref_4(2, 3, L"5.0, 5.0, 5.0, 5.0, 5.0, 5.0");  MatrixFloat ans_4;  // set and get type  //  algd_1.setDataType(MATRIX_FLOAT);  dt_val = algd_1.getDataType();  if (dt_val != MATRIX_FLOAT) {    return Error::handle(name(), L"setDataType", Error::TEST,			 __FILE__, __LINE__);  }    algd_1.makeMatrixFloat().assign(ref_4);  ans_4 = algd_1.getMatrixFloat();  if (!ans_4.eq(ref_4)) {    return Error::handle(name(), L"makeMatrixFloat", Error::TEST,			 __FILE__, __LINE__);  }    // test makeMatrixDouble and getMatrixDouble  //    MatrixDouble ref_5(2, 3, L"5.0, 5.0, 5.0, 5.0, 5.0, 5.0");  MatrixDouble ans_5;  // set and get type  //  algd_1.setDataType(MATRIX_DOUBLE);  dt_val = algd_1.getDataType();  if (dt_val != MATRIX_DOUBLE) {    return Error::handle(name(), L"setDataType", Error::TEST,			 __FILE__, __LINE__);  }    algd_1.makeMatrixDouble().assign(ref_5);  ans_5 = algd_1.getMatrixDouble();  if (!ans_5.eq(ref_5)) {    return Error::handle(name(), L"makeMatrixDouble", Error::TEST,			 __FILE__, __LINE__);  }  // test makeComplexFloat and getComplexFloat  //    MatrixComplexFloat ref_6(3, 3, L"1, 2.0j, -3, -4.0, 0, 1j, 1, 1, 1+1j", Integral::FULL);  MatrixComplexFloat ans_6;  // set and get type  //  algd_1.setDataType(MATRIX_COMPLEX_FLOAT);  dt_val = algd_1.getDataType();  if (dt_val != MATRIX_COMPLEX_FLOAT) {    return Error::handle(name(), L"setDataType", Error::TEST,			 __FILE__, __LINE__);  }    algd_1.makeMatrixComplexFloat().assign(ref_6);  ans_6 = algd_1.getMatrixComplexFloat();  if (!ans_6.eq(ref_6)) {    return Error::handle(name(), L"makeMatrixDouble", Error::TEST,			 __FILE__, __LINE__);  }  // test makeComplexDouble and getComplexDouble  //    MatrixComplexDouble ref_7(3, 3, L"1, 2.0j, -3, -4.0, 0, 1j, 1, 1, 1+1j", Integral::FULL);  MatrixComplexDouble ans_7;  // set and get type  //  algd_1.setDataType(MATRIX_COMPLEX_DOUBLE);  dt_val = algd_1.getDataType();  if (dt_val != MATRIX_COMPLEX_DOUBLE) {    return Error::handle(name(), L"setDataType", Error::TEST,			 __FILE__, __LINE__);  }    algd_1.makeMatrixComplexDouble().assign(ref_7);  ans_7 = algd_1.getMatrixComplexDouble();  if (!ans_7.eq(ref_7)) {    return Error::handle(name(), L"makeMatrixDouble", Error::TEST,			 __FILE__, __LINE__);  }  // test makeCombination and getCombination---Float  //  VectorFloat ref_05(L"1, 2, 3");  VectorFloat ref_06(L"11, 12, 13");    Vector<AlgorithmData> ref_8(2);  Vector<AlgorithmData> ans_8(2);    ref_8(0).makeVectorFloat().assign(ref_05);  ref_8(1).makeVectorFloat().assign(ref_06);      algd_1.makeCombination().assign(ref_8);  ans_8 = algd_1.getCombination();  if (!ans_8.eq(ref_8)) {    return Error::handle(name(), L"makeVectorDouble", Error::TEST,			 __FILE__, __LINE__);  }           // test makeCombination and getCombination---Double  //  ref_8(0).makeVectorDouble().assign(ref_05);  ref_8(1).makeVectorDouble().assign(ref_06);      algd_1.makeCombination().assign(ref_8);  ans_8 = algd_1.getCombination();  if (!ans_8.eq(ref_8)) {    return Error::handle(name(), L"makeVectorDouble", Error::TEST,			 __FILE__, __LINE__);  }           // test makeCombination--ComplexFloat and getCombination--ComplexFloat  //  VectorComplexFloat ref_02(L"1, 2.0j, -3, -4.0, 0, 1j, 1, 1, 1+1j");  VectorComplexFloat ref_03(L"11, 12.0j, -13, -14.0, 10, 11j, 11, 11, 11+11j");    ref_8(0).makeVectorComplexFloat().assign(ref_02);  ref_8(1).makeVectorComplexFloat().assign(ref_03);      algd_1.makeCombination().assign(ref_8);  ans_8 = algd_1.getCombination();  if (!ans_8.eq(ref_8)) {    return Error::handle(name(), L"makeVectorDouble", Error::TEST,			 __FILE__, __LINE__);  }           // test makeCombination---ComplexDouble and getCombination---ComplexDouble  //  ref_8(0).makeVectorComplexDouble().assign(ref_02);  ref_8(1).makeVectorComplexDouble().assign(ref_03);      algd_1.makeCombination().assign(ref_8);  ans_8 = algd_1.getCombination();  if (!ans_8.eq(ref_8)) {    return Error::handle(name(), L"makeVectorDouble", Error::TEST,			 __FILE__, __LINE__);  }    // reset indentation  //  if (level_a > Integral::NONE) {    Console::decreaseIndention();  }    //---------------------------------------------------------------------  //  // 5. class-specific public methods  //     swap  //  //---------------------------------------------------------------------  // set indentation  //  if (level_a > Integral::NONE) {    Console::put(L"testing class-specific public methods: swap methods...\n");    Console::increaseIndention();  }  // set variables for testing  //  AlgorithmData tmp;  algd_1.assign(algd_2);  tmp.swap(algd_2);  if (!algd_1.eq(tmp)) {    return Error::handle(name(), L"diagnose", Error::TEST,			 __FILE__, __LINE__);  }    // reset indentation  //  if (level_a > Integral::NONE) {    Console::decreaseIndention();  }    //--------------------------------------------------------------------  //  // 6. print completion message  //  //--------------------------------------------------------------------  // reset indentation  //  if (level_a > Integral::NONE) {    Console::decreaseIndention();  }  // possibly print completion message  //    if (level_a > Integral::NONE) {    String output(L"diagnostics completed successfully for class ");    output.concat(name());    output.concat(L"\n");    Console::put(output);  }  // exit gracefully  //    return true;}

⌨️ 快捷键说明

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