Chai Xiangyu | Research, Develop, Projects, Blogs Algorithm Armadillo使用介绍(五):any,all,.is_zero

Armadillo使用介绍(五):any,all,.is_zero

any

用途:any函数用于判断向量或者矩阵中任何元素非零或满足关系条件,满足则返回true,不满足则返回false。
类型:普通函数
该函数重载有any( V )、any( X )、any( X, dim )。
1、对于向量 V,如果向量的任何元素非零或满足关系条件,则返回 true。
2、对于矩阵X和

  • dim=0,返回一个行向量(类型为urowvec或umat),每个元素 (0 或 1) 指示X的相应列的任何元素是否非零;
  • dim=1,返回列向量(类型为ucolvec或umat),每个元素 (0 或 1) 指示X的相应行的任何元素是否非零。

3、dim参数是可选的;默认情况下dim=0。
4、可以使用关系运算符代替V或X,例如A > 0.9。
示例代码如下:

vec V = randu<vec>(10);
mat X = randu<mat>(5,5);

// status1 will be set to true if vector V has any non-zero elements
bool status1 = any(V);

// status2 will be set to true if vector V has any elements greater than 0.5
bool status2 = any(V > 0.5);

// status3 will be set to true if matrix X has any elements greater than 0.6;
// note the use of vectorise()
bool status3 = any(vectorise(X) > 0.6);

// generate a row vector indicating which columns of X have elements greater than 0.7
umat A = any(X > 0.7);

参考:Armadillo库文档any

all

用途:all函数用于判断向量或者矩阵中所有元素非零或满足关系条件,满足则返回true,不满足则返回false。
类型:普通函数
该函数重载有all( V )、all( X )、all( X, dim )。
1、对于向量 V,如果向量的所有元素非零或满足关系条件,则返回 true;反之返回false。
2、对于矩阵X和

  • dim=0,返回一个行向量(类型为urowvec或umat),每个元素 (0 或 1) 指示X的相应列的所有元素是否非零;
  • dim=1,返回列向量(类型为ucolvec或umat),每个元素 (0 或 1) 指示X的相应行的所有元素是否非零。

3、dim参数是可选的;默认情况下dim=0。
4、可以使用关系运算符代替V或X,例如A > 0.5。
示例代码如下:

vec V = randu<vec>(10);
mat X = randu<mat>(5,5);

// status1 will be set to true if vector V has all non-zero elements
bool status1 = all(V);

// status2 will be set to true if vector V has all elements greater than 0.5
bool status2 = all(V > 0.5);

// status3 will be set to true if matrix X has all elements greater than 0.6;
// note the use of vectorise()
bool status3 = all(vectorise(X) > 0.6);

// generate a row vector indicating which columns of X have all elements greater than 0.7
umat A = all(X > 0.7);

参考:Armadillo库文档all

.is_zero

用途:.is_zero函数用于判断矩阵中所有元素是否为0,是则返回true;反之返回false。
类型:普通函数
该函数重载有.is_zero()、.is_zero( tolerance )。
1、对于具有非复数元素的对象:如果每个元素的绝对值≤tolerance,则返回true;反之返回false。
2、对于具有复数元素的对象:如果每个元素的每个分量(实部和虚部)的绝对值≤tolerance,则返回true;反之返回false。
3、参数tolerance是可选的;默认情况下tolerance = 0。
示例代码如下:

mat A = zeros<mat>(5,5);

A(0,0) = datum::eps;

cout << A.is_zero()           << endl;
cout << A.is_zero(datum::eps) << endl;

参考:Armadillo库文档.is_zero

Leave a Reply

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Related Post