本文整理汇总了C++中eigen::MatrixXd::count方法的典型用法代码示例。如果您正苦于以下问题:C++ MatrixXd::count方法的具体用法?C++ MatrixXd::count怎么用?C++ MatrixXd::count使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类eigen::MatrixXd
的用法示例。
在下文中一共展示了MatrixXd::count方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: localWeighting
Eigen::MatrixXd localWeighting( const Eigen::MatrixXd &W, bool isFull, bool isSymmetric)
{
int n = W.rows();
double Ls = (W.count()-n)/2; //count number of edges of the graph
Eigen::MatrixXd C = Eigen::MatrixXd::Zero(n,n);
double Ws = 0.5*W.sum();
Eigen::VectorXd D = W.colwise().sum();
if (isFull)
{
if (isSymmetric)
{
computeC_symmetric_full(const_cast<Eigen::MatrixXd &>(W),C,D,n);
}
else
{
// this is a trick to ensure vectorizatoin and no cache misses! some tranpositions have to be made though
const_cast<Eigen::MatrixXd &>(W).transposeInPlace();
computeC_symmetric_full(const_cast<Eigen::MatrixXd &>(W),C,D,n);
const_cast<Eigen::MatrixXd &>(W).transposeInPlace();
C.transposeInPlace();
// the original code use vertical access to rows, but is slower
//compute_C_asymmetric_full(const_cast<Eigen::MatrixXd &>(W),C,D,n);
}
}
else
{
if (isSymmetric)
{
computeC_symmetric_sparse(const_cast<Eigen::MatrixXd &>(W),C,D,n);
}
else
{
compute_C_asymmetric_sparse(const_cast<Eigen::MatrixXd &>(W),C,D,n);
}
}
Eigen::MatrixXd G = ((Ls/Ws)*W).cwiseProduct(C);
Eigen::VectorXd DG = G.colwise().sum();
for (int i=0; i<n; i++)
{
G.row(i)/=DG(i);
}
return G;
}