gout=gabconvexopt(g,a,M); gout=gabconvexopt(g,a,M, varagin);
g | Window function /initial point (tight case) |
a | Time shift |
M | Number of Channels |
gout | Output window |
iter | Number of iterations |
relres | Reconstruction error |
gabconvexopt(g,a,M) computes a window gout which is the optimal solution of the convex optimization problem below
Three constraints are possible:
Note: This function require the unlocbox. You can download it at http://unlocbox.sourceforge.net
The function uses an iterative algorithm to compute the approximate. The algorithm can be controlled by the following flags:
'alpha',alpha | Weight in time. If it is a scalar, it represent the weights of the entire L1 function in time. If it is a vector, it is the associated weight assotiated to each component of the L1 norm (length: Ldual). Default value is \(\alpha=0\). Warning: this value should not be too big in order to avoid the the L1 norm proximal operator kill the signal. No L1-time constraint: \(\alpha=0\) |
'beta',beta | Weight in frequency. If it is a scalar, it represent the weights of the entire L1 function in frequency. If it is a vector, it is the associated weight assotiated to each component of the L1 norm in frequency. (length: Ldual). Default value is \(\beta=0\). Warning: this value should not be too big in order to avoid the the L1 norm proximal operator kill the signal. No L1-frequency constraint: \(\beta=0\) |
'omega',omega | Weight in time of the L2-norm. If it is a scalar, it represent the weights of the entire L2 function in time. If it is a vector, it is the associated weight assotiated to each component of the L2 norm (length: Ldual). Default value is \(\omega=0\). No L2-time constraint: \(\omega=0\) |
'glike',g_l | \(g_l\) is a windows in time. The algorithm try to shape the dual window like \(g_l\). Normalization of \(g_l\) is done automatically. To use option omega should be different from 0. By default \(g_d=0\). |
'support' | Ldual Add a constraint on the support. The windows should be compactly supported on Ldual. |
'tight' | Look for a tight windows |
'dual' | Look for a dual windows (default) |
'painless' | Construct a starting guess using a painless-case approximation. This is the default |
'zero' | Choose a starting guess of zero. |
'rand' | Choose a random starting phase. |
'tol',t | Stop if relative residual error is less than the specified tolerance. |
'maxit',n | Do at most n iterations. default 200 |
'print' | Display the progress. |
'debug' | Display all the progresses. |
'quiet' | Don't print anything, this is the default. |
'fast' | Fast algorithm, this is the default. |
'slow' | Safer algorithm, you can try this if the fast algorithm is not working. Before using this, try to iterate more. |
'printstep',p | If 'print' is specified, then print every p'th iteration. Default value is p=10; |
'hardconstraint' | Force the projection at the end (default) |
'softconstaint' | Do not force the projection at the end |