pyFDN.process_fdn#

pyFDN.process_fdn(input_signal, delays, A, B, C, D, *, absorption=None, extra_matrix=None)[source]#

Simulate the feedback delay network using block processing.

Recursion per block (same ordering as the MATLAB processFDN): delay output -> absorption filters -> output gains C, and in the feedback path: absorbed delay output -> feedback matrix A -> extra matrix -> + B input.

Parameters:
  • input_signal (array) – Input of shape (num_samples,) or (num_samples, num_inputs).

  • delays (array) – Delay lengths in samples, shape (N,).

  • A (array) – Feedback matrix: static (N, N) or FIR polynomial (N, N, order) in z^{-1} convention.

  • B (array) – Static input, output, and direct gains.

  • C (array) – Static input, output, and direct gains.

  • D (array) – Static input, output, and direct gains.

  • absorption (object, optional) – Per-delay-line SOS filters; see pyFDN.dsp.SOSFilterBank for accepted shapes. Applied to the delay outputs inside the loop.

  • extra_matrix (object, optional) – Object with a filter(block) -> block method applied after the feedback matrix (e.g. TimeVaryingMatrix).

Returns:

output – Shape (num_samples, num_outputs), squeezed.

Return type:

ndarray