下三角行列M(厳密、対角線上に0)があります。これを効率的に対称行列に変えたいと思います。(例えば、やりたいM<-M+M'
)。私はEigenを使用しています。
私の問題は、私がやっているということです:
U=U+U.transpose();
しかし、ドキュメントを読むと、おそらく、および/またはなどのいくつかの機能を利用する必要があると感じていますが、明らかな候補です:.noalias()
.transposeInPlace()
U+=U.transposeInPlace();
エラーが発生します。
編集:
エラーメッセージは次のとおりです。
.cpp:210:24: note: candidates are:
/eigen/Eigen/src/Core/MatrixBase.h:183:14: note: template<class OtherDerived> Derived& Eigen::MatrixBase::operator+=(const Eigen::MatrixBase<OtherDerived>&) [with OtherDerived = OtherDerived, Derived = Eigen::Matrix<float, -0x00000000000000001, -0x00000000000000001>]
/eigen/Eigen/src/Core/MatrixBase.h:517:46: note: template<class OtherDerived> Derived& Eigen::MatrixBase::operator+=(const Eigen::ArrayBase<OtherDerived>&) [with OtherDerived = OtherDerived, Derived = Eigen::Matrix<float, -0x00000000000000001, -0x00000000000000001>]
/eigen/Eigen/src/Core/DenseBase.h:266:14: note: template<class OtherDerived> Derived& Eigen::DenseBase::operator+=(const Eigen::EigenBase<OtherDerived>&) [with OtherDerived = OtherDerived, Derived = Eigen::Matrix<float, -0x00000000000000001, -0x00000000000000001>]