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

📄 getfilter.c

📁 该程序是用vc开发的对动态数组进行管理的DLL
💻 C
字号:
/* Copyright (c) Colorado School of Mines, 2003.*//* All rights reserved.                       *//*********************** self documentation **********************//****************************************************************************GETFILTER - GET wavelet FILTER typewaveGetfilter - Select the filter for wavelet transformwaveFreefilter - free the filter****************************************************************************Function Prototypes:waveFilter *waveGetfilter(int id);void waveFreefilter(waveFilter *filter);****************************************************************************waveGetfilter:Input:int id		filter to use		0-9	for Daubechies' wavelet		10-12 	for CoifletwaveFreefilter:Input:waveFilter *filter	the wavelet filter****************************************************************************Author:		Tong Chen, 05/18/94***************************************************************************//**************** end self doc ********************************/#include "comp.h"#ifndef NWAVETYPE#define NWAVETYPE 15#endifstatic int 	waveLen[NWAVETYPE]={2,4,6,8,10,12,14,16,18,20,6,12,18,24,30};static int 	waveIshift[NWAVETYPE]={0,0,0,0,0,0,0,0,0,0,-2,-4,-6, -8, -10};static float 	/* Daubechies' wavelets */	waveTab1[2] = {.707106781f,.707106781f},	waveTab2[4] = {0.4829629131445341f, 0.8365163037378077f,			 0.2241438680420134f, -0.1294095225512603f},	waveTab3[6] = {0.3326705529500825f, 0.8068915093110924f,			0.4598775021184914f, -0.1350110200102546f,			-0.0854412738820267f, 0.0352262918857095f},	waveTab4[8] = {0.2303778133088964f, 0.7148465705529154f,			0.6308807679298587f, -0.0279837694168599f,			-0.1870348117190931f, 0.0308413818355607f,			0.0328830116668852f, -0.0105974017850690f},	waveTab5[10] = {0.1601023979741929f, 0.6038292697971895f,			0.7243085284377726f, 0.1384281459013203f,			-0.2422948870663823f, -0.0322448695846381f,			0.0775714938400459f, -0.0062414902127983f,			-0.0125807519990820f, 0.0033357252854738f},	waveTab6[12] = {0.1115407433501095f, 0.4946238903984533f,			0.7511339080210959f, 0.3152503517091982f,			-0.2262646939654400f, -0.1297668675672625f,			0.0975016055873225f, 0.0275228655303053f,			-0.0315820393174862f, 0.0005538422011614f,			0.0047772575109455f, -0.0010773010853085f},	waveTab7[14] = {0.0778520540850037f, 0.3965393194818912f,			0.7291320908461957f, 0.4697822874051889f,			-0.1439060039285212f, -0.2240361849938412f,			0.0713092192668272f, 0.0806126091510774f,			-0.0380299369350104f, -0.0165745416306655f,			0.0125509985560986f, 0.0004295779729214f,			-0.0018016407040473f, 0.0003537137999745f},	waveTab8[16] = {0.0544158422431072f, 0.3128715909143166f,			0.6756307362973195f, 0.5853546836542159f,			-0.0158291052563823f, -0.2840155429615824f,			0.0004724845739124f, 0.1287474266204893f,			-0.017369301001809f, -0.0440882539307971f,			0.0139810279174001f, 0.0087460940474065f,			-0.0048703529934520f, -0.0003917403733770f,			0.0006754494064506f, -0.0001174767841248f},	waveTab9[18] = {0.0380779473638778f, 0.2438346746125858f,			0.6048231236900955f, 0.6572880780512736f,			0.1331973858249883f, -0.2932737832791663f,         		-0.0968407832229492f, 0.1485407493381256f,			0.0307256814793385f, -0.0676328290613279f,			0.0002509471148340f, 0.0223616621236798f,			-0.0047232047577518f, -0.0042815036824635f,			0.0018476468830563f, 0.0002303857635232f,			-0.0002519631889427f, 0.0000393473203163f},	waveTab10[20] = {0.0266700579005473f, 0.1881768000776347f,			0.5272011889315757f, 0.6884590394534363f,			0.2811723436605715f, -0.2498464243271598f,			-0.1959462743772862f, 0.1273693403357541f,			0.0930573646035547f, -0.0713941471663501f,			-0.0294575368218399f, 0.0332126740593612f,			0.0036065535669870f, -0.0107331754833007f,			0.0013953517470688f, 0.0019924052951925f,			-0.0006858566949564f, -0.0001164668551285f,			0.0000935886703202f, -0.0000132642028945f},	/* Coiflets */	waveTab11[6] = {0.038580777747887f, -0.12696912539621f,			-0.077161555495774f, 0.60749164138568f,			0.74568755893443f, 0.22658426519707f},	waveTab12[12] = { 0.016387336464f, -0.041464936782f, 			-0.067372554722f, 0.386110066823f, 			 0.812723635450f, 0.416998396426f, 			-0.076488599079f, -0.059434418647f, 			 0.023680171946f, 0.005611434819f, 			-0.001823208871f, -0.000720549445f},         waveTab13[18] = {-.0037935128643778759f, .0077825964256797869f,			    .023452696142119103f, -.065771911281431228f,			    -.061123390002955698f, .40517690240961679f,			    .79377722262562034f, .42848347637761869f,			    -.071799821619170590f, -.082301927106320283f,			    .034555027573344464f, .015880544863615901f,			    -.0090079761367322896f, -.0025745176881279692f,			    .0011175187708269618f, .00046621695982014403f,			    -.000070983302505704928f, -.000034599773197402695f},        waveTab14[24] = {.00089231366822027571f, -.001629492013110849f,			    -.0073461663276562349f, .016068943964069236f,			    .026682300155628804f, -.081266699680313054f,			    -.05607731331647195f, .41530840703043015f,			    .78223893092049879f, .43438605649146839f,			    -.066627474263000752f, -.096220442033563697f,			    .039334427122913219f, .025082261845146933f,			    -.015211731527239149f, -.005658286685946038f,			    .0037514361569249027f, .0012665619286795187f,			    -.00058902075681143784f, -.00025997455231942175f,			    .000062339033865764618f, .000031229876078043358f,			    -.0000032596804448576129f, .0000017849845586999338f},        waveTab15[30] = {-.00021208086333630681f, .0003585896772556986f,			    .0021782363048412847f, -.0041593587816039935f,			    -.010131117538045594f, .023408156761592795f,			    .028168029062141497f, -.091920010548806413f,			    -.05204316321623739f, .42156620672876544f,			    .77428960374028455f, .43799162622836413f,			    -.062035963905608969f, -.10557420870583534f,			    .041289208740734169f, .032683574283249535f,			    -.019761779011723959f, -.0091642311530462268f,			    .00676418541866332f, .0024333732092240538f,			    -.0016628637690858134f, -.00063813129615137752f,			    .00030225951979184068f, .00014054114890107723f,			    -.000041340484491956856f, -.000021315014062244917f,			    .0000037345967496715605f, .0000020638063902331633f,			    -.00000016740829374930063f, 			    -.000000095157917046829356f};static float *waveTab[NWAVETYPE] 	= {waveTab1, waveTab2, waveTab3, waveTab4, waveTab5, waveTab6,	      waveTab7, waveTab8, waveTab9, waveTab10, 	      waveTab11, waveTab12, waveTab13, waveTab14, waveTab15};waveFilter *waveGetfilter(int id)/***************************************************************************Select the filter for wavelet transform****************************************************************************id		filter to use		0-9	for Daubechies' wavelet		10-12 	for Coiflet****************************************************************************Author:		Tong Chen, 05/18/94***************************************************************************/{	waveFilter *filter;	int len, i, j;	if(id >= NWAVETYPE) return NULL;	/* allocate space for the filter */	filter = (waveFilter *)	malloc(sizeof(waveFilter));	/* assign the parameters */	filter->id = id;	len = waveLen[id];	filter->len = len;	filter->ishift = waveIshift[id];		/* allocate space for the filter coefficients */	filter->filterh = alloc1float(len);	filter->filterg = alloc1float(len);	/* get the filter coefficients */	for(i=0;i<len;i++) filter->filterh[i] = waveTab[id][i];	for(i=0,j=len-1;i<len;i++,j--) filter->filterg[i] = waveTab[id][j];	for(i=1;i<len;i+=2) filter->filterg[i] = -filter->filterg[i];	return filter;}void waveFreefilter(waveFilter *filter){	free1float(((waveFilter *)filter)->filterh);	free1float(((waveFilter *)filter)->filterg);	free(filter);}/* Test *//*main(){	int i,j;	waveFilter *filter;	for(i=0;i<10;i++){		filter = waveGetfilter(i);		fprintf(stderr,"length[%d]=%d\n",i,filter->len);		for(j=0;j<filter->len;j++){		    fprintf(stderr,"coeff[%d]=%f\n",j,filter->filterh[j]);		    fprintf(stderr,"coeff[%d]=%f\n",j,filter->filterg[j]);		}		waveFreefilter(filter);	}}*/

⌨️ 快捷键说明

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