spyrit.core.meas.LinearSplit.adjoint
- LinearSplit.adjoint(y: tensor, unvectorize=False)[source]
Apply adjoint of matrix A.
It computes
\[x = A^Ty,\]where \(A \in \mathbb{R}^{2M\times N}\) is the acquisition matrix (that may contain negative values) and \(y \in \mathbb{R}^{2M}\) is a measurement vector.
Note
The acquisition matrix \(A\) is given by
self.A.- Args:
y(torch.tensor): Measurement \(y\) whose dimensionsself.meas_dimsmust have shapeself.meas_shape.- Returns:
torch.tensor: A batch of signals \(x\) with shape \((*, N)\) where \(*\) is the same as form.- Examples:
Example 1: (3, 4) measurements of length 20 are measured with an acquisition matrix of shape (10, 15). This produces (3, 4) signals of length 15.
>>> import spyrit.core.meas as meas >>> H = torch.randn(10, 15) >>> meas_op = meas.LinearSplit(H) >>> y = torch.randn(3, 4, 20) >>> x = meas_op.adjoint(y) >>> print(x.shape) torch.Size([3, 4, 15])
Example 2: 3 measurements of length 20 are measured with an acquisition matrix of shape (10, 60). This produces 3 signals of length 60.
>>> import spyrit.core.meas as meas >>> H = torch.randn(10, 60) >>> meas_op = meas.LinearSplit(H, meas_shape=(15, 4)) >>> m = torch.randn(3, 20) >>> x = meas_op.adjoint(m) >>> print(x.shape) torch.Size([3, 60])