u_complementary_projection#
- u_complementary_projection(a)[source]#
Return the orthogonal projection function over \(a^{\perp}\).
The function returned computes the orthogonal projection over \(a^{\perp}\) (the complementary projection over a) in the Hilbert space of \(U\)-centered distance matrices.
The projection of a matrix \(B\) over a matrix \(A^{\perp}\) is defined as
\[\text{proj}_{A^{\perp}}(B) = B - \text{proj}_A(B)\]- Parameters
a (Array) – \(U\)-centered distance matrix.
- Returns
Function that receives a \(U\)-centered distance matrices and computes its orthogonal projection over \(a^{\perp}\).
- Return type
Callable[[Array], Array]
See also
u_projection u_centered
Examples
>>> import numpy as np >>> import dcor >>> a = np.array([[ 0., 3., 11., 6.], ... [ 3., 0., 8., 3.], ... [ 11., 8., 0., 5.], ... [ 6., 3., 5., 0.]]) >>> b = np.array([[ 0., 13., 11., 3.], ... [ 13., 0., 2., 10.], ... [ 11., 2., 0., 8.], ... [ 3., 10., 8., 0.]]) >>> u_a = dcor.u_centered(a) >>> u_a array([[ 0., -2., 1., 1.], [-2., 0., 1., 1.], [ 1., 1., 0., -2.], [ 1., 1., -2., 0.]]) >>> u_b = dcor.u_centered(b) >>> u_b array([[ 0. , 2.66666667, 2.66666667, -5.33333333], [ 2.66666667, 0. , -5.33333333, 2.66666667], [ 2.66666667, -5.33333333, 0. , 2.66666667], [-5.33333333, 2.66666667, 2.66666667, 0. ]]) >>> proj_a = dcor.u_complementary_projection(u_a) >>> proj_a(u_a) array([[0., 0., 0., 0.], [0., 0., 0., 0.], [0., 0., 0., 0.], [0., 0., 0., 0.]]) >>> proj_a(u_b) array([[ 0.0000000e+00, -4.4408921e-16, 4.0000000e+00, -4.0000000e+00], [-4.4408921e-16, 0.0000000e+00, -4.0000000e+00, 4.0000000e+00], [ 4.0000000e+00, -4.0000000e+00, 0.0000000e+00, -4.4408921e-16], [-4.0000000e+00, 4.0000000e+00, -4.4408921e-16, 0.0000000e+00]]) >>> proj_null = dcor.u_complementary_projection(np.zeros((4, 4))) >>> proj_null(u_a) array([[ 0., -2., 1., 1.], [-2., 0., 1., 1.], [ 1., 1., 0., -2.], [ 1., 1., -2., 0.]])