pyFDN.complete_general_mimo_svd#

pyFDN.complete_general_mimo_svd(A, k, tol_one=1e-08, choose_smallest_if_needed=True)[source]#

General MIMO completion via defect subspace (CS/SVD-based).

Given A (NxN) and k <= N, we aim for a balanced orthogonal/unitary block:

V = [[A, B],
     [C, D]]

with B in Nxk, C in kxN, D in kxk.

Exact orthogonality is guaranteed when A has:

  • N-k singular values equal to 1 (within tol_one)

  • k singular values strictly < 1

If the singular value pattern doesn’t match, we can still build the completion using the k smallest singular values (choose_smallest_if_needed=True), but V may deviate from unitary.

Construction (in the singular vector basis):

A = U1 S V1^* + U2 I V2^*
B = U1 sqrt(I - S^2)
C = sqrt(I - S^2) V1^*
D = -S

Returns: B (Nxk), C (kxN), D (kxk)