a linear-operator toolbox for matlab · a linear-operator toolbox for matlab michael p. friedlander...

43
A Linear-Operator Toolbox for Matlab Michael P. Friedlander UBC Computer Science Thursday, December 9, 2010

Upload: others

Post on 10-Feb-2020

46 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: A Linear-Operator Toolbox for Matlab · A Linear-Operator Toolbox for Matlab Michael P. Friedlander UBC Computer Science Thursday, December 9, 2010. Linear Models Ax ≈ b Signal

A Linear-Operator Toolbox for Matlab

Michael P. FriedlanderUBC Computer Science

Thursday, December 9, 2010

Page 2: A Linear-Operator Toolbox for Matlab · A Linear-Operator Toolbox for Matlab Michael P. Friedlander UBC Computer Science Thursday, December 9, 2010. Linear Models Ax ≈ b Signal

Linear Models

Ax ! b

Signal and image processing

• b is observed signal

• x is “true” signal or its representation in some basis/dictionary

Linear operators

• may not have a practical matrix representation

• often fast algorithms for application of A and A! (eg, FFT)

Computation

Ax A!y A(:, idx)x(idx) min 12"Ax # b"22 + !(x)

2 / 11

Thursday, December 9, 2010

Page 3: A Linear-Operator Toolbox for Matlab · A Linear-Operator Toolbox for Matlab Michael P. Friedlander UBC Computer Science Thursday, December 9, 2010. Linear Models Ax ≈ b Signal

Linear Models

Ax ! b

Signal and image processing

• b is observed signal

• x is “true” signal or its representation in some basis/dictionary

Linear operators

• may not have a practical matrix representation

• often fast algorithms for application of A and A! (eg, FFT)

Computation

Ax A!y A(:, idx)x(idx) min 12"Ax # b"22 + !(x)

2 / 11

Thursday, December 9, 2010

Page 4: A Linear-Operator Toolbox for Matlab · A Linear-Operator Toolbox for Matlab Michael P. Friedlander UBC Computer Science Thursday, December 9, 2010. Linear Models Ax ≈ b Signal

Linear Models

Ax ! b

Signal and image processing

• b is observed signal

• x is “true” signal or its representation in some basis/dictionary

Linear operators

• may not have a practical matrix representation

• often fast algorithms for application of A and A! (eg, FFT)

Computation

Ax A!y A(:, idx)x(idx) min 12"Ax # b"22 + !(x)

2 / 11

Thursday, December 9, 2010

Page 5: A Linear-Operator Toolbox for Matlab · A Linear-Operator Toolbox for Matlab Michael P. Friedlander UBC Computer Science Thursday, December 9, 2010. Linear Models Ax ≈ b Signal

Linear Models

Ax ! b

Signal and image processing

• b is observed signal

• x is “true” signal or its representation in some basis/dictionary

Linear operators

• may not have a practical matrix representation

• often fast algorithms for application of A and A! (eg, FFT)

Computation

Ax A!y A(:, idx)x(idx) min 12"Ax # b"22 + !(x)

2 / 11

Thursday, December 9, 2010

Page 6: A Linear-Operator Toolbox for Matlab · A Linear-Operator Toolbox for Matlab Michael P. Friedlander UBC Computer Science Thursday, December 9, 2010. Linear Models Ax ≈ b Signal

Linear Models

Ax ! b

Signal and image processing

• b is observed signal

• x is “true” signal or its representation in some basis/dictionary

Linear operators

• may not have a practical matrix representation

• often fast algorithms for application of A and A! (eg, FFT)

Computation

Ax

A!y A(:, idx)x(idx) min 12"Ax # b"22 + !(x)

2 / 11

Thursday, December 9, 2010

Page 7: A Linear-Operator Toolbox for Matlab · A Linear-Operator Toolbox for Matlab Michael P. Friedlander UBC Computer Science Thursday, December 9, 2010. Linear Models Ax ≈ b Signal

Linear Models

Ax ! b

Signal and image processing

• b is observed signal

• x is “true” signal or its representation in some basis/dictionary

Linear operators

• may not have a practical matrix representation

• often fast algorithms for application of A and A! (eg, FFT)

Computation

Ax A!y

A(:, idx)x(idx) min 12"Ax # b"22 + !(x)

2 / 11

Thursday, December 9, 2010

Page 8: A Linear-Operator Toolbox for Matlab · A Linear-Operator Toolbox for Matlab Michael P. Friedlander UBC Computer Science Thursday, December 9, 2010. Linear Models Ax ≈ b Signal

Linear Models

Ax ! b

Signal and image processing

• b is observed signal

• x is “true” signal or its representation in some basis/dictionary

Linear operators

• may not have a practical matrix representation

• often fast algorithms for application of A and A! (eg, FFT)

Computation

Ax A!y A(:, idx)x(idx)

min 12"Ax # b"22 + !(x)

2 / 11

Thursday, December 9, 2010

Page 9: A Linear-Operator Toolbox for Matlab · A Linear-Operator Toolbox for Matlab Michael P. Friedlander UBC Computer Science Thursday, December 9, 2010. Linear Models Ax ≈ b Signal

Linear Models

Ax ! b

Signal and image processing

• b is observed signal

• x is “true” signal or its representation in some basis/dictionary

Linear operators

• may not have a practical matrix representation

• often fast algorithms for application of A and A! (eg, FFT)

Computation

Ax A!y A(:, idx)x(idx) min 12"Ax # b"22 + !(x)

2 / 11

Thursday, December 9, 2010

Page 10: A Linear-Operator Toolbox for Matlab · A Linear-Operator Toolbox for Matlab Michael P. Friedlander UBC Computer Science Thursday, December 9, 2010. Linear Models Ax ≈ b Signal

Spot Toolbox

Keeping the “mat” in Matlab

A = F'*diag(F*v)*F;y = A*x;

vs

function y = circulant(x,v)y = ifft(fft(v).*fft(x));

endy = circulant(x,v);

The Toolbox

• free software, GPL

• late-model Matlab required, ! 7.6 (2008a)

(extensive use of classdef and packages)

• extensible

3 / 11

Thursday, December 9, 2010

Page 11: A Linear-Operator Toolbox for Matlab · A Linear-Operator Toolbox for Matlab Michael P. Friedlander UBC Computer Science Thursday, December 9, 2010. Linear Models Ax ≈ b Signal

Spot Toolbox

Keeping the “mat” in Matlab

A = F'*diag(F*v)*F;y = A*x;

vs

function y = circulant(x,v)y = ifft(fft(v).*fft(x));

endy = circulant(x,v);

The Toolbox

• free software, GPL

• late-model Matlab required, ! 7.6 (2008a)

(extensive use of classdef and packages)

• extensible

3 / 11

Thursday, December 9, 2010

Page 12: A Linear-Operator Toolbox for Matlab · A Linear-Operator Toolbox for Matlab Michael P. Friedlander UBC Computer Science Thursday, December 9, 2010. Linear Models Ax ≈ b Signal

Spot Toolbox

Keeping the “mat” in Matlab

A = F'*diag(F*v)*F;y = A*x;

vs

function y = circulant(x,v)y = ifft(fft(v).*fft(x));

endy = circulant(x,v);

The Toolbox

• free software, GPL

• late-model Matlab required, ! 7.6 (2008a)

(extensive use of classdef and packages)

• extensible

3 / 11

Thursday, December 9, 2010

Page 13: A Linear-Operator Toolbox for Matlab · A Linear-Operator Toolbox for Matlab Michael P. Friedlander UBC Computer Science Thursday, December 9, 2010. Linear Models Ax ≈ b Signal

Spot Toolbox

Keeping the “mat” in Matlab

A = F'*diag(F*v)*F;y = A*x;

vs

function y = circulant(x,v)y = ifft(fft(v).*fft(x));

endy = circulant(x,v);

The Toolbox

• free software, GPL

• late-model Matlab required, ! 7.6 (2008a)

(extensive use of classdef and packages)

• extensible

3 / 11

Thursday, December 9, 2010

Page 14: A Linear-Operator Toolbox for Matlab · A Linear-Operator Toolbox for Matlab Michael P. Friedlander UBC Computer Science Thursday, December 9, 2010. Linear Models Ax ≈ b Signal

Spot Toolbox

Keeping the “mat” in Matlab

A = F'*diag(F*v)*F;y = A*x;

vs

function y = circulant(x,v)y = ifft(fft(v).*fft(x));

endy = circulant(x,v);

The Toolbox

• free software, GPL

• late-model Matlab required, ! 7.6 (2008a)

(extensive use of classdef and packages)

• extensible

3 / 11

Thursday, December 9, 2010

Page 15: A Linear-Operator Toolbox for Matlab · A Linear-Operator Toolbox for Matlab Michael P. Friedlander UBC Computer Science Thursday, December 9, 2010. Linear Models Ax ≈ b Signal

Example 1: Image Deblurring

b = Ax + r

Spatially-invariant blur

A = F !!F A = DT!D A = bttb(!c)

periodic reflexive zero

Fast-operators

Fx !"N fft2(x) Dx ! dct2(x)

Implementing matrix-vector products

y = Ax = F !!Fx #$ y = ifft2(fft2(a1).*fft2(x))

4 / 11

Thursday, December 9, 2010

Page 16: A Linear-Operator Toolbox for Matlab · A Linear-Operator Toolbox for Matlab Michael P. Friedlander UBC Computer Science Thursday, December 9, 2010. Linear Models Ax ≈ b Signal

Example 1: Image Deblurring

b = Ax + r

Spatially-invariant blur

A = F !!F A = DT!D A = bttb(!c)

periodic reflexive zero

Fast-operators

Fx !"N fft2(x) Dx ! dct2(x)

Implementing matrix-vector products

y = Ax = F !!Fx #$ y = ifft2(fft2(a1).*fft2(x))

4 / 11

Thursday, December 9, 2010

Page 17: A Linear-Operator Toolbox for Matlab · A Linear-Operator Toolbox for Matlab Michael P. Friedlander UBC Computer Science Thursday, December 9, 2010. Linear Models Ax ≈ b Signal

Example 1: Image Deblurring

b = Ax + r

Spatially-invariant blur

A = F !!F A = DT!D A = bttb(!c)

periodic reflexive zero

Fast-operators

Fx !"N fft2(x) Dx ! dct2(x)

Implementing matrix-vector products

y = Ax = F !!Fx #$ y = ifft2(fft2(a1).*fft2(x))

4 / 11

Thursday, December 9, 2010

Page 18: A Linear-Operator Toolbox for Matlab · A Linear-Operator Toolbox for Matlab Michael P. Friedlander UBC Computer Science Thursday, December 9, 2010. Linear Models Ax ≈ b Signal

Example 1: Image Deblurring

b = Ax + r

Spatially-invariant blur

A = F !!F A = DT!D A = bttb(!c)

periodic reflexive zero

Fast-operators

Fx !"N fft2(x) Dx ! dct2(x)

Implementing matrix-vector products

y = Ax = F !!Fx #$ y = ifft2(fft2(a1).*fft2(x))

4 / 11

Thursday, December 9, 2010

Page 19: A Linear-Operator Toolbox for Matlab · A Linear-Operator Toolbox for Matlab Michael P. Friedlander UBC Computer Science Thursday, December 9, 2010. Linear Models Ax ≈ b Signal

Blurring Demo

5 / 11

Thursday, December 9, 2010

Page 20: A Linear-Operator Toolbox for Matlab · A Linear-Operator Toolbox for Matlab Michael P. Friedlander UBC Computer Science Thursday, December 9, 2010. Linear Models Ax ≈ b Signal

Spot Operator Library

Operator type Matlab function

Fast operators opConvolve, opCurvelet, opDCT, opDCT2opDFT, opDFT2, opDirac, opEye, opHaar, opHaar2,opHadamard, opHeaviside, opOnes, opToeplitzopToepGauss, opToepSign, opWavelet

Ensembles opBernoulli, opBinary, opGaussian, opSparseBinary

Selection opExcise, opMask, opRestriction, opSubsref

Meta operators opBlockDiag, opConj, opDiag, opCTranspose, opKronopDictionary, opZeros, opImage, opInverse, opRealopMinus, opOrthogonal, opPInverse, opPower, opFoGopStack, opSubsAsgn, opSum, opTransposeopEmpty, opZeros

Wrapping opClass, opFunction, opMatrix

+ - * / \ ^ ’ .’ [.,.] [.;.] bicg char disp eigs isreal

minres qmr subsasgn bicgstab conj display end imag isscalar pcgrealsubsref blkdiag double full inv kron ndims pinv rrandn symmlq cgsdiag drandn gmres isempty lsqr normest size

6 / 11

Thursday, December 9, 2010

Page 21: A Linear-Operator Toolbox for Matlab · A Linear-Operator Toolbox for Matlab Michael P. Friedlander UBC Computer Science Thursday, December 9, 2010. Linear Models Ax ≈ b Signal

Spot Operator Library

Operator type Matlab function

Fast operators opConvolve, opCurvelet, opDCT, opDCT2opDFT, opDFT2, opDirac, opEye, opHaar, opHaar2,opHadamard, opHeaviside, opOnes, opToeplitzopToepGauss, opToepSign, opWavelet

Ensembles opBernoulli, opBinary, opGaussian, opSparseBinary

Selection opExcise, opMask, opRestriction, opSubsref

Meta operators opBlockDiag, opConj, opDiag, opCTranspose, opKronopDictionary, opZeros, opImage, opInverse, opRealopMinus, opOrthogonal, opPInverse, opPower, opFoGopStack, opSubsAsgn, opSum, opTransposeopEmpty, opZeros

Wrapping opClass, opFunction, opMatrix

+ - * / \ ^ ’ .’ [.,.] [.;.] bicg char disp eigs isreal

minres qmr subsasgn bicgstab conj display end imag isscalar pcgrealsubsref blkdiag double full inv kron ndims pinv rrandn symmlq cgsdiag drandn gmres isempty lsqr normest size

6 / 11

Thursday, December 9, 2010

Page 22: A Linear-Operator Toolbox for Matlab · A Linear-Operator Toolbox for Matlab Michael P. Friedlander UBC Computer Science Thursday, December 9, 2010. Linear Models Ax ≈ b Signal

Spot Operator Library

Operator type Matlab function

Fast operators opConvolve, opCurvelet, opDCT, opDCT2opDFT, opDFT2, opDirac, opEye, opHaar, opHaar2,opHadamard, opHeaviside, opOnes, opToeplitzopToepGauss, opToepSign, opWavelet

Ensembles opBernoulli, opBinary, opGaussian, opSparseBinary

Selection opExcise, opMask, opRestriction, opSubsref

Meta operators opBlockDiag, opConj, opDiag, opCTranspose, opKronopDictionary, opZeros, opImage, opInverse, opRealopMinus, opOrthogonal, opPInverse, opPower, opFoGopStack, opSubsAsgn, opSum, opTransposeopEmpty, opZeros

Wrapping opClass, opFunction, opMatrix

+ - * / \ ^ ’ .’ [.,.] [.;.] bicg char disp eigs isreal

minres qmr subsasgn bicgstab conj display end imag isscalar pcgrealsubsref blkdiag double full inv kron ndims pinv rrandn symmlq cgsdiag drandn gmres isempty lsqr normest size

6 / 11

Thursday, December 9, 2010

Page 23: A Linear-Operator Toolbox for Matlab · A Linear-Operator Toolbox for Matlab Michael P. Friedlander UBC Computer Science Thursday, December 9, 2010. Linear Models Ax ≈ b Signal

Spot Operator Library

Operator type Matlab function

Fast operators opConvolve, opCurvelet, opDCT, opDCT2opDFT, opDFT2, opDirac, opEye, opHaar, opHaar2,opHadamard, opHeaviside, opOnes, opToeplitzopToepGauss, opToepSign, opWavelet

Ensembles opBernoulli, opBinary, opGaussian, opSparseBinary

Selection opExcise, opMask, opRestriction, opSubsref

Meta operators opBlockDiag, opConj, opDiag, opCTranspose, opKronopDictionary, opZeros, opImage, opInverse, opRealopMinus, opOrthogonal, opPInverse, opPower, opFoGopStack, opSubsAsgn, opSum, opTransposeopEmpty, opZeros

Wrapping opClass, opFunction, opMatrix

+ - * / \ ^ ’ .’ [.,.] [.;.] bicg char disp eigs isreal

minres qmr subsasgn bicgstab conj display end imag isscalar pcgrealsubsref blkdiag double full inv kron ndims pinv rrandn symmlq cgsdiag drandn gmres isempty lsqr normest size

6 / 11

Thursday, December 9, 2010

Page 24: A Linear-Operator Toolbox for Matlab · A Linear-Operator Toolbox for Matlab Michael P. Friedlander UBC Computer Science Thursday, December 9, 2010. Linear Models Ax ≈ b Signal

Spot Operator Library

Operator type Matlab function

Fast operators opConvolve, opCurvelet, opDCT, opDCT2opDFT, opDFT2, opDirac, opEye, opHaar, opHaar2,opHadamard, opHeaviside, opOnes, opToeplitzopToepGauss, opToepSign, opWavelet

Ensembles opBernoulli, opBinary, opGaussian, opSparseBinary

Selection opExcise, opMask, opRestriction, opSubsref

Meta operators opBlockDiag, opConj, opDiag, opCTranspose, opKronopDictionary, opZeros, opImage, opInverse, opRealopMinus, opOrthogonal, opPInverse, opPower, opFoGopStack, opSubsAsgn, opSum, opTransposeopEmpty, opZeros

Wrapping opClass, opFunction, opMatrix

+ - * / \ ^ ’ .’ [.,.] [.;.] bicg char disp eigs isreal

minres qmr subsasgn bicgstab conj display end imag isscalar pcgrealsubsref blkdiag double full inv kron ndims pinv rrandn symmlq cgsdiag drandn gmres isempty lsqr normest size

6 / 11

Thursday, December 9, 2010

Page 25: A Linear-Operator Toolbox for Matlab · A Linear-Operator Toolbox for Matlab Michael P. Friedlander UBC Computer Science Thursday, December 9, 2010. Linear Models Ax ≈ b Signal

Spot Operator Library

Operator type Matlab function

Fast operators opConvolve, opCurvelet, opDCT, opDCT2opDFT, opDFT2, opDirac, opEye, opHaar, opHaar2,opHadamard, opHeaviside, opOnes, opToeplitzopToepGauss, opToepSign, opWavelet

Ensembles opBernoulli, opBinary, opGaussian, opSparseBinary

Selection opExcise, opMask, opRestriction, opSubsref

Meta operators opBlockDiag, opConj, opDiag, opCTranspose, opKronopDictionary, opZeros, opImage, opInverse, opRealopMinus, opOrthogonal, opPInverse, opPower, opFoGopStack, opSubsAsgn, opSum, opTransposeopEmpty, opZeros

Wrapping opClass, opFunction, opMatrix

+ - * / \ ^ ’ .’ [.,.] [.;.] bicg char disp eigs isreal

minres qmr subsasgn bicgstab conj display end imag isscalar pcgrealsubsref blkdiag double full inv kron ndims pinv rrandn symmlq cgsdiag drandn gmres isempty lsqr normest size

6 / 11

Thursday, December 9, 2010

Page 26: A Linear-Operator Toolbox for Matlab · A Linear-Operator Toolbox for Matlab Michael P. Friedlander UBC Computer Science Thursday, December 9, 2010. Linear Models Ax ≈ b Signal

Spot Operator Library

Operator type Matlab function

Fast operators opConvolve, opCurvelet, opDCT, opDCT2opDFT, opDFT2, opDirac, opEye, opHaar, opHaar2,opHadamard, opHeaviside, opOnes, opToeplitzopToepGauss, opToepSign, opWavelet

Ensembles opBernoulli, opBinary, opGaussian, opSparseBinary

Selection opExcise, opMask, opRestriction, opSubsref

Meta operators opBlockDiag, opConj, opDiag, opCTranspose, opKronopDictionary, opZeros, opImage, opInverse, opRealopMinus, opOrthogonal, opPInverse, opPower, opFoGopStack, opSubsAsgn, opSum, opTransposeopEmpty, opZeros

Wrapping opClass, opFunction, opMatrix

+ - * / \ ^ ’ .’ [.,.] [.;.] bicg char disp eigs isreal

minres qmr subsasgn bicgstab conj display end imag isscalar pcgrealsubsref blkdiag double full inv kron ndims pinv rrandn symmlq cgsdiag drandn gmres isempty lsqr normest size

6 / 11

Thursday, December 9, 2010

Page 27: A Linear-Operator Toolbox for Matlab · A Linear-Operator Toolbox for Matlab Michael P. Friedlander UBC Computer Science Thursday, December 9, 2010. Linear Models Ax ≈ b Signal

Spot Operator Library

Operator type Matlab function

Fast operators opConvolve, opCurvelet, opDCT, opDCT2opDFT, opDFT2, opDirac, opEye, opHaar, opHaar2,opHadamard, opHeaviside, opOnes, opToeplitzopToepGauss, opToepSign, opWavelet

Ensembles opBernoulli, opBinary, opGaussian, opSparseBinary

Selection opExcise, opMask, opRestriction, opSubsref

Meta operators opBlockDiag, opConj, opDiag, opCTranspose, opKronopDictionary, opZeros, opImage, opInverse, opRealopMinus, opOrthogonal, opPInverse, opPower, opFoGopStack, opSubsAsgn, opSum, opTransposeopEmpty, opZeros

Wrapping opClass, opFunction, opMatrix

+ - * / \

^ ’ .’ [.,.] [.;.] bicg char disp eigs isreal

minres qmr subsasgn bicgstab conj display end imag isscalar pcgrealsubsref blkdiag double full inv kron ndims pinv rrandn symmlq cgsdiag drandn gmres isempty lsqr normest size

6 / 11

Thursday, December 9, 2010

Page 28: A Linear-Operator Toolbox for Matlab · A Linear-Operator Toolbox for Matlab Michael P. Friedlander UBC Computer Science Thursday, December 9, 2010. Linear Models Ax ≈ b Signal

Spot Operator Library

Operator type Matlab function

Fast operators opConvolve, opCurvelet, opDCT, opDCT2opDFT, opDFT2, opDirac, opEye, opHaar, opHaar2,opHadamard, opHeaviside, opOnes, opToeplitzopToepGauss, opToepSign, opWavelet

Ensembles opBernoulli, opBinary, opGaussian, opSparseBinary

Selection opExcise, opMask, opRestriction, opSubsref

Meta operators opBlockDiag, opConj, opDiag, opCTranspose, opKronopDictionary, opZeros, opImage, opInverse, opRealopMinus, opOrthogonal, opPInverse, opPower, opFoGopStack, opSubsAsgn, opSum, opTransposeopEmpty, opZeros

Wrapping opClass, opFunction, opMatrix

+ - * / \ ^

’ .’ [.,.] [.;.] bicg char disp eigs isreal

minres qmr subsasgn bicgstab conj display end imag isscalar pcgrealsubsref blkdiag double full inv kron ndims pinv rrandn symmlq cgsdiag drandn gmres isempty lsqr normest size

6 / 11

Thursday, December 9, 2010

Page 29: A Linear-Operator Toolbox for Matlab · A Linear-Operator Toolbox for Matlab Michael P. Friedlander UBC Computer Science Thursday, December 9, 2010. Linear Models Ax ≈ b Signal

Spot Operator Library

Operator type Matlab function

Fast operators opConvolve, opCurvelet, opDCT, opDCT2opDFT, opDFT2, opDirac, opEye, opHaar, opHaar2,opHadamard, opHeaviside, opOnes, opToeplitzopToepGauss, opToepSign, opWavelet

Ensembles opBernoulli, opBinary, opGaussian, opSparseBinary

Selection opExcise, opMask, opRestriction, opSubsref

Meta operators opBlockDiag, opConj, opDiag, opCTranspose, opKronopDictionary, opZeros, opImage, opInverse, opRealopMinus, opOrthogonal, opPInverse, opPower, opFoGopStack, opSubsAsgn, opSum, opTransposeopEmpty, opZeros

Wrapping opClass, opFunction, opMatrix

+ - * / \ ^ ’

.’ [.,.] [.;.] bicg char disp eigs isreal

minres qmr subsasgn bicgstab conj display end imag isscalar pcgrealsubsref blkdiag double full inv kron ndims pinv rrandn symmlq cgsdiag drandn gmres isempty lsqr normest size

6 / 11

Thursday, December 9, 2010

Page 30: A Linear-Operator Toolbox for Matlab · A Linear-Operator Toolbox for Matlab Michael P. Friedlander UBC Computer Science Thursday, December 9, 2010. Linear Models Ax ≈ b Signal

Spot Operator Library

Operator type Matlab function

Fast operators opConvolve, opCurvelet, opDCT, opDCT2opDFT, opDFT2, opDirac, opEye, opHaar, opHaar2,opHadamard, opHeaviside, opOnes, opToeplitzopToepGauss, opToepSign, opWavelet

Ensembles opBernoulli, opBinary, opGaussian, opSparseBinary

Selection opExcise, opMask, opRestriction, opSubsref

Meta operators opBlockDiag, opConj, opDiag, opCTranspose, opKronopDictionary, opZeros, opImage, opInverse, opRealopMinus, opOrthogonal, opPInverse, opPower, opFoGopStack, opSubsAsgn, opSum, opTransposeopEmpty, opZeros

Wrapping opClass, opFunction, opMatrix

+ - * / \ ^ ’ .’

[.,.] [.;.] bicg char disp eigs isreal

minres qmr subsasgn bicgstab conj display end imag isscalar pcgrealsubsref blkdiag double full inv kron ndims pinv rrandn symmlq cgsdiag drandn gmres isempty lsqr normest size

6 / 11

Thursday, December 9, 2010

Page 31: A Linear-Operator Toolbox for Matlab · A Linear-Operator Toolbox for Matlab Michael P. Friedlander UBC Computer Science Thursday, December 9, 2010. Linear Models Ax ≈ b Signal

Spot Operator Library

Operator type Matlab function

Fast operators opConvolve, opCurvelet, opDCT, opDCT2opDFT, opDFT2, opDirac, opEye, opHaar, opHaar2,opHadamard, opHeaviside, opOnes, opToeplitzopToepGauss, opToepSign, opWavelet

Ensembles opBernoulli, opBinary, opGaussian, opSparseBinary

Selection opExcise, opMask, opRestriction, opSubsref

Meta operators opBlockDiag, opConj, opDiag, opCTranspose, opKronopDictionary, opZeros, opImage, opInverse, opRealopMinus, opOrthogonal, opPInverse, opPower, opFoGopStack, opSubsAsgn, opSum, opTransposeopEmpty, opZeros

Wrapping opClass, opFunction, opMatrix

+ - * / \ ^ ’ .’ [.,.]

[.;.] bicg char disp eigs isreal

minres qmr subsasgn bicgstab conj display end imag isscalar pcgrealsubsref blkdiag double full inv kron ndims pinv rrandn symmlq cgsdiag drandn gmres isempty lsqr normest size

6 / 11

Thursday, December 9, 2010

Page 32: A Linear-Operator Toolbox for Matlab · A Linear-Operator Toolbox for Matlab Michael P. Friedlander UBC Computer Science Thursday, December 9, 2010. Linear Models Ax ≈ b Signal

Spot Operator Library

Operator type Matlab function

Fast operators opConvolve, opCurvelet, opDCT, opDCT2opDFT, opDFT2, opDirac, opEye, opHaar, opHaar2,opHadamard, opHeaviside, opOnes, opToeplitzopToepGauss, opToepSign, opWavelet

Ensembles opBernoulli, opBinary, opGaussian, opSparseBinary

Selection opExcise, opMask, opRestriction, opSubsref

Meta operators opBlockDiag, opConj, opDiag, opCTranspose, opKronopDictionary, opZeros, opImage, opInverse, opRealopMinus, opOrthogonal, opPInverse, opPower, opFoGopStack, opSubsAsgn, opSum, opTransposeopEmpty, opZeros

Wrapping opClass, opFunction, opMatrix

+ - * / \ ^ ’ .’ [.,.] [.;.]

bicg char disp eigs isreal

minres qmr subsasgn bicgstab conj display end imag isscalar pcgrealsubsref blkdiag double full inv kron ndims pinv rrandn symmlq cgsdiag drandn gmres isempty lsqr normest size

6 / 11

Thursday, December 9, 2010

Page 33: A Linear-Operator Toolbox for Matlab · A Linear-Operator Toolbox for Matlab Michael P. Friedlander UBC Computer Science Thursday, December 9, 2010. Linear Models Ax ≈ b Signal

Spot Operator Library

Operator type Matlab function

Fast operators opConvolve, opCurvelet, opDCT, opDCT2opDFT, opDFT2, opDirac, opEye, opHaar, opHaar2,opHadamard, opHeaviside, opOnes, opToeplitzopToepGauss, opToepSign, opWavelet

Ensembles opBernoulli, opBinary, opGaussian, opSparseBinary

Selection opExcise, opMask, opRestriction, opSubsref

Meta operators opBlockDiag, opConj, opDiag, opCTranspose, opKronopDictionary, opZeros, opImage, opInverse, opRealopMinus, opOrthogonal, opPInverse, opPower, opFoGopStack, opSubsAsgn, opSum, opTransposeopEmpty, opZeros

Wrapping opClass, opFunction, opMatrix

+ - * / \ ^ ’ .’ [.,.] [.;.] bicg char disp eigs isreal

minres qmr subsasgn bicgstab conj display end imag isscalar pcgrealsubsref blkdiag double full inv kron ndims pinv rrandn symmlq cgsdiag drandn gmres isempty lsqr normest size

6 / 11

Thursday, December 9, 2010

Page 34: A Linear-Operator Toolbox for Matlab · A Linear-Operator Toolbox for Matlab Michael P. Friedlander UBC Computer Science Thursday, December 9, 2010. Linear Models Ax ≈ b Signal

Example 2: Sparse Recovery

= +

Rb = R = Restriction

R

b !

R

Haar DCT x

7 / 11

Thursday, December 9, 2010

Page 35: A Linear-Operator Toolbox for Matlab · A Linear-Operator Toolbox for Matlab Michael P. Friedlander UBC Computer Science Thursday, December 9, 2010. Linear Models Ax ≈ b Signal

Example 2: Sparse Recovery

= +

Rb = R = Restriction

R

b !

R

Haar DCT x

7 / 11

Thursday, December 9, 2010

Page 36: A Linear-Operator Toolbox for Matlab · A Linear-Operator Toolbox for Matlab Michael P. Friedlander UBC Computer Science Thursday, December 9, 2010. Linear Models Ax ≈ b Signal

Example 2: Sparse Recovery

= +

Rb = R = Restriction

R

b !

R

Haar DCT x

7 / 11

Thursday, December 9, 2010

Page 37: A Linear-Operator Toolbox for Matlab · A Linear-Operator Toolbox for Matlab Michael P. Friedlander UBC Computer Science Thursday, December 9, 2010. Linear Models Ax ≈ b Signal

Example 2: Sparse Recovery

= +

Rb = R = Restriction

Rb ! R Haar DCT x

7 / 11

Thursday, December 9, 2010

Page 38: A Linear-Operator Toolbox for Matlab · A Linear-Operator Toolbox for Matlab Michael P. Friedlander UBC Computer Science Thursday, December 9, 2010. Linear Models Ax ≈ b Signal

Sparse Recovery Demo

8 / 11

Thursday, December 9, 2010

Page 39: A Linear-Operator Toolbox for Matlab · A Linear-Operator Toolbox for Matlab Michael P. Friedlander UBC Computer Science Thursday, December 9, 2010. Linear Models Ax ≈ b Signal

Extensibility

classdef opDCT < opSpot% D = opDCT(N) creates a 1!D DCT for length!N signals

methodsfunction op = opDCT(n)%opDCT constructor.

op = op@opSpot('DCT',n,n);endfunction y = multiply(op,x,mode)%multiply apply the DCT operator.

if mode == 1y = dct(x); % ie, y = D*x

elsey = idct(x); % ie, y = D'*x

endend

end % methodsend % classdef

9 / 11

Thursday, December 9, 2010

Page 40: A Linear-Operator Toolbox for Matlab · A Linear-Operator Toolbox for Matlab Michael P. Friedlander UBC Computer Science Thursday, December 9, 2010. Linear Models Ax ≈ b Signal

Development History

May '09

von Neumann Symposium(Snowbird)

July '07

Dec '07

July '08

Sparco v1.0

v1.1

v1.2(ACM TOMS)

Spot v0.1

Spot v1.0

v1.1-v1.2

v1.3

v1.4v1.5

SGPL1 v1.0

v1.6(SISC)

v1.7

Dec '08

Sept '0

9

10 / 11

Thursday, December 9, 2010

Page 41: A Linear-Operator Toolbox for Matlab · A Linear-Operator Toolbox for Matlab Michael P. Friedlander UBC Computer Science Thursday, December 9, 2010. Linear Models Ax ≈ b Signal

Looking Ahead

Large-scale computing (Joint with Felix Herrmann, EOS)

• out-of-core operations borrow ideas from SlimPy

• integrate with Parallel Computing Toolbox MSc project

Related projects

• bbtools (E. Høgh-Rasmussen) last update: Apr 2006

• RestoreTools (J. Nagy) last update: Mar 2007

Code is available!

http://www.cs.ubc.ca/labs/scl/spot

11 / 11

Thursday, December 9, 2010

Page 42: A Linear-Operator Toolbox for Matlab · A Linear-Operator Toolbox for Matlab Michael P. Friedlander UBC Computer Science Thursday, December 9, 2010. Linear Models Ax ≈ b Signal

Looking Ahead

Large-scale computing (Joint with Felix Herrmann, EOS)

• out-of-core operations borrow ideas from SlimPy

• integrate with Parallel Computing Toolbox MSc project

Related projects

• bbtools (E. Høgh-Rasmussen) last update: Apr 2006

• RestoreTools (J. Nagy) last update: Mar 2007

Code is available!

http://www.cs.ubc.ca/labs/scl/spot

11 / 11

Thursday, December 9, 2010

Page 43: A Linear-Operator Toolbox for Matlab · A Linear-Operator Toolbox for Matlab Michael P. Friedlander UBC Computer Science Thursday, December 9, 2010. Linear Models Ax ≈ b Signal

Looking Ahead

Large-scale computing (Joint with Felix Herrmann, EOS)

• out-of-core operations borrow ideas from SlimPy

• integrate with Parallel Computing Toolbox MSc project

Related projects

• bbtools (E. Høgh-Rasmussen) last update: Apr 2006

• RestoreTools (J. Nagy) last update: Mar 2007

Code is available!

http://www.cs.ubc.ca/labs/scl/spot

11 / 11

Thursday, December 9, 2010