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

📄 daubtst.c

📁 Dwt离散db小波 daubechi.c daubtst.c
💻 C
字号:
/**********************************************************************//*	tested daubechies.c					      *//**********************************************************************/#include <stdio.h>#include <stdlib.h>#include <string.h>int decomp(double *sig,int length_sig,int length_filt,double *h,double *g);int reconst(double *spec,int length_spec,int length_filt,double *h,double *g);#define N 2048void main(int argc, char *argv[]){ FILE *inout, *out; double g[8],h[8],sig[N]; int order,filtlength,i,j,dir,n; char infilename[20],outfilename[20],numva[3];/*********************************************************************//*	analysis of command line				     *//*********************************************************************/if(argc<5)	/*	missing options				*/  {fprintf(stderr,"Usage:\n");   fprintf(stderr,"daub -Iinputfile -Ooutputfile -D{1/-1} -L{1/2/3/4}\n");   fprintf(stderr,"\tinputfile\tname of the inputfile\n");   fprintf(stderr,"\toutputfile\tname of the outputfile\n");   fprintf(stderr,"\tD\t\tdirection :\t1=wavelet transform\n");   fprintf(stderr,"\t\t\t \t\t-1=inverse wavelet transform\n");   fprintf(stderr,"\tL\t\torder of wavelet 1,2,3,4\n");   exit(1);   }    for(i=1;i<argc;i++)    switch(argv[i][1])       {case 'I' : for(j=2;j<strlen(argv[i]);j++) 			infilename[j-2]=argv[i][j];                    infilename[j-2]='\0';                    break;        case 'O' :for(j=2;j<strlen(argv[i]);j++) 			outfilename[j-2]=argv[i][j];                     outfilename[j-2]='\0';                    break;        case 'D' : for(j=2;j<strlen(argv[i]);j++) numva[j-2]=argv[i][j];                    numva[j-2]='\0';                   dir=atoi(numva);                   strcpy(numva,"");;                   break;        case 'L' :for(j=2;j<strlen(argv[i]);j++) numva[j-2]=argv[i][j];                    numva[j-2]='\0';                   order=atoi(numva);                   strcpy(numva,"");                   break;       }/*****************************************************************************//*		Data input						     *//*****************************************************************************/ inout=fopen(infilename,"r"); if(inout==NULL) {fprintf(stderr,"Signal file not found\n");exit(1);}     i=0;     while(fscanf(inout,"%le",sig+i)!=EOF) i++;    n=i;/****************************************************************************//*	direct or inverse wavelet transformation			    *//****************************************************************************/if(daub_init(order,&filtlength,h,g))            {fprintf(stderr,"Filter of order %d not implemented\n");exit(1);}switch(dir)  {   case 1:              if(decomp(sig,n,filtlength,h,g))                 {fprintf(stderr,"not enough memory\n");exit(1);}            break;    case -1: if(reconst(sig,n,filtlength,h,g))                {fprintf(stderr,"not enough memory\n");exit(1);}             break;    }     out=fopen(outfilename,"w");   if(out==NULL) {fprintf(stderr,"error while opening output file\n");                       exit(1);		      }		          for(i=0;i<n;i++) fprintf(out,"%e\n",sig[i]);   fclose(out);}          	   

⌨️ 快捷键说明

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