⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tt.cpp

📁 This directory includes matlab interface of the curvelet transform using usfft. Basic functions
💻 CPP
字号:
/*    Copyright (C) 2004 Caltech   Written by Lexing Ying*/#include "fdct_usfft.hpp"#include "fdct_usfft_inline.hpp"using namespace std;using namespace fdct_usfft_ns;int optionsCreate(const char* optfile, map<string,string>& options){  options.clear();  ifstream fin(optfile); assert(fin.good());  string name;  fin>>name;  while(fin.good()) {	 char cont[100];	 fin.getline(cont, 99);	 options[name] = string(cont);	 fin>>name;  }  fin.close();  return 0;}int main(int argc, char** argv){  clock_t ck0, ck1;  srand48( (long)time(NULL) );  assert(argc==2);  //get options  map<string, string> opts;  optionsCreate(argv[1], opts);    //get input data  map<string,string>::iterator mi;    int m;  mi = opts.find("-m"); assert(mi!=opts.end());  { istringstream ss((*mi).second); ss>>m; }  int n;  mi = opts.find("-n"); assert(mi!=opts.end());  { istringstream ss((*mi).second); ss>>n; }  int nbscales;  mi = opts.find("-nbscales"); assert(mi!=opts.end());  { istringstream ss((*mi).second); ss>>nbscales; }  int nbangles_coarse;  mi = opts.find("-nbangles_coarse"); assert(mi!=opts.end());  { istringstream ss((*mi).second); ss>>nbangles_coarse; }  int ac;  mi = opts.find("-ac"); assert(mi!=opts.end());  { istringstream ss((*mi).second); ss>>ac; }    //generate mat  srand48( (long)time(NULL) );  CpxOffMat x(m,n,-m/2,-n/2);  for(int i=-m/2; i<-m/2+m; i++)	 for(int j=-n/2; j<-n/2+n; j++)		x(i,j) = cpx(drand48(), 0);    ck0 = clock();    //fdct_usfft_  vector< vector<CpxOffMat> > c; //c = Ax  fdct_usfft(m, n, nbscales, nbangles_coarse, ac, x, c);  ck1 = clock();  cout<<"FDCT_USFFT_  takes "<<double(ck1-ck0)/CLOCKS_PER_SEC<<" seconds "<<endl;  ck0 = ck1;    //afdct_usfft_  CpxOffMat s(m,n,-m/2,-n/2); //s = A*Ax  afdct_usfft(m, n, nbscales, nbangles_coarse, ac, c, s);  ck1 = clock();  cout<<"AFDCT_USFFT_ takes "<<double(ck1-ck0)/CLOCKS_PER_SEC<<" seconds "<<endl;  ck0 = ck1;    //ifdct_usfft_  CpxOffMat y(m,n,-m/2,-n/2);  ifdct_usfft(m, n, nbscales, nbangles_coarse, ac, c, y);  ck1 = clock();  cout<<"IFDCT_USFFT_ takes "<<double(ck1-ck0)/CLOCKS_PER_SEC<<" seconds "<<endl;  ck0 = ck1;    CpxOffMat e(m,n,-m/2,-n/2);  for(int i=-m/2; i<-m/2+m; i++)	 for(int j=-n/2; j<-n/2+n; j++)		e(i,j) = x(i,j) - y(i,j);  cerr<<"accuracy of inversion "<<sqrt(energy(e)/(m*n))<<endl;    //sum0, (x, x)  cpx a0 = energy(x);  //sum1, (s, x)  cpx a1(0,0);  //a1.re = 0;  a1.im = 0;  for(int i=-m/2; i<-m/2+m; i++)	 for(int j=-n/2; j<-n/2+n; j++) {		cpx sv = s(i,j);		cpx xv = x(i,j);		a1 += conj(sv)*xv;	 }  //sum2, (c, c)  cpx a2(0,0);  //a2.re = 0;  a2.im = 0;  for(int sc=0; sc<c.size(); sc++)	 for(int w=0; w<c[sc].size(); w++)		a2 += energy(c[sc][w]);  //cerr<<"x,x "<<a0<<endl;  //cerr<<"s,x "<<a1<<endl;  //cerr<<"c,c "<<a2<<endl;    return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -