### Setup

Once you have downloaded POGS, open MATLAB and type

 1 >> cd /src/interface_matlab 

in the MATLAB console. The string

 1  
  must be replaced with the directory to which POGS was downloaded. To compile wrapper type

 1 >> pogs_setup 

Alternatively typing

 1 >> pogs_setup gpu 

will compile the GPU version.

### MATLAB-specific usage

The MATLAB interface is a single MEX-function, with signature

 1 [x, y, l, optval] = pogs(A, f, g, params) 

Inputs:

• 1A  is the data matrix of dimension $$m n$$.
• 1f  and 1g  are structs with fields 1h , 1a , 1b , 1c , 1d  and 1e , each of which must either be a vector of dimension $$m$$ (resp. $$n$$) or a scalar. If a scalar is specified, then it is assumed that the scalar should be repeated $$m$$ (resp. $$n$$) times. Multiple problems can be solved with the same matrix $$A$$, if 1f  and 1g  are specified as struct arrays.

Optional Inputs:

• 1params  is a struct with fields 1rel_tol , 1abs_tol , 1rho , 1max_iter , 1quiet  and 1adaptive_rho .

Outputs:

• 1x  and 1y  are the solution vectors $$x^\star_\text{pogs}$$ resp. $$y^\star_\text{pogs}$$, and have dimension $$m$$ resp. $$n$$.
• 1l  is the dual variable $$\lambda^\star_\text{pogs}$$ corresponding to the constraint $$Ax = y$$ and has dimension $$m$$.
• 1optval  is the value of the objective $$p^\star_\text{pogs}$$ at the solution ($$p^\star_\text{pogs} = f(y^\star_\text{pogs}) + g(x^\star_\text{pogs})$$).

 1 >> help pogs 

### $$h$$-Functions

The values

 1 f.h 
  and 1g.h  can be specified using one of 16 functions. These are

 1 2 kAbs, kExp, kHuber, kIdentity, kIndBox01, kIndEq0, kIndGe0, kIndLe0, kLogistic, kMaxNeg0, kMaxPos0, kNegEntr, kNegLog, kRecipr, kSquare, kZero 

For example to specify that $$g_j(x_j) = |x_j|$$ for $$j = 1\ldots 4$$ and $$g_5(x_5) = I(x_5 = 0)$$, use the syntax

 1 >> g.h = [kAbs(4); kIndEq0]; 

See Functions for a more detailed explanation of the functions and their usage.

### Example Usage

See the examples listed on the left-hand side under Examples.