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:
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$.