pyFDN.process_dss#

pyFDN.process_dss(input_signal, delays, A, B, C, D, *, post_delay=None, post_matrix=None, post_output=None)[source]#

Process a delay state-space system using block processing.

One-shot form of dss_to_td(...).process_signal(input_signal): a fresh pyFDN.td graph is built for every call. The three optional hooks are runtime objects that implement process_block(block) (or SOS banks). To process an pyFDN.FDNBuild, use pyFDN.process_fdn().

The recursion is

delay -> post_delay -> C on the wet path and delay -> post_delay -> A -> post_matrix -> + B input in the loop. post_output processes the wet signal before the direct D path is added.

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

  • delays (ArrayLike) – Positive delay lengths in samples, shape (N,).

  • A (ArrayLike) – Static feedback matrix (N, N) or FIR polynomial matrix (N, N, order) in the z^-1 convention.

  • B (ArrayLike) – Static input, output, and direct gain matrices.

  • C (ArrayLike) – Static input, output, and direct gain matrices.

  • D (ArrayLike) – Static input, output, and direct gain matrices.

  • post_delay (Any | None) – Optional hooks, see pyFDN.dss_to_td().

  • post_matrix (Any | None) – Optional hooks, see pyFDN.dss_to_td().

  • post_output (Any | None) – Optional hooks, see pyFDN.dss_to_td().

Returns:

Processed signal with singleton dimensions removed.

Return type:

ndarray