首先,我不确定这是否可行.我想在特征库中检查矩阵是否为零(注意:我必须声明它).我的解决方案是检查所有元素是否为零.我的问题是,在保持矩阵大小不变的情况下,还有另一种方法可以完成这项任务吗?
#include <iostream>
#include <Eigen/Dense>
// true if it is empty, false if not
bool isEmpty(Eigen::MatrixXd& Z)
{
bool check = true;
for (int row(0); row < Z.rows(); ++row)
for (int col(0); col < Z.cols(); ++col){
if ( Z(row,col) != 0 ){
check = false;
break;
}
}
return check;
}
int main()
{
Eigen::MatrixXd Z(3,3);
if ( isEmpty(Z) )
std::cout << Z.size() << std::endl;
else
Z.setZero(0,0); // resize the matrix (not clever way I know)
std::cin.get();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
gga*_*ael 13
您可以将所有系数设置为零而不更改矩阵大小:
Z.setZero();
Run Code Online (Sandbox Code Playgroud)
你可以检查所有系数是否为零:
bool is_empty = Z.isZero(0);
Run Code Online (Sandbox Code Playgroud)
这里的参数是检查数字是否为数字零的相对精度.看到这个文档.
| 归档时间: |
|
| 查看次数: |
6889 次 |
| 最近记录: |