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

📄 uni_08.cc

📁 这是一个从音频信号里提取特征参量的程序
💻 CC
字号:
// file: $isip/class/stat/UniformModel/uni_08.cc// version: $Id: uni_08.cc,v 1.4 2002/07/05 21:16:28 parihar Exp $//// isip include files//#include "UniformModel.h"// method: getLikelihood//// arguments://  const VectorFloat& input: (input) test vector//// return: float value giving the log-likelihood of the data given the model//// this method computes the distance between the test vector and a// probability distribution that is a uniform distribution:////                1 //  p(x) = -----------------  ,  min < x < max//          Area(max - min)////                0           ,  otherwise //// the area is computed as a product of rectangular regions in// N-dimensional space.//float UniformModel::getLikelihood(const VectorFloat& input_a) {  // check if the input is within the region of support  //  long len = min_d.length();  for (long i = 0; i < len; i++) {    if ((input_a(i) < min_d(i)) || (input_a(i) > max_d(i))) {      return (float)0;    }  }        // mode: PRECOMPUTE  //  if (mode_d == PRECOMPUTE) {    // initialize    //    if (!init()) {      Error::handle(name(), L"getLikelihood", ERR, __FILE__, __LINE__);      return 0;    }    // calculate the uniform distribution weight    //    return scale_d;  }  // mode: other  //  do a normal computation  //  return initScale();}// method: getLogLikelihood//// arguments://  const VectorFloat& input: (input) test vector//// return: float value giving the log likelihood of the data given the model//// this method needs to check for a zero value before applying the log.//float UniformModel::getLogLikelihood(const VectorFloat& input_a) {  // compute the likelihood  //  float value = getLikelihood(input_a);  // check for zero  //  if (value <= 0.0) {    Error::handle(name(), L"getLogLikelihood", Error::ARG, __FILE__, __LINE__);    return 0;  }  // exit gracefully  //  return Integral::log(value);}// method: getMean//// arguments://  VectorFloat& mean: (output) mean of the uniform distribution//// return: a boolean value indicating status//// this method computes the mean of the uniform distribution:////          min + max//  mean  = ----------  ,  min < x < max//              2//boolean UniformModel::getMean(VectorFloat& mean_a) {  // check if the max is greater than min  //  long len = min_d.length();  for (long i = 0; i < len; i++) {    if (min_d(i) > max_d(i)) {      Error::handle(name(), L"getMean", ERR, __FILE__, __LINE__);      return 0;    }  }  // temporary variable  //  VectorFloat mean;  mean.setLength(len);    // compute the mean for each dimension of the distribution  //  for (long i = 0; i < len; i++) {    mean(i) = (min_d(i) + max_d(i)) / (float)2;  }        mean_a = mean;    // exit gracefully  //  return true;}// method: getCovariance//// arguments://  MatrixFloat& cov: (output) covariance of the uniform distribution//// return: a boolean value indicating status//// presently, this method computes the covariance of the uniform// distribution for one-dimension only//// for one-dimensional distribution://         square(max - min) //  var = ------------------  ,  min < x < max//               12//boolean UniformModel::getCovariance(MatrixFloat& cov_a) {  // check if the max is greater than min  //  long len = min_d.length();  for (long i = 0; i < len; i++) {    if (min_d(i) > max_d(i)) {      Error::handle(name(), L"getCovariance", ERR, __FILE__, __LINE__);      return 0;    }  }  // compute the variance if the distribution is one dimensional  //  if (len == 1) {    // temporary variable    //    MatrixFloat cov((long)1, (long)1);    VectorFloat temp;        // compute the variance for one dimensional distribution    //    temp.sub(max_d, min_d);    temp.square();    temp.div((float)12);    cov.assign(temp(0));    cov_a = cov;        }  // else error  //  else {    Error::handle(name(), L"getCovariance", ERR, __FILE__, __LINE__);  }    // exit gracefully  //  return true;}

⌨️ 快捷键说明

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