/*! \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_); } }
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); }
/* * 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; }