📄 readme
字号:
Contents: I. Objective II. Directory Structure III. Data Structure IV. Getting Started V. Customizing VI. Access and InstallationI. ObjectiveAtomizer is a package of MATLAB routines for atomic decomposition of1-d signals in various dictionaries. The atomic decompositiontechniques include basis pursuit, the method of frames, bestorthogonal basis method for wavelet/cosine packets, and matchingpursuit. Atomizer mainly supports dictionaries with fast analysis andfast synthesis operators, such as diracs, heavisides, discretecosines, discrete sines, wavelets, stationary wavelets, quadraticsplines, wavelet packets and cosine packets, or any combination of theabove. Since Atomizer is designed in an object-oriented fashion, onecan easily extend it to decompose in other dictionaries (seeV. Customizing).Decomposition of signals into overcomplete dictionaries is not unique.Basis pursuit chooses the representation with minimum $l^1$ norm ofcoefficients. The method of frames selects the representation withminimum $l^2$ norm of coefficients. Matching pursuit is a stepwisegreedy algorithm, a strategy that selects an atom with the biggestcorrelation with the residual. The best orthogonal basis method isspecially designed for wavelet packets and cosine packets. It findsthe best orthogonal basis representation by minimizing an additiveentropy measure of coefficients.All the four methods can be accommodated to denoising signals in whitenoise. Basis pursuit denoising is a $l^1$ penalizing least squarescheme. Method-of-frames denoising is a $l^2$ penalizing least squarescheme. Matching pursuit denoising runs matching pursuit until thecoefficient of the selected atom is below a certain threshold.Specially designed for wavelet packets and cosine packets, bestorthogonal basis denoising is a thresholding scheme in the bestorthogonal basis chosed by minimizing a special additive entropy.Basis pursuit can be reformulated as a linear program in standardform. Because of that connection, Atomizer has two algorithms forbasis pursuit: BP-Interior and BP-Simplex. Designed for dictionarieswith fast analysis and fast synthesis operators, BP-Interiorimplements a primal-dual logarithmic barrier interior point algorithmwith a conjugate gradients solver for linear equations arising ininterior point algorithm iterations. BP-Simplex is a simplex method,where one needs to provide dictionary matrices. Similarly, basispursuit denoising can be reformulated as a quadratic program instandard form, and Atomizer has two implementations, namelyBPDeNoise-Interior and BPDeNoise-Simplex. Atomizer implements themethod of frames by a conjugate gradients solver.In some examples, basis pursuit exhibits several advantages over themethod of frames, matching pursuit and best orthogonal basis,including better sparsity, super-resolution and better stability. Thefull complexity for solving a linear program is $O(n^3.5)$. Here we donot attempt to solve the basis pursuit criterion precisely, instead,we only attempt to get approximate optima (See V. Customing fordetails). As a result, the complexity of BP-Interior is $C_{BP} n\log(n)$, where $C_{BP}$ is tipically $50$. The complexity for themethod of frames and the best orthogonal basis method are $O(n\logn)$. The complexity of matching pursuit is $C_{MP} n \log(n)$,where $C_{MP}$ is the number of atoms selected by matching pursuit.One can get an overview of the methodology from the article "AtomicDecomposition by Basis Pursuit" (Chen, Donoho and Saundershttp://www-stat.stanford.edu/~Atomizer). One can also find theredetailed discussion and references to the method of frames, matchingpursuit and the best orthogonal basis method. Atomizer has been used as a basis for the authors' research on basispursuit, and may be used to reproduce their published articles, andto redo their figures with variations in parameters.Atomizer is available free of charge over the Internet by WWWaccess; instructions are given below.II. Directory StructureAtomizer contains about 50 files, consisting of .m files, .mex files,and data sets. Atomizer has the following subdirectories: Datasets/ - Data for use with Atomizer DeNoising/ - DeNoising techniques: MOFDN, BOBDN, MPDN and BPDN Decomposition/ - Atomic decomposition techniques: MOF, BOB, MP and BP Dictionaries/ - Fast Analysis/Synthesis routines for various dictionaries Display/ - Displaying tools for representation in various dictionaries Documentation/ - Installation guide MexSource/ - C source files for .mex files Scripts/BP/ - Scripts reproducing the figures in the article 'Atomic Decomposition by Basis Pursuit' Scripts/Thesis/ - Scripts reproducing the figures in the Ph.D. thesis 'Basis Pursuit' Scripts/Tutor/ - Tutoring ScriptsEach subdirectory has a file Contents.m, which explains the files inthat subdirectory. Each file has a head of self-documentation.The Decomposition/ subdirectory contains routines performing atomicdecomposition of 1-d signals: BP_Interior (Basis Pursuit), MOF (theMethod of Frames), MP (Matching Pursuit) OMP (Orthogonal MatchingPursuit) and BOB (Best Orthogonal Basis). We also have correpondingroutines for dictionaries without fast algorithms: BP_Simplex,MOF_Matrix, MP_Matrix and OMP_Matrix (One needs to allocate memoryfor the whole dictionary).The DeNoising/ subdirectory consists of routines implementing atomicdecomposition denoising techinques for signals with additive whitenoise: BPDN_Interior (Basis Pursuit DeNoising), MOFDN (MOF DeNoising)and MPDN (Matching Pursuit DeNoising).The Dictionaries/ subdirectory contains the fast analysis and fastsynthesis routines for various dictionaries mentioned above, as wellas routines defining the LIST data structures for accessing mixturedictionaries. FastA and FastS allow an object-oriented way foracessing analysis and synthesis operators for all the dictinariesimplemented in AtomizerOne should store the LSSOL simplex code in the LSSOL/ subdirectory.The Scripts/Tutor subdirectory provides tutorial scripts for one to learnhow to use the major atomic decomposition routines in Atomizer.The Scripts/BP subdirectory provides scripts for reproducing all thefigures in the article 'Atomic Decomposition by Basis Pursuit'. Onecan also run the same computing enviorment on his own signals, or tunethe optimization parameters by simply modifying these scripts. Webelieve that one can get a good understanding of Atomizer by studyingthese scripts.The Scripts/Thesis subdirectory provides scripts for reproducing all thefigures and tables in the Ph.D. thesis 'Basis Pursuit'.The MexSource/ subdirectory contains all the C source files to compile the mexfiles in Atomizer. According to our experience, mex files increasethe computation speed at least 10 times on Unix machines.One can use the routine InputSignal in Dataset/ subdirectory toproduce the synthesized signals, or access datasets provided inAtomizer.III. Data StructuresHere we discuss the data structures for signals, coefficients anddictionaries ($s = \Phi \alpha$) in Atomizer.1-d signals are represented, preferably, as n-by-1 matrices (i.e. n = 2^J).Atomic decompositions of 1-d signals are specified by coefficients.Coefficients are represented as n-by-1 matrices.A dictionary is specified by the following 4 arguments: NameOfDict,par1, par2, par3. NameOfDict is the name of the dictionary; it is astring. par1, par2, par3 are the parameters associated with thedictionary; they are numbers or vectors. If a dictionary has less thanthree parameters, one can simply assign the unused parameters to 0, oranything. E.g. (NameOfDict = 'PBS', par1 = log2(n), par2 = qmf, par3 =dqmf) specifies a periodized-biorthogonal-symmetric waveletdictionary, where n is the signal length; qmf and dqmf are vectors ofquadrature mirror filters. (NameOfDict = 'DCT', par1 = 4, par2 = 0,par3 = 0) would specify a discrete cosine dictionary 4 times finer infrequency than the standard frequency resolution (pi / n). We give alist of dictionaries implemented in Atomizer with their (NameOfDict,par1, par2, par3) at the end of this reference.Atomizer uses a list data structure to represent compound dictionaries,which are combinations of the standard implemented dictionaries. In thiscase (NameOfDict, par1, par2, par3) are all lists. For example, ifNameOfDict = List(N^1, N^2), par1 = List(p1^1, p1^2), par2 = List(p2^1, p2^2),par3 = List(p3^1, p3^2), then (NameOfDict, par1, par2, par3) representsthe combined dictionary of (N^1, p1^1, p2^1, p3^1) and (N^2, p1^2, p2^2,p3^2).One can use routine MakeList to make a list of any number of vectors, or alist of any number of strings.Because of the convenient data structure for dictionaries, allthe atomic decomposition techniques in Atomizer are implementedin a object-oriented way, in the sense that one can do atomicdecomposition in a certain dictionary by simply supplying thethe four dictionary arguments (NameOfDict, par1, par2, par3).
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -