# Examples

### ex1

This example illustrates the use of the `generateProblem`

function
and access to the fields in the problem structure:

>> P = generateProblem(6);

The fields accessed in this example include

`P.A`

, the operator that transforms the sparse coefficient vector into the observed signal
`P.b`

, the observed signal
`P.sizaA`

, gives the size of operator `P.A`

. This information can also be obtained using `opsize(P.A)`

.
`P.x0`

, this vector, available for certain problems, gives the ideal or desired result for sparse recovery.
`P.reconstruct`

, this function applies the sparsity basis operator to the given coefficient vector and resizes the output to the default dimensions.

The example further illustrates the use of the `classOp`

constructor function that turns an operator into a class, which makes the operator look like a general Matlab matrix.

### exOp

This example illustrates the use of Sparco operators by constructing a signal that is sparse in the Haar basis, and measured using a randomly restricted DCT:

>> p = randperm(n);
>> M = opFoG(opRestriction(n,p(1:m)), opDCT(n));
>> B = opHaar(n);
>> A = opFoG(M,B);

It then uses the SPGL1 solver to recover the sparse coefficients from the compressed measurements. It also illustrates the use of the `dottest`

function which checks if \langle Ax,y\rangle = \langle x,A^*y\rangle for a series of random vectors x and y. This function is very helpful when developing new operators.

### exGPSR

This example generates a test problem and shows two ways of invoking GPSR to solve the sparse reconstruction problem. The first way provides GPSR with functions for evaluation A and A^*, the second way uses `classOp`

to provide a matrix-like operator.

### exSPGL1

This example examines the angiogram problem (502) and show the exact and observed Fourier coefficients based on the operators provided in `P.op`

. It then applies SPGL1 to solve the complex recovery problem.

### exSeismic

In this example, techniques from compressed sensing are applied to recover missing traces in seismic data. Instead of instantiating problem 901 it constructs all operators and data in a way that is very similar to the existing test problem. This illustrates how easy it is to implement different problems using Sparco.

### exSheppLogan

This example generates different slices of the full 3D Shepp-Logan model which is implemented in Sparco's `ellipsoids`

function.

### exTV

In this example a total variation based solver is used to reconstruct the angiogram in problem 502 from its compressed measurements. It shows how the `opDifference`

operator can be used to simplify computation.