本文整理汇总了C++中eigen::MatrixXd::nonZeros方法的典型用法代码示例。如果您正苦于以下问题:C++ MatrixXd::nonZeros方法的具体用法?C++ MatrixXd::nonZeros怎么用?C++ MatrixXd::nonZeros使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类eigen::MatrixXd
的用法示例。
在下文中一共展示了MatrixXd::nonZeros方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: pinv_matrix
Eigen::MatrixXd pinv_matrix(Eigen::MatrixXd pmat)
{
MatrixXd pinvmat(pmat.cols(), pmat.rows());
if (pmat.nonZeros() == 0){
pinvmat = pmat.transpose();
}
else{
pair<pair<Eigen::MatrixXd, Eigen::MatrixXd>, Eigen::VectorXd> U_L = latenttree_svd(pmat);
Eigen::VectorXd singularValues_inv = pinv_vector(U_L.second);
pinvmat = (U_L.first.second*singularValues_inv.asDiagonal()*U_L.first.first.transpose());
}
return pinvmat;
}
示例2: sqrt_matrix
// sqrt
Eigen::MatrixXd sqrt_matrix(Eigen::MatrixXd pinvmat)
{
Eigen::MatrixXd sqrtmat;
if (pinvmat.nonZeros() == 0){
sqrtmat = pinvmat.transpose();
}
else{
pair<pair<Eigen::MatrixXd, Eigen::MatrixXd>, Eigen::VectorXd> U_L = latenttree_svd(pinvmat);
Eigen::VectorXd singularValues_sqrt = U_L.second.head(KHID);
Eigen::MatrixXd left_sing_vec = U_L.first.first.leftCols(KHID);
Eigen::MatrixXd right_sing_vec = U_L.first.second.leftCols(KHID);
for (long i = 0; i < KHID; ++i) {
singularValues_sqrt(i) = sqrt(U_L.second(i));
}
sqrtmat = (left_sing_vec*singularValues_sqrt.asDiagonal()*right_sing_vec.transpose());
}
return sqrtmat;
}