pyFDN.rand_admissible_homogeneous_allpass#

pyFDN.rand_admissible_homogeneous_allpass(G, range_)[source]#

Generate a random admissible diagonal matrix P for homogeneous uniallpass FDN.

Used with homogeneous_allpass_fdn(G, P) to obtain a uniallpass FDN with homogeneous decay. Admissibility is defined by the construction in the paper.

Parameters:
  • G ((N, N) array-like) – Diagonal attenuation matrix with 0 < diag(G) < 1.

  • range (tuple (low, high) or array-like of length 2) – Random range with 0 < low < high < 1. Diagonal entries of P are built from random ratios in [low, high] scaled by diag(G)^2.

Returns:

P – Admissible diagonal matrix (first diagonal entry 1, rest from cumprod).

Return type:

(N, N) ndarray

Examples

>>> G = np.diag([0.9, 0.8, 0.7])
>>> P = rand_admissible_homogeneous_allpass(G, (0.3, 0.8))
>>> A, b, c, d, U = homogeneous_allpass_fdn(G, P)