LinearConstraint::LinearConstraint(const Matrix& A, const ColumnVector& b,
                                   const bool rowFlag):
    numOfCons_( A.Nrows() ), numOfVars_( A.Ncols() ), nnzl_(0), nnzu_(0),
    A_(A), Ax_( A.Nrows() ), lower_( A.Nrows() ), upper_( A.Nrows() ), 
    cvalue_( A.Nrows()), cviolation_( A.Nrows() ),
    constraintMappingIndices_(0), stdForm_(rowFlag)
    {
      int i;

      cvalue_  = 1.0e30; cviolation_ = 0.0;
      if( stdForm_ ){
        lower_ = b;
        upper_ = MAX_BND;
        for(i = 1; i <= numOfCons_; i++){
            if (lower_(i) > -BIG_BND){
	        constraintMappingIndices_.append(i);
	        nnzl_++;
            }
	}
      }
      else{
        upper_ = b;
	lower_ = MIN_BND; 
        for(i = 1; i <= numOfCons_; i++){
            if (upper_(i) < BIG_BND){
	        constraintMappingIndices_.append(i);
	        nnzu_++;
            }
	}
      }

      numOfCons_ = nnzl_ + nnzu_;
   }
LinearConstraint::LinearConstraint(const Matrix& A, const ColumnVector& b):
    numOfCons_( A.Nrows() ), numOfVars_( A.Ncols() ), nnzl_(0), nnzu_(0),
    A_(A), Ax_( A.Nrows() ), lower_( b ), upper_( b ), 
    cvalue_( A.Nrows() ), cviolation_( A.Nrows() ),
    constraintMappingIndices_(0), stdForm_(true)
    {
       cvalue_ = 1.0e30; cviolation_ = 0.0;
       for(int i = 1; i <= numOfCons_; i++){
          if(lower_(i) > -BIG_BND ){
             constraintMappingIndices_.append(i);
             nnzl_++;
         }
       }
       numOfCons_ = nnzl_;
     }
示例#3
0
void 
MFCC::init()
{
  unsigned int i,j;
  unsigned int chan;
  
  if (inSize_ != DEFAULT_WIN_SIZE) 
    {
      cerr << "MFCC::init warning inSize_ != 512\n" << endl ;
    }
  
  // Initialize frequency boundaries for the filters 
  freqs_.create(42);
  lowestFrequency_ = 133.3333f;
  linearFilters_ = 13;
  linearSpacing_ = 66.66666f;
  logFilters_ = 27;
  logSpacing_ = 1.0711703f;
  
  totalFilters_ = linearFilters_ + logFilters_;
  
  lower_.create(totalFilters_);
  center_.create(totalFilters_);
  upper_.create(totalFilters_);
  triangle_heights_.create(totalFilters_);

  // Linear filter boundaries
  for (i=0; i< linearFilters_; i++)
    freqs_(i) = lowestFrequency_ + i * linearSpacing_;

  // Logarithmic filter boundaries  
  float first_log = freqs_(linearFilters_-1);
  for (i=1; i<=logFilters_+2; i++)
    {
      freqs_(linearFilters_-1+i) = first_log * pow(logSpacing_, (float)i);
    }  
 
  // Triangles information
  for (i=0; i<totalFilters_; i++)
    lower_(i) = freqs_(i);
  
  for (i=1; i<= totalFilters_; i++)
    center_(i-1) = freqs_(i);
  
  for (i=2; i<= totalFilters_+1; i++)
    upper_(i-2) = freqs_(i);
  
  for (i=0; i<totalFilters_; i++)
    triangle_heights_(i) = 2.0 / (upper_(i) - lower_(i));
 
  fftSize_ = 512;
  samplingRate_ = 22050;
  fftFreqs_.create(fftSize_);
  cepstralCoefs_ = 13;
  
  for (i=0; i< fftSize_; i++)
    fftFreqs_(i) = (float)i / (float)fftSize_ * (float)samplingRate_;
  
  mfccFilterWeights_.create(totalFilters_, fftSize_);
  mfccDCT_.create(cepstralCoefs_, totalFilters_);
  
  // Initialize mfccFilterWeights

  
  for (chan = 0; chan < totalFilters_; chan++)
    for (i=0; i< fftSize_; i++)
      {
	if ((fftFreqs_(i) > lower_(chan))&& (fftFreqs_(i) <= center_(chan)))
	  {
	    mfccFilterWeights_(chan, i) = triangle_heights_(chan) *
	      ((fftFreqs_(i) - lower_(chan))/(center_(chan) - lower_(chan)));
	  }
	if ((fftFreqs_(i) > center_(chan)) && (fftFreqs_(i) <= upper_(chan)))
	  {
	    mfccFilterWeights_(chan, i) = triangle_heights_(chan) *
	      ((upper_(chan) - fftFreqs_(i))/(upper_(chan) - center_(chan)));
	  }
      }

  // Initialize MFCC_DCT
  float scale_fac = 1.0/ sqrt((double)(totalFilters_/2));
  for (j = 0; j<cepstralCoefs_; j++)
    for (i=0; i< totalFilters_; i++)
      {
	mfccDCT_(j, i) = scale_fac * cos(j * (2*i +1) * PI/2/totalFilters_);
	if (i == 0)
	  mfccDCT_(j,i) *= sqrt(2.0)/2.0;
      }  

  // Prepare feature names 
  
  featSize_ = outSize_;
  featNames_.push_back("MFCC00");
  featNames_.push_back("MFCC01");
  featNames_.push_back("MFCC02");
  featNames_.push_back("MFCC03");
  featNames_.push_back("MFCC04");
  featNames_.push_back("MFCC05");
  featNames_.push_back("MFCC06");
  featNames_.push_back("MFCC07");
  featNames_.push_back("MFCC08");
  featNames_.push_back("MFCC09");
  featNames_.push_back("MFCC10");
  featNames_.push_back("MFCC11");
  featNames_.push_back("MFCC12");

  hamming_ = new Hamming(inSize_, zeroSize_);
  magfft_ = new MagFFT(inSize_);
  windowed.create(inSize_);
  magnitude.create(inSize_/2);
  fmagnitude.create(inSize_);
  earMagnitude_.create(totalFilters_);
}