This is the mail archive of the gsl-discuss@sources.redhat.com mailing list for the GSL project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 hi (finally) here is the new version of the discrete wavelet transform. i incorporated (most) of your comments. here are the details: (1) i got rid of all gsl_vector and gsl_matrix stuff internally. the routines now use strided arrays. (2) workspace is now allocated outside by separate calls and passed on to the dwt routines. gsl_wavelet_workspace_allocate() gsl_workspace_free() (3) the api now now makes use of strided arrays. (4) coefficients for the wavelet are now from the original publications. i give the same number of digits as in the constants defined in gsl_math.h. calculations have been performed in mathematica. (note: i have not yet found time to check beylkins and coiflets, i removed them for now). (5) i changed the gsl_wavelet structure. now only pointer are assigned during initialization (is this the way you had in mind?). additions / further changes (1) i changed the gsl_wavelet structure in a way that biorthogonal wavelets can be implemented. these need two sets of filter coefficients (see bspline.c). for the orthogonal case (haar.c and daubechies.c) the second set just duplicates the first one. (2) i clarified the problem i had with Th and Tv. according to an email exchange with paul addison it is due to a different convention of horizontal / vertical. this means that we both get identical results. (3) test_1D and test_2D do some more extensive tests. still i do not know what errors / differences between original data and data that has been transformed forward and backward i should expect. the differences look ok to me. (4) there are two different ways to perform the 2D transformation. naming conventions seem to differ. i found standart versus non-standart and rectangular versus square. in the standard case you do a complete 1D transformation on each row and then on each column. in the non-standart case you only do one step of the transform on both, rows and columns. you then continue on the submatrix that contains the "smoothing" in both directions (size N/2 by N/2). maybe you will have to look at the code to see what i mean. anyway i implemented both (_2D and _2Dns). i did not change: (1) i still include a api using gsl_vector for the 1D case. this is a duplication like in gsl_sort which provides both interfaces, array and vector. (2) i kept the 2D case. i think it is essential because a major use of wavelets is denoising, especially images and the 2D transform is really simple. (3) i also duplicated the api in the 2D case. it now includes both, strided arrays and gsl_matrix respectively. (i used size1, size2, tda in the 2D case to explicitly check for square matrices. remaining question: dwt.c line 238 ff (standart dwt) you will realize that the if-then-else part strictly speaking is not necessary. it is only here the do the "exact" backtransform, i.e. columns and then rows. from a point of numerics, is there a rule / is it known if this is better? i hope this now betters suits gsl standarts. if you still feel unhappy about the vector and matrix api, do not hesit to remove them. the 2D case, however, looks essential to me (did you have something particular in mind, when you first rejected it?). - -- Dr. Ivo Alxneit Laboratory for Solar Technology phone: +41 56 310 4092 CH-5232 Villigen fax: +41 56 310 2624 Paul Scherrer Institute http://solar.web.psi.ch Switzerland gnupg key: 0x515E30C7 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQFAeZdOAd7CE1FeMMcRAmUlAJ4tKIBumPiQz1SAeMm6sVgzKLi2UgCfWSUO OqSYF7+HoW0h8BPhK+P/1O8= =hpvC -----END PGP SIGNATURE-----
Attachment:
gsl_wavelet.tar.gz
Description: application/tgz
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |