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

📄 mmat_13.cc

📁 这是一个从音频信号里提取特征参量的程序
💻 CC
📖 第 1 页 / 共 5 页
字号:
// file: $isip/class/math/matrix/MMatrix/mmat_13.cc// version: $Id: mmat_13.cc,v 1.26 2002/03/05 15:15:19 gao Exp $//// isip include files//#include "MMatrix.h"#include "MMatrixDiagnose.h"//-----------------------------------------------------------------------------//// define the argument matrices//   (nrows, ncols, elements)//// note: imaginary parts are in the second half of the array//-----------------------------------------------------------------------------double MMAT_ARG_MATRICES [MMAT_NUM_MATS_TOTAL] [MMAT_MAT_SIZE] = {  // matrices with zero imaginary part  //  // A: a full 4x4 non-singular matrix  //  {4, 4,    3, 4, 7, 2, 3, 5, 6, 1, 8, 4, 1, 3, 4, 5, 7, 2,            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},  // B: a diagonal 4x4 non-singular matrix  //  {4, 4,    5, 0, 0, 0, 0, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4,            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},  // C: a symmetric 4x4 non-singular matrix  //  {4, 4,    5, 2, 3, 4, 2, 7, 6, 1, 3, 6, 8, 3, 4, 1, 3, 4,            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},  // D: a lower triangular 4x4 non-singular matrix  //  {4, 4,    5, 0, 0, 0, 2, 2, 0, 0, 3, 6, 3, 0, 4, 6, 3, 4,            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},  // E: a upper triangular 4x4 non-singular matrix  //  {4, 4,    5, 2, 3, 4, 0, 2, 6, 6, 0, 0, 3, 3, 0, 0, 0, 4,            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},  // F: a full 4x4 singular matrix  //  {4, 4,    3, 4, 3, 2, 5, 7, 8, 6, 9, 12, 9, 6, 15, 14, 24, 18,            0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0,  0,  0,  0,  0},  // G: a full 4x2 matrix  //  {4, 2,    4, 5, 7, 2, 3, 9, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0,            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},  // H: a full 2x4 matrix  //  {2, 4,    4, 7, 3, 2, 5, 2, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0,            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},  // matrices with non-zero imaginary part  //  // I: a full 4x4 non-singular matrix  //  {4, 4,    2, 9, 1, 4, 3, 5, 8, 1, 8, 4, 9, 3, 4, 8, 7, 2,            4, 5, 1, 6, 7, 9, 5, 3, 5, 6, 4, 4, 3, 5, 2, 8},  // J: a diagonal 4x4 non-singular matrix  //  {4, 4,    9, 0, 0, 0, 0, 4, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,            3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 5, 0, 0, 0, 0, 3},  // K: a symmetric 4x4 non-singular matrix  //  {4, 4,    2, 7, 1, 3, 7, 5, 2, 4, 1, 2, 7, 9, 3, 4, 9, 6,            1, 3, 5, 2, 3, 7, 4, 1, 5, 4, 3, 6, 2, 1, 6, 2},  // L: a lower triangular 4x4 non-singular matrix  //  {4, 4,    2, 0, 0, 0, 4, 1, 0, 0, 6, 7, 9, 0, 4, 2, 3, 8,            6, 0, 0, 0, 9, 4, 0, 0, 6, 6, 1, 0, 8, 9, 3, 1},  // M: a upper triangular 4x4 non-singular matrix  //  {4, 4,    8, 9, 1, 9, 0, 9, 3, 5, 0, 0, 2, 8, 0, 0, 0, 4,            3, 7, 5, 6, 0, 6, 3, 7, 0, 0, 3, 8, 0, 0, 0, 1},  // N: a full 4x4 singular matrix  //  {4, 4,    2, 6, 4, 6, 3, 8, 3, 9, 1, 6, 6, 3, 1, 3, 2, 3,            4, 6, 6, 8, 8, 1, 5, 8, 6, 3, 1, 4, 2, 3, 3, 4},  // O: a full 4x2 matrix  //  {4, 2,    7, 1, 6, 2, 6, 3, 2, 8, 8, 6, 3, 3, 6, 8, 5, 4,	    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},  // P: a full 2x4 matrix  //  {2, 4,    8, 4, 2, 3, 1, 6, 2, 8, 6, 3, 3, 1, 2, 7, 4, 5,	    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},};//-----------------------------------------------------------------------------//// define types of the argument matrices////-----------------------------------------------------------------------------Integral::MTYPE MMAT_ARG_MAT_TYPES [MMAT_NUM_MATS_TOTAL] = {  // matrices with zero imaginary part  //  // A: a full 4x4 non-singular matrix  //  Integral::FULL,  // B: a diagonal 4x4 non-singular matrix  //  Integral::DIAGONAL,  // C: a symmetric 4x4 non-singular matrix  //  Integral::SYMMETRIC,  // D: a lower triangular 4x4 non-singular matrix  //  Integral::LOWER_TRIANGULAR,  // E: a upper triangular 4x4 non-singular matrix  //  Integral::UPPER_TRIANGULAR,  // F: a full 4x4 singular matrix  //  Integral::FULL,  // G: a full 4x2 matrix  //  Integral::FULL,  // H: a full 2x4 matrix  //  Integral::FULL,  // matrices with non-zero imaginary part  //  // I: a full 4x4 non-singular matrix  //  Integral::FULL,  // J: a diagonal 4x4 non-singular matrix  //  Integral::DIAGONAL,  // K: a symmetric 4x4 non-singular matrix  //  Integral::SYMMETRIC,  // L: a lower triangular 4x4 non-singular matrix  //  Integral::LOWER_TRIANGULAR,  // M: a upper triangular 4x4 non-singular matrix  //  Integral::UPPER_TRIANGULAR,  // N: a full 4x4 singular matrix  //  Integral::FULL,  // O: a full 4x2 matrix  //  Integral::FULL,  // P: a full 2x4 matrix  //  Integral::FULL,};//-----------------------------------------------------------------------------//// define the results of operations://    F(matrix, scalar) -> scalar////-----------------------------------------------------------------------------// is the type possible?//boolean MMAT_IS_TYPE_POSSIBLE_RES [MMAT_NUM_MATS_TOTAL] [MMAT_NUM_TYPES] = {  // can A be a FULL, DIAG, SYMMETRIC, LOWER_TRIANGLE, UPPER_TRIANGLE ?  //  {true, false, false, false, false, true},  // can B be a FULL, DIAG, SYMMETRIC, LOWER_TRIANGLE, UPPER_TRIANGLE ?  //  {true, true, true, true, true, true},  // can C be a FULL, DIAG, SYMMETRIC, LOWER_TRIANGLE, UPPER_TRIANGLE ?  //  {true, false, true, false, false, true},  // can D be a FULL, DIAG, SYMMETRIC, LOWER_TRIANGL, UPPER_TRIANGLEE ?  //  {true, false, false, true, false, true},  // can E be a FULL, DIAG, SYMMETRIC, LOWER_TRIANGLE, UPPER_TRIANGLE ?  //  {true, false, false, false, true, true},  // can F be a FULL, DIAG, SYMMETRIC, LOWER_TRIANGLE, UPPER_TRIANGLE ?  //  {true, false, false, false, false, true},  // can G be a FULL, DIAG, SYMMETRIC, LOWER_TRIANGLE, UPPER_TRIANGLE ?  //  {true, false, false, false, false, true},  // can H be a FULL, DIAG, SYMMETRIC, LOWER_TRIANGLE, UPPER_TRIANGLE ?  //  {true, false, false, false, false, true},  // can I be a FULL, DIAG, SYMMETRIC, LOWER_TRIANGLE, UPPER_TRIANGLE ?  //  {true, false, false, false, false, true},  // can J be a FULL, DIAG, SYMMETRIC, LOWER_TRIANGLE, UPPER_TRIANGLE ?  //  {true, true, true, true, true, true},  // can K be a FULL, DIAG, SYMMETRIC, LOWER_TRIANGLE, UPPER_TRIANGLE ?  //  {true, false, true, false, false, true},  // can L be a FULL, DIAG, SYMMETRIC, LOWER_TRIANGL, UPPER_TRIANGLEE ?  //  {true, false, false, true, false, true},  // can M be a FULL, DIAG, SYMMETRIC, LOWER_TRIANGLE, UPPER_TRIANGLE ?  //  {true, false, false, false, true, true},  // can N be a FULL, DIAG, SYMMETRIC, LOWER_TRIANGLE, UPPER_TRIANGLE ?  //  {true, false, false, false, false, true},  // can O be a FULL, DIAG, SYMMETRIC, LOWER_TRIANGLE, UPPER_TRIANGLE ?  //  {true, false, false, false, false, true},  // can P be a FULL, DIAG, SYMMETRIC, LOWER_TRIANGLE, UPPER_TRIANGLE ?  //  {true, false, false, false, false, true}};// is the matrix diagonal?//boolean MMAT_IS_DIAGONAL_RES [MMAT_NUM_MATS_TOTAL] = {  // can A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P be a DIAG?  //  false, true, false, false, false, false, false, false,  false, true, false, false, false, false, false, false};// is the matrx symmetric?//boolean MMAT_IS_SYMMETRIC_RES [MMAT_NUM_MATS_TOTAL] = {  // can A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P be a SYMMETRIC?  //  false, true, true, false, false, false, false, false,  false, true, true, false, false, false, false, false};// is the matrix singular?//boolean MMAT_IS_SINGULAR_RES[MMAT_NUM_MATS_TOTAL] = {  // is A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P square?  //  false, false, false, false, false, true, false, false,  false, false, false, false, false, true, false, false};// is the matrix lower_triangle?//boolean MMAT_IS_LOWERTRIANGULAR_RES [MMAT_NUM_MATS_TOTAL] = {  // can A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P be a LOWER_TRIANGLE?  //  false, true, false, true, false, false, false, false,  false, true, false, true, false, false, false, false};// is the matrix upper_triangle?//boolean MMAT_IS_UPPERTRIANGULAR_RES [MMAT_NUM_MATS_TOTAL] = {  // can A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P be a UPPER_TRIANGLE?  //  false, true, false, false, true, false, false, false,  false, true, false, false, true, false, false, false};double MMAT_IDENTITY_MATRICES [MMAT_MAT_SIZE] = {  // a full 4x4 identity matrix  //  4, 4,    1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1,           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};double MMAT_ORTHOGONAL_MATRICES [MMAT_MAT_SIZE] = {  // a full 4x4 orthogonal matrix  //  4, 4,    1, 0, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1,           0, 0, 0, 0, 0,  0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0};// is the type possible?//boolean MMAT_CHANGE_TYPE_RES [MMAT_NUM_MATS_TOTAL] [MMAT_NUM_TYPES] = {  // can A be a FULL, DIAG, SYMMETRIC, LOWER_TRIANGLE, UPPER_TRIANGLE, SPARSE ?  //  {true, false, false, false, false, true},  // can B be a FULL, DIAG, SYMMETRIC, LOWER_TRIANGLE, UPPER_TRIANGLE, SPARSE ?  //  {true, true, true, true, true, true},  // can C be a FULL, DIAG, SYMMETRIC, LOWER_TRIANGL, UPPER_TRIANGLEE, SPARSE ?  //  {true, false, true, false, false, true},  // can D be a FULL, DIAG, SYMMETRIC, LOWER_TRIANGLE, UPPER_TRIANGLE, SPARSE ?  //  {true, false, false, true, false, true},  // can E be a FULL, DIAG, SYMMETRIC, LOWER_TRIANGLE, UPPER_TRIANGLE, SPARSE ?  //  {true, false, false, false, true, true},  // can F be a FULL, DIAG, SYMMETRIC, LOWER_TRIANGLE, UPPER_TRIANGLE, SPARSE ?  //  {true, false, false, false, true, true},  // can G be a FULL, DIAG, SYMMETRIC, LOWER_TRIANGLE, UPPER_TRIANGLE, SPARSE ?  //  {true, false, false, false, false, true},  // can H be a FULL, DIAG, SYMMETRIC, LOWER_TRIANGLE, UPPER_TRIANGLE, SPARSE ?  //  {true, false, false, false, false, true},  // can I be a FULL, DIAG, SYMMETRIC, LOWER_TRIANGLE, UPPER_TRIANGLE, SPARSE ?  //  {true, false, false, false, false, true},  // can J be a FULL, DIAG, SYMMETRIC, LOWER_TRIANGLE, UPPER_TRIANGLE, SPARSE ?  //  {true, true, true, true, true, true},  // can K be a FULL, DIAG, SYMMETRIC, LOWER_TRIANGL, UPPER_TRIANGLEE, SPARSE ?  //  {true, false, true, false, false, true},  // can L be a FULL, DIAG, SYMMETRIC, LOWER_TRIANGLE, UPPER_TRIANGLE, SPARSE ?  //  {true, false, false, true, false, true},  // can M be a FULL, DIAG, SYMMETRIC, LOWER_TRIANGLE, UPPER_TRIANGLE, SPARSE ?  //  {true, false, false, false, true, true},  // can N be a FULL, DIAG, SYMMETRIC, LOWER_TRIANGLE, UPPER_TRIANGLE, SPARSE ?  //  {true, false, false, false, true, true},  // can O be a FULL, DIAG, SYMMETRIC, LOWER_TRIANGLE, UPPER_TRIANGLE, SPARSE ?  //  {true, false, false, false, false, true},  // can P be a FULL, DIAG, SYMMETRIC, LOWER_TRIANGLE, UPPER_TRIANGLE, SPARSE ?  //  {true, false, false, false, false, true},};// test nextZero result//double MMAT_NEXT_ZERO_ARG[MMAT_NEXT_ZERO_SIZE] = {  // start position  //  1, 0,};double MMAT_NEXT_ZERO_RES[MMAT_NUM_MATS_TOTAL * 2] = {  // A, row and column index  //  -1, -1,  // B, row and column index  //  1, 2,  // C, row and column index  //  -1, -1,  // D, row and column index  //  1, 2,  // E, row and column index  //  2, 0,  // F, row and column index  //  -1, -1,  // G, row and column index  //  -1, -1,  // H, row and column index  //  -1, -1,  // I, row and column index  //  -1, -1,  // J, row and column index  //  1, 2,  // K, row and column index  //  -1, -1,  // L, row and column index  //  1, 2,  // M, row and column index  //  2, 0,  // N, row and column index  //  -1, -1,  // O, row and column index  //  -1, -1,  // P, row and column index  //  -1, -1,};// test nextNonZero result//double MMAT_NEXT_NONZERO_ARG[MMAT_NEXT_NONZERO_SIZE] = {  // start position  //  1, 1,};double MMAT_NEXT_NONZERO_RES[MMAT_NUM_MATS_TOTAL * 4] = {  // A  //  6, 1, 2, 0,  // B  //  3, 2, 2, 0,  // C  //  6, 1, 2, 0,  // D  //  3, 2, 0, 0,  // E  //  6, 1, 2, 0,  // F  //  8, 1, 2, 0,  // G  //  3, 2, 0, 0,  // H  //  9, 1, 2, 0,  // I  //  8, 1, 2, 5,  // J  //  1, 2, 2, 5,  // K  //  2, 1, 2, 4,  // L  //  6, 2, 0, 6,  // M  //  3, 1, 2, 3,  // N  //  3, 1, 2, 5,

⌨️ 快捷键说明

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