pylops.signalprocessing.FourierRadon2D¶
- class pylops.signalprocessing.FourierRadon2D(taxis, haxis, pxaxis, nfft, flims=None, kind='linear', engine='numpy', num_threads_per_blocks=(32, 32), dtype='float64', name='R')[source]¶
2D Fourier Radon transform
Apply Radon forward (and adjoint) transform using Fast Fourier Transform to a 2-dimensional array of size \([n_{p_x} \times n_t]\) (and \([n_x \times n_t]\)).
Note that forward and adjoint follow the same convention of the time-space implementation in
pylops.signalprocessing.Radon2D.- Parameters:
- taxis
numpy.ndarray Time axis
- haxis
numpy.ndarray Spatial axis
- pxaxis
numpy.ndarray Axis of scanning variable \(p_x\) of parametric curve
- nfft
int Number of samples in Fourier transform
- flims
tuple, optional Indices of lower and upper limits of Fourier axis to be used in the application of the Radon matrix (when
None, use entire axis)- kind
str Curve to be used for stacking/spreading (
linear,parabolic)- engine
str Engine used for computation (
numpyornumbaorcuda)- num_threads_per_blocks
tuple Number of threads in each block (only when
engine=cuda)- dtype
str Type of elements in input array.
- name
str Name of operator (to be used by
pylops.utils.describe.describe)
- taxis
- Attributes:
- haxis
numpy.ndarray Spatial axis (or squared axis when
kind='parabolic')- nh
int Number of samples in spatial axis.
- nt
int Number of samples in time axis.
- dh
float Sampling step in spatial axis.
- dt
float Sampling step in time axis.
- px
numpy.ndarray Axis of scanning variable \(p_x\) of parametric curve
- npx
int Number of samples in \(p_x\) axis.
- f
numpy.ndarray Fourier axis.
- nfft2
int Number of samples in positive Fourier axis.
- cdtype
str Complex type associated with
dtype.- flims
tuple Indices of lower and upper limits of Fourier axis to be used in
- num_blocks_matvec
tuple Number of blocks in each dimension for
matvec(only whenengine=cuda)- num_blocks_rmatvec
tuple Number of blocks in each dimension for
rmatvec(only whenengine=cuda)- dims
tuple Shape of the array after the adjoint, but before flattening.
For example,
x_reshaped = (Op.H * y.ravel()).reshape(Op.dims).- dimsd
tuple Shape of the array after the forward, but before flattening.
For example,
y_reshaped = (Op * x.ravel()).reshape(Op.dimsd).- shape
tuple Operator shape.
- haxis
- Raises:
- ValueError
If
engineis neithernumpy,numba, norcuda.
Notes
The FourierRadon2D operator applies the Radon transform in the frequency domain. After transforming a 2-dimensional array of size \([n_x \times n_t]\) into the frequency domain, the following linear transformation is applied to each frequency component in adjoint mode:
\[\begin{split}\begin{bmatrix} m(p_{x,1}, \omega_i) \\ m(p_{x,2}, \omega_i) \\ \vdots \\ m(p_{x,N_p}, \omega_i) \end{bmatrix} = \begin{bmatrix} e^{-j \omega_i p_{x,1} x^l_1} & e^{-j \omega_i p_{x,1} x^l_2} & \ldots & e^{-j \omega_i p_{x,1} x^l_{N_x}} \\ e^{-j \omega_i p_{x,2} x^l_1} & e^{-j \omega_i p_{x,2} x^l_2} & \ldots & e^{-j \omega_i p_{x,2} x^l_{N_x}} \\ \vdots & \vdots & \ddots & \vdots \\ e^{-j \omega_i p_{x,N_p} x^l_1} & e^{-j \omega_i p_{x,N_p} x^l_2} & \ldots & e^{-j \omega_i p_{x,N_p} x^l_{N_x}} \\ \end{bmatrix} \begin{bmatrix} d(x_1, \omega_i) \\ d(x_2, \omega_i) \\ \vdots \\ d(x_{N_x}, \omega_i) \end{bmatrix}\end{split}\]where \(l=1,2\). Similarly the forward mode is implemented by applying the transpose and complex conjugate of the above matrix to the model transformed to the Fourier domain.
Refer to [1] for more theoretical and implementation details.
[1]Sacchi, M. “Statistical and Transform Methods for Geophysical Signal Processing”, 2007.
Methods
__init__(taxis, haxis, pxaxis, nfft[, ...])adjoint()apply_columns(cols)Apply subset of columns of operator
cond([uselobpcg])Condition number of linear operator.
conj()Complex conjugate operator
div(y[, niter, densesolver])Solve the linear problem \(\mathbf{y}=\mathbf{A}\mathbf{x}\).
dot(x)Matrix-matrix or matrix-vector multiplication.
eigs([neigs, symmetric, niter, uselobpcg])Most significant eigenvalues of linear operator.
matmat(X)Matrix-matrix multiplication.
matvec(x)Matrix-vector multiplication.
reset_count()Reset counters
rmatmat(X)Matrix-matrix multiplication.
rmatvec(x)Adjoint matrix-vector multiplication.
todense([backend])Return dense matrix.
toimag([forw, adj])Imag operator
toreal([forw, adj])Real operator
tosparse()Return sparse matrix.
trace([neval, method, backend])Trace of linear operator.
transpose()