在特征库中检查矩阵中的所有项是否为零
Checking if all entries in the matrix are zero in Eigen Library
首先,我不确定这是否可能。我想检查矩阵是否为零或不在Eigen库(注:我必须声明它)。我的解决方法是检查是否所有元素都是零。我的问题是,有没有另一种方法来完成这个任务,同时保持矩阵的大小不变?
#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;
}
您可以将所有系数设置为零而不改变矩阵大小:
Z.setZero();
可以检查所有系数是否为零:
bool is_empty = Z.isZero(0);
这里的实参是检查一个数字是否为数字零的相对精度。
相关文章:
- C++类型特征,以查看是否可以<uint32_t>对类型"K"的任何变量调用"static_cast(k)"
- 编译时检查特征专用化是否具有唯一 ID
- 具有相同特征的两个对象是否只在内存中存储一次?无论定义它们的函数是什么,都是不同的
- 用于检测函数类型是否为否的特征
- 键入特征以检查类型是否可从流和 MSVC 读取
- 特征库是否修改C++语法
- 基于 SFINAE 的特征,用于确定是否支持运算符 +
- 如何构造一个类型特征,可以判断一个类型的私有方法是否可以在另一个类型的构造函数中调用?
- 特征:从数组类型中获取标量类型是否记录?
- 是否可以使用带有模板化参数的特征块表达式作为左值?
- 为什么不调用预期的函数?我是否对类型特征的理解不正确?
- 我是否可以拥有大小大于大小限制 (2^32) 的特征::VectorXd
- 特征"Sparse matrix format"示例是否包含错误?
- 是否应该避免使用不支持特征的模块?
- 是否可以从特征中的 1 开始索引矩阵?
- 现代C++的实验特征对于长期项目是否可靠?
- 特征:如何检查矩阵是否可逆
- 是否有任何类型特征控制成员类型(不是成员变量)
- 在编译时检查特征类型保存的数据在内存中是否连续
- 如果矩阵密集且不对称,特征库矩阵/矢量操作是否比 .net 矩阵/向量操作更快?