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

📄 makeonfilter_copy.m

📁 我找到的matlab的最新工具箱
💻 M
字号:
function f = MakeONFilter_copy(Type,Par)% MakeONFilter -- Generate Orthonormal QMF Filter for Wavelet Transform%  Usage%    qmf = MakeONFilter(Type,Par)%  Inputs%    Type   string, 'Haar', 'Beylkin', 'Coiflet', 'Daubechies',%           'Symmlet', 'Vaidyanathan','Battle'%    Par    integer, it is a parameter related to the support and vanishing%           moments of the wavelets, explained below for each wavelet.%% Outputs%    qmf    quadrature mirror filter%%  Description%    The Haar filter (which could be considered a Daubechies-2) was the%    first wavelet, though not called as such, and is discontinuous.%%    The Beylkin filter places roots for the frequency response function%    close to the Nyquist frequency on the real axis.%%    The Coiflet filters are designed to give both the mother and father%    wavelets 2*Par vanishing moments; here Par may be one of 1,2,3,4 or 5.%%    The Daubechies filters are minimal phase filters that generate wavelets%    which have a minimal support for a given number of vanishing moments.%    They are indexed by their length, Par, which may be one of%    4,6,8,10,12,14,16,18 or 20. The number of vanishing moments is par/2.%%    Symmlets are also wavelets within a minimum size support for a given %    number of vanishing moments, but they are as symmetrical as possible,%    as opposed to the Daubechies filters which are highly asymmetrical.%    They are indexed by Par, which specifies the number of vanishing%    moments and is equal to half the size of the support. It ranges %    from 4 to 10.%%    The Vaidyanathan filter gives an exact reconstruction, but does not%    satisfy any moment condition.  The filter has been optimized for%    speech coding.%%    The Battle-Lemarie filter generate spline orthogonal wavelet basis.%    The parameter Par gives the degree of the spline. The number of %    vanishing moments is Par+1.%%  See Also%    FWT_PO, IWT_PO, FWT2_PO, IWT2_PO, WPAnalysis%%  References%    The books by Daubechies and Wickerhauser.%if strcmp(Type,'Haar'),	f = [1 1] ./ sqrt(2);endif strcmp(Type,'Beylkin'),	f = [	.099305765374	.424215360813	.699825214057	...			.449718251149	-.110927598348	-.264497231446	...			.026900308804	.155538731877	-.017520746267	...			-.088543630623	.019679866044	.042916387274	...			-.017460408696	-.014365807969	.010040411845	...			.001484234782	-.002736031626	.000640485329	];endif strcmp(Type,'Coiflet'),	if Par==1,		f = [	.038580777748	-.126969125396	-.077161555496	...				.607491641386	.745687558934	.226584265197	];	end	if Par==2,		f = [	.016387336463	-.041464936782	-.067372554722	...				.386110066823	.812723635450	.417005184424	...				-.076488599078	-.059434418646	.023680171947	...				.005611434819	-.001823208871	-.000720549445	];	end	if Par==3,		f = [	-.003793512864	.007782596426	.023452696142	...				-.065771911281	-.061123390003	.405176902410	...				.793777222626	.428483476378	-.071799821619	...				-.082301927106	.034555027573	.015880544864	...				-.009007976137	-.002574517688	.001117518771	...				.000466216960	-.000070983303	-.000034599773	];	end	if Par==4,		f = [	.000892313668	-.001629492013	-.007346166328	...				.016068943964	.026682300156	-.081266699680	...				-.056077313316	.415308407030	.782238930920	...				.434386056491	-.066627474263	-.096220442034	...				.039334427123	.025082261845	-.015211731527	...				-.005658286686	.003751436157	.001266561929	...				-.000589020757	-.000259974552	.000062339034	...				.000031229876	-.000003259680	-.000001784985	];	end	if Par==5,		f = [	-.000212080863	.000358589677	.002178236305	...				-.004159358782	-.010131117538	.023408156762	...				.028168029062	-.091920010549	-.052043163216	...				.421566206729	.774289603740	.437991626228	...				-.062035963906	-.105574208706	.041289208741	...				.032683574283	-.019761779012	-.009164231153	...				.006764185419	.002433373209	-.001662863769	...				-.000638131296	.000302259520	.000140541149	...				-.000041340484	-.000021315014	.000003734597	...				.000002063806	-.000000167408	-.000000095158	];	endendif strcmp(Type,'Daubechies'),	if Par==4,  		f = [	.482962913145	.836516303738	...				.224143868042	-.129409522551	];	end	if Par==6, 		f = [	.332670552950	.806891509311	...				.459877502118	-.135011020010	...				-.085441273882	.035226291882	];	end	if Par==8,		f = [ 	.230377813309	.714846570553	...				.630880767930	-.027983769417	...				-.187034811719	.030841381836	...				.032883011667	-.010597401785	];	end	if Par==10,		f = [	.160102397974	.603829269797	.724308528438	...				.138428145901	-.242294887066	-.032244869585	...				.077571493840	-.006241490213	-.012580751999	...				.003335725285									];	end	if Par==12,		f = [	.111540743350	.494623890398	.751133908021	...				.315250351709	-.226264693965	-.129766867567	...				.097501605587	.027522865530	-.031582039317	...				.000553842201	.004777257511	-.001077301085	];	end	if Par==14,		f = [	.077852054085	.396539319482	.729132090846	...				.469782287405	-.143906003929	-.224036184994	...				.071309219267	.080612609151	-.038029936935	...				-.016574541631	.012550998556	.000429577973	...				-.001801640704	.000353713800					];	end	if Par==16,		f = [	.054415842243	.312871590914	.675630736297	...				.585354683654	-.015829105256	-.284015542962	...				.000472484574	.128747426620	-.017369301002	...				-.044088253931	.013981027917	.008746094047	...				-.004870352993	-.000391740373	.000675449406	...				-.000117476784									];	end	if Par==18,		f = [	.038077947364	.243834674613	.604823123690	...				.657288078051	.133197385825	-.293273783279	...				-.096840783223	.148540749338	.030725681479	...				-.067632829061	.000250947115	.022361662124	...				-.004723204758	-.004281503682	.001847646883	...				.000230385764	-.000251963189	.000039347320	];	end	if Par==20,		f = [	.026670057901	.188176800078	.527201188932	...				.688459039454	.281172343661	-.249846424327	...				-.195946274377	.127369340336	.093057364604	...				-.071394147166	-.029457536822	.033212674059	...				.003606553567	-.010733175483	.001395351747	...				.001992405295	-.000685856695	-.000116466855	...				.000093588670	-.000013264203					];	endendif strcmp(Type,'Symmlet'),	if Par==4,		f = [	-.107148901418	-.041910965125	.703739068656	...				1.136658243408	.421234534204	-.140317624179	...				-.017824701442	.045570345896					];	end	if Par==5,		f = [	.038654795955	.041746864422	-.055344186117	...				.281990696854	1.023052966894	.896581648380	...				.023478923136	-.247951362613	-.029842499869	...				.027632152958									];	end	if Par==6,  		f = [	.021784700327	.004936612372	-.166863215412	...				-.068323121587	.694457972958	1.113892783926	...				.477904371333	-.102724969862	-.029783751299	...				.063250562660	.002499922093	-.011031867509	];	end	if Par==7,		f = [	.003792658534	-.001481225915	-.017870431651	...				.043155452582	.096014767936	-.070078291222	...				.024665659489	.758162601964	1.085782709814	...				.408183939725	-.198056706807	-.152463871896	...				.005671342686	.014521394762					];	end	if Par==8, 		f = [	.002672793393	-.000428394300	-.021145686528	...				.005386388754	.069490465911	-.038493521263	...				-.073462508761	.515398670374	1.099106630537	...				.680745347190	-.086653615406	-.202648655286	...				.010758611751	.044823623042	-.000766690896	... 				-.004783458512									];	end	if Par==9,		f = [	.001512487309	-.000669141509	-.014515578553	...				.012528896242	.087791251554	-.025786445930	...				-.270893783503	.049882830959	.873048407349	...				1.015259790832	.337658923602	-.077172161097	...				.000825140929	.042744433602	-.016303351226	...				-.018769396836	.000876502539	.001981193736	];	end	if Par==10,		f = [	.001089170447	.000135245020	-.012220642630	...				-.002072363923	.064950924579	.016418869426	...				-.225558972234	-.100240215031	.667071338154	...				1.088251530500	.542813011213	-.050256540092	...				-.045240772218	.070703567550	.008152816799	...				-.028786231926	-.001137535314	.006495728375	...				.000080661204	-.000649589896					];	endend	if strcmp(Type,'Vaidyanathan'),	f = [	-.000062906118	.000343631905	-.000453956620	...			-.000944897136	.002843834547	.000708137504	...			-.008839103409	.003153847056	.019687215010	...			-.014853448005	-.035470398607	.038742619293	...			.055892523691	-.077709750902	-.083928884366	...			.131971661417	.135084227129	-.194450471766	...			-.263494802488	.201612161775	.635601059872	...			.572797793211	.250184129505	.045799334111		];endif strcmp(Type,'Battle'),	if Par == 1,           g = [0.578163    0.280931   -0.0488618   -0.0367309 ...                0.012003    0.00706442 -0.00274588 -0.00155701 ...                0.000652922 0.000361781 -0.000158601 -0.0000867523	    ];	end	if Par == 3,        	g = [0.541736    0.30683    -0.035498    -0.0778079 ...             0.0226846   0.0297468     -0.0121455 -0.0127154 ...             0.00614143 0.00579932    -0.00307863 -0.00274529 ...             0.00154624 0.00133086 -0.000780468 -0.00065562 ...	     0.000395946 0.000326749 -0.000201818 -0.000164264 ...             0.000103307	    ];	end	if Par == 5, 	g = [0.528374    0.312869    -0.0261771   -0.0914068 ...             0.0208414    0.0433544 -0.0148537 -0.0229951  ...             0.00990635 0.0128754    -0.00639886 -0.00746848 ...             0.00407882 0.00444002 -0.00258816    -0.00268646 ...             0.00164132 0.00164659 -0.00104207 -0.00101912 ...	    0.000662836 0.000635563 -0.000422485 -0.000398759 ...	    0.000269842 0.000251419 -0.000172685 -0.000159168 ...	    0.000110709 0.000101113	    ];	end        l = length(g);        f = zeros(1,2*l-1);        f(l:2*l-1) = g;        % f(1:l-1) = reverse(g(2:l));        % where reverse(x) = x(length(x):-1:1);        f(1:l-1) = g(l:-1:2);endf = f ./ norm(f);%% Copyright (c) 1993-5. Jonathan Buckheit and David Donoho%%% Part of WaveLab Version 802% Built Sunday, October 3, 1999 8:52:27 AM% This is Copyrighted Material% For Copying permissions see COPYING.m% Comments? e-mail wavelab@stat.stanford.edu%

⌨️ 快捷键说明

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