myuan
1
Hello,
Is it possible to calculate the pseudo-inverse of a non-square matrix in Stan?
generated quantities {
...
Dt = inverse(Z) * Zt * D * (Zt)' * inverse((Z)');
...
}
It returns “Exception: inverse: Expecting a square matrix; rows of m () and columns of m () must match in size”. Same for matrix division \ and / .
I also tried to use SVD to compute inverse(A), based on A = USV^{T}, A^{+} = VS^{+}U^{T} . However,
vector singular_values(matrix A)
it only gives singular values of A, not V and U.
Thanks!
V consists of (normalized) eigenvectors of A^TA.
I wonder why V or U is not provided through singular_values
.
Inability to return an array of matrices (or vectors) with different dimensions.
One option is to return concatenated \Sigma, U^T, V, ugly but it avoids put users into brute forcing eigenvector of A^TA.
myuan
5
Thanks for your replies. However, I found stan can only compute eigenvector for symmetric matrix.
matrix eigenvectors_sym(matrix A)
myuan
7
Thanks for your suggestion! I had tried. I used qr_thin_Q
, but it exceeds the memory of my computer. :/