示例#1
0
        /// <summary>
        /// Recompose SVD to U*W*V'.
        /// </summary>
        /// <returns></returns>
        public MatrixFixed Recompose()
        {
            MatrixFixed W = new MatrixFixed(W_.Rows, W_.Columns);

            W.Fill(0);
            for (int i = 0; i < rank_; i++)
            {
                W[i, i] = W_[i, i];
            }

            return(U_ * W * V_.ConjugateTranspose());
        }
示例#2
0
        /// <summary>
        /// Calculate pseudo-inverse.
        /// </summary>
        /// <returns></returns>
        public MatrixFixed PseudoInverse()
        {
            MatrixFixed Winverse = new MatrixFixed(Winverse_.Rows, Winverse_.Columns);

            Winverse.Fill(0);
            for (int i = 0; i < rank_; i++)
            {
                Winverse[i, i] = Winverse_[i, i];
            }

            return(V_ * Winverse * U_.ConjugateTranspose());
        }