MATLAB
Setup
Once you have downloaded POGS, open MATLAB and type
1 | >> cd <pogs>/src/interface_matlab |
in the MATLAB console. The string
1 | <pogs>
|
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:
is the data matrix of dimension mn.1
A
and1
f
are structs with fields1
g
,1
h
,1
a
,1
b
,1
c
and1
d
, 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, if1
e
and1
f
are specified as struct arrays.1
g
Optional Inputs:
is a struct with fields1
params
,1
rel_tol
,1
abs_tol
,1
rho
,1
max_iter
and1
quiet
.1
adaptive_rho
Outputs:
and1
x
are the solution vectors x⋆pogs resp. y⋆pogs, and have dimension m resp. n.1
y
is the dual variable λ⋆pogs corresponding to the constraint Ax=y and has dimension m.1
l
is the value of the objective p⋆pogs at the solution (p⋆pogs=f(y⋆pogs)+g(x⋆pogs)).1
optval
For more information type
1 | >> help pogs |
h-Functions
The values
1 | f.h
|
and 1
g.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 gj(xj)=|xj| for j=1…4 and g5(x5)=I(x5=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.