Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 获取eigen::selfadjointView的上三角形<;较低>;()_C++_Eigen - Fatal编程技术网

C++ 获取eigen::selfadjointView的上三角形<;较低>;()

C++ 获取eigen::selfadjointView的上三角形<;较低>;(),c++,eigen,C++,Eigen,我有一个很好用的: MatrixXf Sig(p,p); Sig.selfadjointView<Lower>().rankUpdate(xSub.adjoint()); 但这样做会造成混乱——或者正如编译器所说: DetMCD_1.cpp: In function ‘float CStep(const MatrixXf&, Eigen::VectorXi&, const int&, const int&)’: DetMCD_1.cpp:263:21

我有一个很好用的:

MatrixXf Sig(p,p);
Sig.selfadjointView<Lower>().rankUpdate(xSub.adjoint());
但这样做会造成混乱——或者正如编译器所说:

DetMCD_1.cpp: In function ‘float CStep(const MatrixXf&, Eigen::VectorXi&, const int&, const int&)’:
DetMCD_1.cpp:263:21: error: ‘StrictUpper’ was not declared in this scope
DetMCD_1.cpp:263:34: error: no matching function for call to ‘Eigen::Matrix<float, -0x00000000000000001, -0x00000000000000001>::triangularView()’
DetMCD_1.cpp:263:34: note: candidates are:
/home/kaveh/R/x86_64-pc-linux-gnu-library/2.15/RcppEigen/include/Eigen/src/Core/MatrixBase.h:248:79: note: template<unsigned int Mode> typename Eigen::MatrixBase<Derived>::TriangularViewReturnType<Mode>::Type Eigen::MatrixBase::triangularView() [with unsigned int Mode = Mode, Derived = Eigen::Matrix<float, -0x00000000000000001, -0x00000000000000001>, typename Eigen::MatrixBase<Derived>::TriangularViewReturnType<Mode>::Type = <type error>]
/home/kaveh/R/x86_64-pc-linux-gnu-library/2.15/RcppEigen/include/Eigen/src/Core/MatrixBase.h:249:84: note: template<unsigned int Mode> typename Eigen::MatrixBase<Derived>::ConstTriangularViewReturnType<Mode>::Type Eigen::MatrixBase::triangularView() const [with unsigned int Mode = Mode, Derived = Eigen::Matrix<float, -0x00000000000000001, -0x00000000000000001>, typename Eigen::MatrixBase<Derived>::ConstTriangularViewReturnType<Mode>::Type = <type error>]
DetMCD_1.cpp:263:78: error: no matching function for call to ‘Eigen::Transpose<const Eigen::Matrix<float, -0x00000000000000001, -0x00000000000000001> >::triangularView() const’
DetMCD_1.cpp:263:78: note: candidates are:
/home/kaveh/R/x86_64-pc-linux-gnu-library/2.15/RcppEigen/include/Eigen/src/Core/MatrixBase.h:248:79: note: template<unsigned int Mode> typename Eigen::MatrixBase<Derived>::TriangularViewReturnType<Mode>::Type Eigen::MatrixBase::triangularView() [with unsigned int Mode = Mode, Derived = Eigen::Transpose<const Eigen::Matrix<float, -0x00000000000000001, -0x00000000000000001> >, typename Eigen::MatrixBase<Derived>::TriangularViewReturnType<Mode>::Type = <type error>]
/home/kaveh/R/x86_64-pc-linux-gnu-library/2.15/RcppEigen/include/Eigen/src/Core/MatrixBase.h:249:84: note: template<unsigned int Mode> typename Eigen::MatrixBase<Derived>::ConstTriangularViewReturnType<Mode>::Type Eigen::MatrixBase::triangularView() const [with unsigned int Mode = Mode, Derived = Eigen::Transpose<const Eigen::Matrix<float, -0x00000000000000001, -0x00000000000000001> >, typename Eigen::MatrixBase<Derived>::ConstTriangularViewReturnType<Mode>::Type = <type error>]
make: *** [DetMCD_1.o] Error 1
DetMCD_1.cpp:float-CStep(常数矩阵x&,本征::向量x&,常数整数&,常数整数&)函数中:
DetMCD_1.cpp:263:21:错误:“StrictUpper”未在此范围内声明
DetMCD_1.cpp:263:34:错误:调用“Eigen::Matrix::triangularView()”时没有匹配函数
DetMCD_1.cpp:263:34:注:候选人为:
/home/kaveh/R/x86_64-pc-linux-gnu-library/2.15/RcppEigen/include/Eigen/src/Core/MatrixBase.h:248:79:注意:模板typename Eigen::MatrixBase::TriangularViewReturnType::Type Eigen::MatrixBase::TriangularViewReturnType::triangularView()
/home/kaveh/R/x86_64-pc-linux-gnu-library/2.15/RcppEigen/include/Eigen/src/Core/MatrixBase.h:249:84:注意:模板typename Eigen::MatrixBase::constrangularviewreturntype::Type Eigen::MatrixBase::triangularviewreturntype::triangularView()const[带无符号int Mode=Mode,派生=Eigen::MatrixBase::MatrixBase::MatrixBase::constrangularviewreturntype=]
DetMCD_1.cpp:263:78:错误:调用“Eigen::Transpose::triangularView()const”时没有匹配函数
DetMCD_1.cpp:263:78:注:候选人为:
/home/kaveh/R/x86_64-pc-linux-gnu-library/2.15/RcppEigen/include/Eigen/src/Core/MatrixBase.h:248:79:注意:模板typename Eigen::MatrixBase::TriangularViewReturnType::Type Eigen::MatrixBase::TriangularViewReturnType::triangularView()
/home/kaveh/R/x86_64-pc-linux-gnu-library/2.15/RcppEigen/include/Eigen/src/Core/MatrixBase.h:249:84:注意:模板typename Eigen::MatrixBase::constrangularviewerturntype::Type Eigen::MatrixBase::triangularviewerturntype::triangularView()const[带无符号int Mode=Mode,派生=Eigen::Transpose,typename Eigen::MatrixBase::constrangularviewerturntype::triangularviewerntype=]
制造:**[DetMCD_1.o]错误1
我的问题是:鉴于我
Sig
的下三角部分,如何 说服艾根把全部还给我
矩阵?

这是因为有打字错误,它是严格上排的,而不是严格上排的。见相应的附件。以下两行是等效的:

长版本:

M.triangularView<StrictlyUpper>()=M.adjoint().triangularView<StrictlyUpper>();
M.triangularView()=M.adjoint().triangularView();
简短版本:

M.triangularView<StrictlyUpper>()=M.adjoint();
M.triangularView()=M.adjoint();
请注意,在大多数情况下,您不需要显式地计算上三角部分

M.triangularView<StrictlyUpper>()=M.adjoint();