Find orthogonal complement with some constraints

linear algebraMATLABnumerical linear algebra

Let's suppose I have a matrix $B_{m \times n}$.

I have to find K matrices $m \times r$, where r is not necessarily the same for all the matrices ($r=r(k)$), $A_k$ to follow these two conditions:

  • $row(B) \perp row(A_k) \quad \forall k=1,..,K$
  • $\bigcap _{k=1}^Krow(A_k)= \{0 \} \quad $ where 0 is the zero vector.

I've to implement a code where the requirements for the matrices are the one above.

What I thought to do is to get the complete orthogonal complement of matrix B and take the required r columns to create the $A_k$ matrices, but then I have no guarantee that the second requirement holds! I'm not sure this is the right way to approach the problem.

In Matlab, to get the orthogonal complement I would write null(B')

Best Answer

The following steps will allow you to generate matrices $A_k$ satisfying the given requirements:

  • Find a matrix $M$ whose columns form a basis for the kernel of $B$ (for instance, we can take M = null(B) in matlab)
  • Partition the columns of the matrix $M$ into submatrices $M_k$. That is, take $$ M = \pmatrix{M_1 & M_2 & \cdots & M_K}. $$ The size of these matrices is not important. If $K$ is larger than the number of columns in $M$, then set any remaining $M_k$ to be the scalar quantity zero.

  • For all $k$, set $A_k = M_k'P_k$, where $P_k$ is any choice of $n_k \times r(k)$ matrix. $n_k$ denotes the number of columns in $M_k$.