I am current trying to work on one algorithm, that for Iteration $t$, I need to calculate the SVD of $(X\text{diag}(v^t))^T(X\text{diag}(v^t))$.
This could be very slow if $X$ is of high dimension.
However, since we can observe that $X$ never changes across iterations, is there any way that I could only calculate the SVD of $X^TX$ only once and get singular values $s$ and only deal with $s$ and $(v^t)^2$ at Iteration $t$?
If not, then is there a way that I could do this approximately?
If there is absolutely no such a solution, then why?
Thanks.
Edit after 10 days:
It seems there is no such a solution.
Let $D= diag(v^t)$. Then, you have $(X D)^T (X D) = D^T X^T X D$. Now, if the SVD of $X$ is $U S V^T$, $X^T X = V S^T U^T U S V^T = V S^2 V^T$ where $S$ is the square matrix of the appropriate dimensions containing the squared singular values of $X$. Since $D$ is diagonal, $D^T = D$, and diagonal matrices commute with other matrices, so $D^T X^T X D = D X^T X D = D V S^2 V^T D = V D S^2 D V^T$ where $D S^2 D = D^2 S^2$ is a diagonal matrix containing the squared singular values of $S$ multiplied by the corresponding squared entries in $D$.
So, to calculate the eigendecomposition/singular value decomposition of this matrix, you simply calculate out the SVD of $X=U S V^T$. The eigenvectors/left singular vectors/right singular vectors are given by $V$. The singular values/eigenvalues are given by $d_i^2 \sigma_i^2$ where $d_i$ is the $i$-th entry in $v^t$ and $\sigma_i^2$ is the $i$-th squared singular value of $X$.