pyFDN.td.KroneckerMatrix#

class pyFDN.td.KroneckerMatrix(angles, kernel_type='rotation')[source]#

Stateless Kronecker feedback matrix applied with the fast O(N log2 N) butterfly.

The operator form of pyFDN.kronecker_matrix(): an orthogonal N x N mixing matrix (N = 2**M) described by M kernel angles, applied without ever forming the matrix. Drop-in replacement for Gain(kronecker_matrix(angles)) that costs log2(N) butterfly levels per sample instead of a dense matrix product.

See TimeVaryingKroneckerMatrix for the modulated counterpart, and pyFDN.generate.kronecker_matrix for what the individual angles control.

Parameters:
  • angles (ArrayLike) – M kernel angles in radians, innermost (theta_1, the even/odd kernel) first.

  • kernel_type (str | Sequence[str]) – "rotation" or "reflection", either once for all kernels or one per kernel.

  • Example:: – td.KroneckerMatrix(pyFDN.kronecker_angles(32, theta5=np.pi / 16))

__init__(angles, kernel_type='rotation')[source]#

Methods

__init__(angles[, kernel_type])

process_block(block)

Process one block and advance internal state.

process_signal(signal, *[, squeeze])

Process a whole signal in one call, from the current state.

reset()

Clear internal state (no-op for stateless operators).

Attributes

in_channels

out_channels

process_block(block)[source]#

Process one block and advance internal state.

Return type:

ndarray