0001
0002
0003 Created by: Salman Asif @ Georgia Tech.
0004 Email: sasif@gatech.edu
0005
0006
0007 Code website: http://users.ece.gatech.edu/~sasif/homotopy
0008 and
0009 Github repository: https://github.com/sasif/L1-homotopy
0010
0011 (let's say this is)
0012 Version 2.0 released June 2013
0013
0014 Previous versions:
0015 v1.1 release: July 2012
0016 v1.0 release: April 2009
0017
0018
0019
0020 References:
0021
0022 - M. Salman Asif and Justin Romberg, "Sparse recovery of streaming signals using L1-homotopy," preprint available at http://users.ece.gatech.edu/~sasif/ and ???
0023
0024 - M. Salman Asif, "Dynamic compressive sensing: Sparse recovery algorithms for streaming signals and video." Doctoral Thesis, Georgia Institute of Technology, 2013.
0025
0026
0027
0028 l1homotopy is a highly versatile homotopy program that can solve a variety of L1-norm minimization problems using a warm start.
0029
0030 l1homotopy.m is the main function that solves the following homotopy program:
0031
0032 minimize_x \|W x\|_1 + 1/2*\|Ax-y\|_2^2 + (1-epsilon)u'x,
0033
0034 u is defined as u = -W*sign(xh_old)-A'*(A*xh_old-y)
0035 xh_old is an arbitrary warm-start vector (or a zero vector if no warm-start is available)
0036
0037 The homotopy is solved by changing epsilon from 0 to 1 using the algorithm described in the paper and the thesis.
0038
0039
0040 Scripts for different problems are also included in this package to demonstrate the use of l1homotopy:
0041
0042 demo_BPDN -- solves LASSO/BPDN problem from scratch
0043 demo_posBPDN -- solves BPDN problem with positive sign constraint on the estimate
0044 demo_dynamicX -- updates the solution for BPDN as the signal changes
0045 demo_dynamicSeq -- updates the signal as sequential measurements are added
0046 demo_rwtL1-- solves iterative reweighting for BPDN
0047 demo_dynamicRWT -- iteratively updates weights in the L1-norm cost while estimating a time-varying signal
0048 demo_streamingLOT -- iteratively estimates a streaming signal using lapped orthogonal transform as the representation basis
0049 demo_KalmanRWT -- iteratively estimates a streaming signal that follows a linear dynamic model
0050 and more...
0051
0052
0053 You may need to compile mex codes for
0054 1. matrix-vector product of the form A_Gamma x_Gamma and A_Gamma^T y
0055 2. realnoiselet
0056 3. Wavelets
0057
0058 See compile.m for further details.
0059 Add all the folders in MATLAB path or only those that are required for each solver.
0060
0061 This code is in development stage; any comments or bug reports are very welcome.
0062
0063
0064
0065 This file is part of L1 homotopy toolbox.
0066 Copyright (C) 2013, M. Salman Asif, all rights reserved.
0067
0068 Redistribution and use of this code, with or without modification, are permitted provided that the following conditions are met:
0069
0070 The software is provided under the terms of this license strictly for academic, non-commercial, not-for-profit purposes. Redistributions of source code must retain the above copyright notice, this list of conditions (license) and the following disclaimer. The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission.
0071
0072 This software is being provided "as is", without any express or implied warranty. In particular, the authors do not make any representation or warranty of any kind concerning the merchantability of this software or its fitness for any particular purpose.
0073
0074
0075
0076
0077
0078
0079
0080 Parts of old releases
0081
0082
0083
0084
0085 Other than L1 decoding and adaptive reweighting methods, these homotopy programs can also be solved using l1homotopy.m (for the LASSO/BPDN formulation).
0086
0087
0088
0089
0090
0091
0092
0093 BPDN_homotopy_function.m
0094 BPDN_homotopy_demo.m
0095
0096
0097 DS_homotopy_function.m
0098 DS_homotopy_demo.m
0099
0100
0101
0102
0103
0104
0105 DynamicX_BPDN_function.m
0106 DynamicX_BPDN_demo.m
0107 DynamicX_BPDN_Visual_demo.m
0108
0109
0110 DynamicX_DS_function.m
0111 DynamicX_DS_demo.m
0112
0113
0114 Simulation_DynamicX_BPDN.m
0115 Simulation_DynamicX_BPDN_Pathological.m
0116 Simulation_DynamicX_BPDN_Wavelet.m
0117
0118
0119
0120
0121
0122
0123 DynamicSeq_BPDN_function.m
0124 DynamicSeq_BPDN_demo.m
0125
0126
0127 DynamicSeq_DS_function.m
0128 DynamicSeq_DS_demo.m
0129
0130
0131 Simulation_DynamicSeq_BPDN.m
0132
0133
0134
0135
0136
0137
0138 l1Decode_homotopy_fast.m
0139 l1Decode_homotopy_qr.m
0140 Simulation_l1Decode.m
0141
0142
0143 DynamicSeq_REC_function.m
0144 DynamicSeq_REC_demo.m
0145 Simulation_DynamicSeq_REC.m
0146
0147
0148
0149
0150
0151 The codes are based on iterative and adaptive reweighting methods described in the following paper:
0152 "Fast and accurate algorithms for re-weighted L1 norm minimization," by M. Salman Asif and Justin Romberg
0153
0154 More details in the readme.txt file inside the folder