Unitary matrix completion problem

linear algebramatrix completionorthonormalunitary-matrices

Given orthonormal pair $(x_1,x_2)$, i.e., $\langle x_i,x_j\rangle=1$ for $i=j$ and $\langle x_i,x_j\rangle=0$ for $i\neq j$, how to construct unitary matrix $U\in\mathbb{C}^{n\times n}$ with first two columns being equal to $x_1\in\mathbb{C}^{n\times n}$ and $x_2\in\mathbb{C}^{n\times n}$, i.e., $U=[x_1 \quad x_2\quad U_{n\times (n-2)}]$?


My attempt: I was trying for $n=4$. Let $X=[x_1\quad x_2]$, then using svd $X=W\begin{bmatrix}
\sigma_1&\\&\sigma_2\\&\\&\end{bmatrix}V^*$
.

Let $S_U=\begin{bmatrix}
\sigma_1&&&\\&\sigma_2&&\\&&\sigma_1&\\&&&\sigma_2\end{bmatrix}$
, so basically I transform rectangular singular value matrix to square by repeating its existing singular values. Also let $V_u=\begin{bmatrix}
V&\\
&V
\end{bmatrix}$

, then $U=WS_uV_u^*$, however $U$ turns out not unitary.

Can you please suggest any method to perform this unitary matrix completion problem that will be easy to program?


EDIT: I have used this method also, to get $U$ close to unitary but not exactly unitary:

x3=null([x1 x2 ones(n,1)]');                   %to make sure <x1,x3>=0, <x2,x3>=0
x3=x3/sqrt(x3(1)^2+x3(2)^2+x3(3)^2+x3(4)^2);   %to make sure <x3,x3>=1
x4=null([x1 x2 x3]');                       %to make sure <x1,x4>=0, <x2,x4>=0, <x3,x4>=0
x4=x4/sqrt(x4(1)^2+x4(2)^2+x4(3)^2+x4(4)^2);   %to make sure <x4,x4>=1
U=[x1 x2 x3 x4];

Best Answer

Since you are apparently using Matlab, you could simply do the following:

U = [x1,x2,null([x1,x2]')];
Related Question