ComponentProjectionAdjoint

class odl.operator.pspace_ops.ComponentProjectionAdjoint(*args, **kwargs)[source]

Bases: odl.operator.operator.Operator

Adjoint operator to ComponentProjection.

As a special case of the adjoint of a ProductSpaceOperator, this operator is given as a column vector of identity operators and zero operators, with the identities placed in the positions defined by ComponentProjectionAdjoint.index.

In weighted product spaces, the adjoint needs to take the weightings into account. This is currently not supported.

Attributes
adjoint

Adjoint of this operator.

domain

Set of objects on which this operator can be evaluated.

index

Index of the subspace.

inverse

Return the operator inverse.

is_functional

True if this operator’s range is a Field.

is_linear

True if this operator is linear.

range

Set in which the result of an evaluation of this operator lies.

Methods

_call(self, x[, out])

Extend x from the subspace.

derivative(self, point)

Return the operator derivative at point.

norm(self[, estimate])

Return the operator norm of this operator.

__init__(self, space, index)[source]

Initialize a new instance

Parameters
spaceProductSpace

Space to project to.

indexint, slice, or list

Indexes to project from.

Examples

>>> r1 = odl.rn(1)
>>> r2 = odl.rn(2)
>>> r3 = odl.rn(3)
>>> pspace = odl.ProductSpace(r1, r2, r3)
>>> x = pspace.element([[1],
...                     [2, 3],
...                     [4, 5, 6]])

Projection on the 0-th component:

>>> proj_adj = odl.ComponentProjectionAdjoint(pspace, 0)
>>> proj_adj(x[0])
ProductSpace(rn(1), rn(2), rn(3)).element([
    [ 1.],
    [ 0.,  0.],
    [ 0.,  0.,  0.]
])

Projection on a sub-space corresponding to indices 0 and 2:

>>> proj_adj = odl.ComponentProjectionAdjoint(pspace, [0, 2])
>>> proj_adj(x[[0, 2]])
ProductSpace(rn(1), rn(2), rn(3)).element([
    [ 1.],
    [ 0.,  0.],
    [ 4.,  5.,  6.]
])