c++ - 关于 Eigen::MatrixXd 逐列计算的问题
问题描述
有没有按如下方式应用列计算?(每列除以该列的最后一个条目)
Eigen::MatrixXd A(3,5), B(3,5);
A << 1, 4, 9, 16, 25,
2, 4, 6, 8, 10,
1, 2, 3, 4, 5;
B = (A.col) / (A.bottomerows<1>).col;
和 B 将是:
B = 1, 2, 3, 4, 5,
2, 2, 2, 2, 2,
1, 1, 1, 1, 1;
解决方案
您正在寻找的功能是.hnormalized()
和.homogeneous()
。两者都可以这样应用.colwise()
:
Eigen::MatrixXd B = A.colwise().hnormalized().colwise().homogeneous();
.replicate()
你可以用这样的魔法来达到同样的效果:
Eigen::MatrixXd B = A.array() / A.row(2).replicate(A.rows(),1).array();
(如果A
是 a ArrayXXd
,而不是 a MatrixXd
,则无需编写.array()
)
推荐阅读
- javascript - 用JS改变元素的字体大小
- php - 使用php获取alexa排名
- ibm-cloud - cf UI 控制台的 API 端点 https://console.w3ibm.bluemix.net/
- jenkins - 从 Jenkins build 为 pull request 启用 Github 状态检查:抱歉,我们在上周找不到此存储库的任何状态检查
- vba - 子/函数调用中的括号和逗号分隔的参数?
- r - 日期比较 R
- c++ - Catch2 替代部分行为
- sql - 比较两个字符串的共同值
- javascript - document.getElementsByTagName 正在工作,但相同的功能不适用于 document.getElementById
- python - Django - 目录路径的哪个模型字段?