Ejemplo n.º 1
0
void
peakView::toTable(realvec& vecTable)
{
  //resize and initialize the table (assuming the largest possible number of peaks + the header for now...)
  vecTable.create(frameMaxNumPeaks_*numFrames_+1, nbPkParameters);


  //In Table format, the 1st row is a "header row"
  vecTable(0, 0) = -1;
  vecTable(0, 1) =  fs_;
  vecTable(0, 2) =  frameSize_;
  vecTable(0, 3) =  frameMaxNumPeaks_;
  vecTable(0, 4) =  numFrames_;
  vecTable(0, 5) = -1;
  vecTable(0, pkGroup) = -2;
  for (mrs_natural i = pkGroup+1 ; i < nbPkParameters ; ++i) //i = pkGroup or i = pkGroup+1 [?]
    vecTable(0, i)=0;


  //fill the table with peak data
  mrs_natural l = 1; //l = peak index for table format (i.e. row index)
  for (mrs_natural j=0 ; j < vec_.getCols(); ++j) //j = frame index
    for (mrs_natural i=0 ; i < frameMaxNumPeaks_; ++i) //i = peak index
    {
      //just output existing peaks at each frame (i.e. freq != 0)
      if(vec_(i, j) != 0.0)
      {
        for(mrs_natural k = 0; k < nbPkParameters; k++)// k = parameter index
          vecTable(l, k) = (*this)(i, pkParameter(k), j);
        l++;
      }
    }

  //resize the table to the correct (i.e. possibly smaller)
  //number of peaks (i.e. nr of rows)

  vecTable.stretch(l, nbPkParameters);
}