pylops.signalprocessing.UDCT¶
- class pylops.signalprocessing.UDCT(dims, num_scales=None, wedges_per_direction=None, window_overlap=None, radial_frequency_params=None, window_threshold=1e-05, high_frequency_mode='curvelet', transform_kind='real', dtype='complex128', name='C')[source]¶
Uniform Discrete Curvelet Transform
Apply the Uniform Discrete Curvelet Transform (UDCT) to a multi-dimensional array of shape
dims.Note that the UDCT operator is an overload of the
curveletsimplementation of the UDCT transform. Refer to https://curvelets.readthedocs.io for a detailed description of the input parameters.- Parameters:
- dims
tuple Number of samples for each dimension
- num_scalesint, optional
Total number of scales (including lowpass scale 0). Must be >= 2. Used when angular_wedges_config is not provided. Default is 3.
- wedges_per_directionint, optional
Number of angular wedges per direction at the coarsest scale. The number of wedges doubles at each finer scale. Must be >= 3. Used when angular_wedges_config is not provided. Default is 3.
- window_overlapfloat, optional
Window overlap parameter controlling the smoothness of window transitions. If None and using num_scales/wedges_per_direction, automatically chosen based on wedges_per_direction. Default is None (auto) or 0.15.
- radial_frequency_paramstuple[float, float, float, float], optional
Radial frequency parameters defining the frequency bands. Default is (\(\pi/3\), \(2\pi/3\), \(2\pi/3\), \(4\pi/3\)).
- window_thresholdfloat, optional
Threshold for sparse window storage (values below this are stored as sparse). Default is 1e-5.
- high_frequency_mode{“curvelet”, “wavelet”}, optional
High frequency mode. “curvelet” uses curvelets at all scales, “wavelet” creates a single ring-shaped window (bandpass filter only, no angular components) at the highest scale with decimation=1. Default is “curvelet”.
- transform_kind{“real”, “complex”, “monogenic”}, optional
Type of transform to use:
“real” (default): Real transform where each band captures both positive and negative frequencies combined.
“complex”: Complex transform which separates positive and negative frequency components into different bands. Each band is scaled by \(\\sqrt{0.5}\).
- dtype
str, optional Type of elements in input array.
- name
str, optional Name of operator (to be used by
pylops.utils.describe.describe)
- dims
- Attributes:
- transform
curvelets.numpy.UDCT Curvelets transform object.
- 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. In this case, same as
dims.- shape
tuple Operator shape.
- transform
- Raises:
- ValueError
If any of the dimensions is odd-valued.
Notes
The UDCT operator applies the Uniform Discrete Curvelet Transform in forward mode and the Inverse Uniform Discrete Curvelet Transform in adjoint (and inverse) mode.
This transform decomposes a signal into different “scales” (analog to frequency in 1D, that is, how fast the signal is varying), “location” (equivalent to time in 1D, that is, where the signal is varying), and the direction in which the signal is varying (no 1D analog).
Methods
__init__(dims[, num_scales, ...])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.
inverse(x)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()