FRSYNITER Iterative synthesis
Usage: f=frsyniter(F,c);
f=frsyniter(F,c,Ls);
[f,relres,iter]=frsyniter(F,c,...);
Input parameters:
F : Frame
c : Array of coefficients.
Ls : length of signal.
Output parameters:
f : Signal.
relres : Vector of residuals.
iter : Number of iterations done.
f=FRSYNITER(F,c) iteratively inverts the analysis operator of F, so
FRSYNITER always performs the inverse operation of FRANA, even
when a perfect reconstruction is not possible by using FRSYN.
[f,relres,iter]=FRSYNITER(...) additionally returns the relative
residuals in a vector relres and the number of iteration steps iter.
*Note:* If it is possible to explicitly calculate the canonical dual
frame then this is usually a much faster method than invoking
FRSYNITER.
FRSYNITER takes the following parameters at the end of the line of
input arguments:
'tol',t Stop if relative residual error is less than the
specified tolerance. Default is 1e-9 (1e-5 for single precision)
'maxit',n Do at most n iterations.
'cg' Solve the problem using the Conjugate Gradient
algorithm. This is the default.
'pcg' Solve the problem using the Preconditioned Conjugate Gradient
algorithm. Please note that preconditioning is not supported
for all frame types.
'print' Display the progress.
'quiet' Don't print anything, this is the default.
Algorithms
----------
The function uses the (Preconditioned) Conjugate Gradient algorithm
to solve the following problem:
FF*f=Fc
The preconditioning alters the equations such that
inv(M)FF*f=inv(M)Fc
Examples
--------
The following example shows how to rectruct a signal without ever
using the dual frame:
F=frame('dgtreal','gauss',10,20);
c=frana(F,bat);
[r,relres]=frsyniter(F,c,'tol',1e-14);
norm(bat-r)/norm(bat)
semilogy(relres);
title('Conversion rate of the CG algorithm');
xlabel('No. of iterations');
ylabel('Relative residual');
Url: http://ltfat.github.io/doc/frames/frsyniter.html
See also: frame, frana, frsyn, franaiter.
Package: ltfat