/*! \brief save a DataMatrix as DMatrixPage */
 inline static void Save(const char *fname_, const DataMatrix &mat, bool silent) {
   std::string fname = fname_;
   utils::FileStream fs(utils::FopenCheck(fname.c_str(), "wb"));
   int magic = kMagic;
   fs.Write(&magic, sizeof(magic));
   mat.info.SaveBinary(fs);
   fs.Close();
   fname += ".row.blob";
   utils::IIterator<RowBatch> *iter = mat.fmat()->RowIterator();
   utils::FileStream fbin(utils::FopenCheck(fname.c_str(), "wb"));
   SparsePage page;
   iter->BeforeFirst();
   while (iter->Next()) {
     const RowBatch &batch = iter->Value();
     for (size_t i = 0; i < batch.size; ++i) {
       page.Push(batch[i]);
       if (page.MemCostBytes() >= kPageSize) {
         page.Save(&fbin); page.Clear();
       }
     }
   }
   if (page.data.size() != 0) page.Save(&fbin);
   fbin.Close();
   if (!silent) {
     utils::Printf("DMatrixPage: %lux%lu is saved to %s\n",
                   static_cast<unsigned long>(mat.info.num_row()),
                   static_cast<unsigned long>(mat.info.num_col()), fname_);
   }
 }
Beispiel #2
0
main(int argc, char *argv[])
{
  FILE *fileptr;
  int i,numsamps,nfft,nspc,headersize,binmin;
  float *data, *amplitude, ar, ai, arl, ail, a1, a2;
  double frequency, pmax=9.99999;

  fileptr=open_file(argv[1],"rb");

  if (!(headersize=read_header(fileptr))) {
    error_message("could not read header parameters!");
    exit(1);
  }

  numsamps=nsamples(argv[1],headersize,nbits,nifs,nchans);
  nfft=(int)pow(2.0,(double)np2(numsamps));
  nspc=nfft/2;
  data=(float *) malloc(sizeof(float)*numsamps);
  
  printf("#Reading in %d samples from file: %s...\n",numsamps,argv[1]);
  if ((read_block(fileptr,nbits,data,numsamps)) != numsamps) {
    error_message("error reading data");
  }

  printf("#Performing 2^%d point FFT...\n",np2(numsamps));
  realft(data-1,(unsigned long) nfft,1);

  printf("#Forming amplitude spectrum...\n");
  amplitude=(float *) malloc(nspc*sizeof(float));
  binmin=fbin(tsamp,nspc,1,1.0/pmax);
  ar=ai=arl=ail=a1=a2=0.0;
  for (i=0;i<nspc;i++) {
    if (i<binmin) 
      amplitude[i]=0.0;
    else {
      ar=data[2*i];
      ai=data[2*i+1];
      a1=ar*ar+ai*ai;
      a2=0.5*((ar-arl)*(ar-arl)+(ai-ail)*(ai-ail));
      amplitude[i]=(a1>a2)?a1:a2;
      arl=ar;
      ail=ai;
    }
    /*printf("%f %f\n",ffreq(tsamp,nspc,1,i+1),amplitude[i]);*/
  }
  free(data);

}
Beispiel #3
0
/*
 * Returns the path of given executable
 */
QString UnixCommand::discoverBinaryPath(const QString& binary){
  QProcess proc;
  QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
  env.insert("LANG", "C");
  env.insert("LC_MESSAGES", "C");
  proc.setProcessEnvironment(env);
  proc.start("/usr/bin/sh -c \"which " + binary + "\"");
  proc.waitForFinished();
  QString res = proc.readAllStandardOutput();

  proc.close();
  res = res.remove('\n');

  //If it still didn't find it, try "/sbin" dir...
  if (res.isEmpty()){
    QFile fbin("/sbin/" + binary);
    if (fbin.exists()){
      res = "/sbin/" + binary;
    }
  }

  return res;
}