ivec sort_index(const Array1D<T>& data)
{
    int N=data.length(),i;
    ivec indexlist(N);
  
    for(i=0;i<N;i++) {
	indexlist(i)=i;
    }
    QSindex(0,N-1,indexlist,data);
    return indexlist;
}
Example #2
0
 void displaycurvalue()
 {
     if(display) // extract display name from list
     {
         char *val = indexlist(display, value-min_);
         copystring(curval, val);
         delete[] val;
     }
     else itoa(curval, value); // display number only
 }
Example #3
0
vec sqtrain(const vec &inDB, int SIZE)
{
  vec  DB(inDB);
  vec  Levels, Levels_old;
  ivec indexlist(SIZE + 1);
  int  il, im, ih, i;
  int  SIZEDB = inDB.length();
  double x;

  sort(DB);
  Levels = DB(round_i(linspace(0.01 * SIZEDB, 0.99 * SIZEDB, SIZE)));
  Levels_old = zeros(SIZE);

  while (energy(Levels - Levels_old) > 0.0001) {
    Levels_old = Levels;
    for (i = 0;i < SIZE - 1;i++) {
      x = (Levels(i) + Levels(i + 1)) / 2;
      il = 0;
      ih = SIZEDB - 1;
      while (il < ih - 1) {
        im = (il + ih) / 2;
        if (x < DB(im)) ih = im;
        else il = im;
      }
      indexlist(i + 1) = il;
    }
    indexlist(0) = -1;
    indexlist(SIZE) = SIZEDB - 1;
    for (i = 0;i < SIZE;i++) Levels(i) = mean(DB(indexlist(i) + 1, indexlist(i + 1)));
  }
  return Levels;
}