wt1d_collection.c
来自「LastWave」· C语言 代码 · 共 280 行
C
280 行
/* * collection.c * * Definition of usual wavelets. * * Copyright 1997 Centre de Recherche Paul Pascal, Bordeaux, France * Written by Nicolas Decoster. * * The author may be reached (Email) at the address * decoster@crpp.u-bordeaux.fr * * $Id: collection.c,v 1.4 1998/07/08 11:52:00 decoster Exp $ */#include "cv.h"#include "wt1d_int.h"#define SQRT_PI 1.77245385090551602729#define SQRT_2PI 2.50662827463100050241/* * For all the predefined wavelets the domains are defined as [x_min x_max], * with : * x_min : the first point that is greater than 0.000001*(max value) * x_max : the last point that is greater than 0.000001*(max value) */doublenull_fct (double x, double a){ return 0.0;}/* * Definition of the gaussian wavelet. */#define gfact 1.7#define sqrt2log10 2.14597 /* sqrt(2*log(10)) */#define geps 2.44949 /* The square root of epsilon (and error is 10^epsilon */doubled_r_gauss (double x, double a){ register double x_a = x/(a*gfact); return exp(-x_a*x_a/2);}doublef_r_gauss (double k, double a){ register double ka = k*a; return SQRT_2PI*a*exp(-ka*ka/2);}Wavelet _gaussian_ = { WAVE_REAL_REAL, &d_r_gauss, NULL, &f_r_gauss, NULL, -gfact*sqrt2log10*geps, gfact*sqrt2log10*geps, -5.44921875, 5.44921875, 1.0, 1.0};Wavelet *wt1d_gaussian_ptr = &_gaussian_;/* * Definition of the first derivative of the gaussian wavelet. */#define g1fact 2.8doubled_r_d1_gauss (double x, double a){ register double x_a = x/(a*g1fact); return x_a*exp(-x_a*x_a/2);}doublef_i_d1_gauss (double k, double a){ register double ka = k*a; return SQRT_2PI*a*ka*exp(-ka*ka/2);}Wavelet _d1_gaussian_ = { WAVE_REAL_CPLX, &d_r_d1_gauss, NULL, &null_fct, &f_i_d1_gauss, -6*g1fact, 6*g1fact, -5.76171875, 5.76171875, 1.0, 1.0};Wavelet *wt1d_d1_gaussian_ptr = &_d1_gaussian_;/* * Definition of the second derivative of the gaussian wavelet. */#define g2fact 3doubled_r_d2_gauss (double x, double a){ register double x_a = x/(a*g2fact); register double x_a2 = x_a*x_a; return (x_a2-1)*exp(-x_a2/2);}doublef_r_d2_gauss (double k, double a){ register double ka = k*a; register double ka2 = ka*ka; return -SQRT_2PI*a*ka2*exp(-ka2/2);}Wavelet _d2_gaussian_ = { WAVE_REAL_REAL, &d_r_d2_gauss, NULL, &f_r_d2_gauss, NULL, -6*g2fact, 6*g2fact, -6.09375, 6.09375, 1.0, 1.0};Wavelet *wt1d_d2_gaussian_ptr = &_d2_gaussian_;/* * Definition of the third derivative of the gaussian wavelet.*/#define g3fact 3.2doubled_r_d3_gauss (double x, double a){ register double x_a = x/(a*g3fact); register double x_a2 = x_a*x_a; return -x_a*(3-x_a2)*exp(-x_a2/2);}doublef_i_d3_gauss (double k, double a){ register double ka = k*a; register double ka2 = ka*ka; return -SQRT_2PI*a*ka*ka2*exp(-ka2/2);}Wavelet _d3_gaussian_ = { WAVE_REAL_CPLX, &d_r_d3_gauss, NULL, &null_fct, &f_i_d3_gauss, -6.3*g3fact, 6.3*g3fact, -6.40625, 6.40625, 1.0, 1.0};Wavelet *wt1d_d3_gaussian_ptr = &_d3_gaussian_;/* * Definition of the fourth derivative of the gaussian wavelet. */#define g4fact 3.2doubled_r_d4_gauss (double x, double a){ register double x_a = x/(a*g4fact); register double x_a2 = x_a*x_a; return (3-6*x_a2+x_a2*x_a2)*exp(-x_a2/2);}doublef_r_d4_gauss (double k, double a){ register double ka = k*a; register double ka2 = ka*ka; return SQRT_2PI*a*ka2*ka2*exp(-ka2/2);}Wavelet _d4_gaussian_ = { WAVE_REAL_REAL, &d_r_d4_gauss, NULL, &f_r_d4_gauss, NULL, -6.4*g4fact, 6.4*g4fact, -6.71875, 6.71875, 1.0, 1.0};Wavelet *wt1d_d4_gaussian_ptr = &_d4_gaussian_;/* * Definition of the Morlet wavelet. */#define OMEGA 5.336446doubled_r_morlet (double x, double a){ register double x_a = x/a; return cos(OMEGA*x_a)*exp(-x_a*x_a/2);}doubled_i_morlet (double x, double a){ register double x_a = x/a; return sin(OMEGA*x_a)*exp(-x_a*x_a/2);}doublef_r_morlet (double k, double a){ register double ka = (k*a-OMEGA); return SQRT_2PI*a*exp(-ka*ka/2);}Wavelet _morlet_ = { WAVE_CPLX_REAL, &d_r_morlet, &d_i_morlet, &f_r_morlet, NULL, -5.26, 5.26, -0.01, 10.57, 1.0, 1.0};Wavelet *wt1d_morlet_ptr = &_morlet_;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?