本文整理汇总了C++中eigen::MatrixBase::rowwise方法的典型用法代码示例。如果您正苦于以下问题:C++ MatrixBase::rowwise方法的具体用法?C++ MatrixBase::rowwise怎么用?C++ MatrixBase::rowwise使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类eigen::MatrixBase
的用法示例。
在下文中一共展示了MatrixBase::rowwise方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: normalize_row_sums
IGL_INLINE void igl::normalize_row_sums(
const Eigen::MatrixBase<DerivedA>& A,
Eigen::MatrixBase<DerivedB> & B)
{
#ifndef NDEBUG
// loop over rows
for(int i = 0; i < A.rows();i++)
{
typename DerivedB::Scalar sum = A.row(i).sum();
assert(sum != 0);
}
#endif
B = (A.array().colwise() / A.rowwise().sum().array()).eval();
}
示例2:
Eigen::MatrixBase<Eigen::Matrix<typename matrix::Scalar, matrix::Rows + 1, matrix::Rows + 1>> get_rigid_transform(
const Eigen::MatrixBase<matrix>& a,
const Eigen::MatrixBase<matrix>& b)
{
Eigen::Matrix<typename matrix::Scalar, matrix::Rows + 1, matrix::Rows + 1> transform =
Eigen::Matrix<typename matrix::Scalar, matrix::Rows + 1, matrix::Rows + 1>::Identity();
auto centroid_a = a.colwise() - a.rowwise().mean();
auto centroid_b = b.colwise() - b.rowwise().mean();
auto svd = (centered_a * centered_b.transpose()).eval().jacobiSVD(Eigen::ComputeFullU | Eigen::ComputeFullV);
auto U = svd.matrixU();
auto V = svd.matrixV();
auto R = (V * U.transpose()).eval();
auto C = Eigen::Matrix<typename matrix::Scalar, matrix::Rows, matrix::Rows>::Identity().eval();
C(matrix::Rows - 1, matrix::Rows - 1) = R.determinant();
R = V * C * U.transpose();
auto T = -R * centroid_a + centroid_b;
transform.block<matrix::Rows, matrix::Rows>(0, 0) = R;
transform.block<matrix::Rows, 1>(0, matrix::Rows) = T;
return transform;
}