I have two matrices A and Z.
A is a symmetric $t$-by-$t$ matrix with ones along the diagonal:
$$ A= \left[\begin{matrix} 1 & c_{1,1} & \cdots & c_{t,1}\\ c_{1,1} & 1 & \cdots & c_{t,2}\\ \vdots & \vdots & \ddots & \vdots \\ c_{t,1} & c_{t,2} & \cdots & 1 \end{matrix}\right] $$
Z is an "indicator matrix". What I mean by this is that it is an $n$-by-$t$ matrix with exactly $n$ entries that are $1$, and all the rest of the entries are $0$. There is exactly one $1$ per row:
$$ Z= \left[\begin{matrix} 1 & 0 & \cdots & 0\\ 1 & 0 & \cdots & 0\\ 1 & 0 & \cdots & 0\\ 0 & 1 & \cdots & 0\\ 0 & 1 & \cdots & 0\\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & 1\\ 0 & 0 & \cdots & 1 \end{matrix}\right] $$
This type of matrix is common in statistics because it maps observations (there are $n$ of them) to groups (there are $t$ groups).
I need to compute the eigen vectors of $ZAZ^T$. I'm sure it's of the same rank as $A$, but somehow R (the programming language I use) still gives me back something. In cases where $n >> t$ (most of the cases I'm interested in), it takes a lot longer to compute the eigen vectors of $ZAZ^T$ than to compute the eigen vectors of $A$.
Is there any way to "post-process" the eigen vectors of $A$ to give the eigen vectors of $ZAZ^T$?
Let
$B=ZAZ^{T}$
Find the eigenvalue-eigenvector decomposition of $A$,
$A=UDU^{T}$.
Then
$B=ZUDU^{T}Z^{T}=(ZU)D(ZU)^{T}$
You've now diagonalized $B=ZAZ^{T}$. The columns of $ZU$ are eigenvectors of $B$ (corresponding to $B$'s nonzero eigenvalues.)
Note that because $Z$ isn't a unitary transformation, this screws up the scaling of the eigenvalues. You can easily work out that the eigenvalues of $A$ have been scaled (by the number of ones in each column of $Z$.)