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_; }
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_); }