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

📄 kern_05.cc

📁 这是一个从音频信号里提取特征参量的程序
💻 CC
字号:
// file: $isip/class/algo/Kernel/kern_05.cc// version: $Id: kern_05.cc,v 1.3 2002/07/26 16:36:47 hamaker Exp $//// isip include files//#include "Kernel.h"// method: compute//// arguments://  float& value: (output) return value of the kernel evaluation//  const VectorFloat& x: (input) first operand//  const VectorFloat& y: (input) second operand//// return: a boolean value indicating status//// this method applies the specified kernel on the input vectors//boolean Kernel::compute(float& value_a, const VectorFloat& x_a,			const VectorFloat& y_a) {  // check whether we need to initialize  //  if (!is_valid_d) {    init();  }  // branch on the algorithm  //  if (algorithm_d == LINEAR) {    return computeLinear(value_a, x_a, y_a);  }  else if (algorithm_d == POLYNOMIAL) {    return computePolynomial(value_a, x_a, y_a);  }    else if (algorithm_d == RBF) {    return computeRBF(value_a, x_a, y_a);  }    else if (algorithm_d == SIGMOID) {    return computeSigmoid(value_a, x_a, y_a);  }      // error: unknown algorithm  //  else {    return Error::handle(name(), L"compute", ERR_UNKALG, __FILE__, __LINE__);  }}// method: compute//// arguments://  double& value: (output) return value of the kernel evaluation//  const VectorDouble& x: (input) first operand//  const VectorDouble& y: (input) second operand//// return: a boolean value indicating status//// this method applies the specified kernel on the input vectors//boolean Kernel::compute(double& value_a, const VectorDouble& x_a,			const VectorDouble& y_a) {  // check whether we need to initialize  //  if (!is_valid_d) {    init();  }  // branch on the algorithm  //  if (algorithm_d == LINEAR) {    return computeLinear(value_a, x_a, y_a);  }  else if (algorithm_d == POLYNOMIAL) {    return computePolynomial(value_a, x_a, y_a);  }    else if (algorithm_d == RBF) {    return computeRBF(value_a, x_a, y_a);  }    else if (algorithm_d == SIGMOID) {    return computeSigmoid(value_a, x_a, y_a);  }      // error: unknown algorithm  //  else {    return Error::handle(name(), L"compute", ERR_UNKALG, __FILE__, __LINE__);  }}// method: computeLinear//// arguments://  float& value: (output) return value of the kernel evaluation//  const VectorFloat& x: (input) first operand//  const VectorFloat& y: (input) second operand//// return: a boolean value indicating status//// this method applies the linear kernel on the input vectors//    value = (x . y)//boolean Kernel::computeLinear(float& value_a, const VectorFloat& x_a,			      const VectorFloat& y_a) {  // compute the final result  //  value_a = x_a.dotProduct(y_a);  // exit gracefully  //  return true;}// method: computeLinear//// arguments://  double& value: (output) return value of the kernel evaluation//  const VectorDouble& x: (input) first operand//  const VectorDouble& y: (input) second operand//// return: a boolean value indicating status//// this method applies the linear kernel on the input vectors//    value = (x . y)//boolean Kernel::computeLinear(double& value_a, const VectorDouble& x_a,			      const VectorDouble& y_a) {  // compute the final result  //  value_a = x_a.dotProduct(y_a);  // exit gracefully  //  return true;}// method: computePolynomial//// arguments://  float& value: (output) return value of the kernel evaluation//  const VectorFloat& x: (input) first operand//  const VectorFloat& y: (input) second operand//// return: a boolean value indicating status//// this method applies the polynomial kernel on the input vectors//    value = (x . y + 1) ^ p// where 'p' is constants_d[0] in this class.//boolean Kernel::computePolynomial(float& value_a, const VectorFloat& x_a,				  const VectorFloat& y_a) {  // set the scale parameter  //  float p = constants_d(0);    // compute the polynomial kernel  //  value_a = Integral::pow((x_a.dotProduct(y_a) + 1.0), p);  // exit gracefully  //  return true;}// method: computePolynomial//// arguments://  double& value: (output) return value of the kernel evaluation//  const VectorDouble& x: (input) first operand//  const VectorDouble& y: (input) second operand//// return: a boolean value indicating status//// this method applies the polynomial kernel on the input vectors//    value = (x . y + 1) ^ p// where 'p' is constants_d[0] in this class.//boolean Kernel::computePolynomial(double& value_a, const VectorDouble& x_a,				  const VectorDouble& y_a) {  // set the scale parameter  //  double p = constants_d(0);    // compute the polynomial kernel  //  value_a = Integral::pow((x_a.dotProduct(y_a) + 1.0), p);  // exit gracefully  //  return true;}// method: computeRBF//// arguments://  float& value: (output) return value of the kernel evaluation//  const VectorFloat& x: (input) first operand//  const VectorFloat& y: (input) second operand//// return: a boolean value indicating status//// this method applies the radial basis function kernel on the input vectors//    value = exp(-gamma * ((x . x) - 2 * (x . y) + (y . y))// where 'gamma' is constants_d[0] in this class.//boolean Kernel::computeRBF(float& value_a, const VectorFloat& x_a,			   const VectorFloat& y_a) {  static VectorFloat tmp;  tmp.sub(x_a, y_a);  float value = tmp.sumSquare();    // set the scale parameter  //  float gamma = constants_d(0);    // compute the rbf kernel  //  //  value_a = Integral::exp(-gamma * (x_a.dotProduct(x_a) -  //				    2 * x_a.dotProduct(y_a) +  //				    y_a.dotProduct(y_a)));  value_a = Integral::exp(-gamma * value);  // exit gracefully  //  return true;}// method: computeRBF//// arguments://  double& value: (output) return value of the kernel evaluation//  const VectorDouble& x: (input) first operand//  const VectorDouble& y: (input) second operand//// return: a boolean value indicating status//// this method applies the radial basis function kernel on the input vectors//    value = exp(-gamma * ((x . x) - 2 * (x . y) + (y . y))// where 'gamma' is constants_d[0] in this class.//boolean Kernel::computeRBF(double& value_a, const VectorDouble& x_a,			   const VectorDouble& y_a) {  static VectorDouble tmp;  tmp.sub(x_a, y_a);  double value = tmp.sumSquare();    // set the scale parameter  //  double gamma = constants_d(0);    // compute the rbf kernel  //  //  value_a = Integral::exp(-gamma * (x_a.dotProduct(x_a) -  //				    2 * x_a.dotProduct(y_a) +  //				    y_a.dotProduct(y_a)));  value_a = Integral::exp(-gamma * value);  // exit gracefully  //  return true;}// method: computeSigmoid//// arguments://  float& value: (output) return value of the kernel evaluation//  const VectorFloat& x: (input) first operand//  const VectorFloat& y: (input) second operand//// return: a boolean value indicating status//// this method applies the sigmoid kernel on the input vectors//    value = tanh(kappa * (x . y) + delta)// where 'kappa' is constants_d[0] and 'delta' is constants_d[1] in this// class.//boolean Kernel::computeSigmoid(float& value_a, const VectorFloat& x_a,			       const VectorFloat& y_a) {  // set the scale parameter  //  float kappa = constants_d(0);  float delta = constants_d(1);    // compute the sigmoid kernel  //  value_a = Integral::tanh(kappa * x_a.dotProduct(y_a) + delta);  // exit gracefully  //  return true;}// method: computeSigmoid//// arguments://  double& value: (output) return value of the kernel evaluation//  const VectorDouble& x: (input) first operand//  const VectorDouble& y: (input) second operand//// return: a boolean value indicating status//// this method applies the sigmoid kernel on the input vectors//    value = tanh(kappa * (x . y) + delta)// where 'kappa' is constants_d[0] and 'delta' is constants_d[1] in this// class.//boolean Kernel::computeSigmoid(double& value_a, const VectorDouble& x_a,			       const VectorDouble& y_a) {  // set the scale parameter  //  double kappa = constants_d(0);  double delta = constants_d(1);    // compute the sigmoid kernel  //  value_a = Integral::tanh(kappa * x_a.dotProduct(y_a) + delta);  // exit gracefully  //  return true;}

⌨️ 快捷键说明

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