added: MatrixOps::extractDiagonal

extracts the diagonal of a matrix as a new matrix
This commit is contained in:
Arne Morten Kvarving 2012-11-20 09:56:02 +01:00
parent 12a5638ab4
commit e4ad0d62df
2 changed files with 19 additions and 0 deletions

View File

@ -55,6 +55,11 @@ class MatrixOps {
//! \param[in] symmetric If true, augment symmetrically
static Matrix augment(const Matrix& A, const Matrix& B,
size_t r0, size_t c0, bool symmetric);
//! \brief Extract the diagonal of a matrix into a new matrix
//! \param[in] The matrix to extract the diagonal from
//! \returns M = diag(A)
static Matrix extractDiagonal(const Matrix& A);
};
#include "matrixops_impl.hpp"

View File

@ -144,3 +144,17 @@ Matrix MatrixOps::augment(const Matrix& A, const Matrix& B,
return result;
}
Matrix MatrixOps::extractDiagonal(const Matrix& A)
{
AdjacencyPattern adj;
adj.resize(A.M());
for (size_t i=0;i<A.M();++i)
adj[i].insert(i);
Matrix result;
fromAdjacency(result,adj,A.M(),A.M());
for (size_t i=0;i<A.M();++i)
result[i][i] = A[i][i];
return result;
}