Eigen教程1 - 基础

2023-05-16

博客新址: http://blog.xuezhisd.top
邮箱:xuezhisd@126.com


固定大小的矩阵和向量

/*
 * 参考链接:http://eigen.tuxfamily.org/dox-2.0/TutorialCore.html#TutorialCoreGettingStarted
*/

#include <iostream>
#include <Eigen/Core>

using namespace Eigen;  
using namespace std;  

// import most common Eigen types
int main(int, char *[])
{
	Matrix3f m3; //3x3单精度矩阵
	m3 << 1, 2, 3, 4, 5, 6, 7, 8, 9;
	Matrix4f m4 = Matrix4f::Identity(); //4x4单位矩阵(单精度)
	Vector4i v4(1, 2, 3, 4); // 长度为4的整型向量
	
	// 输出结果
	std::cout << "m3\n" << m3 << "\nm4:\n"
		<< m4 << "\nv4:\n" << v4 << std::endl;
}
  • Matrix表示矩阵,Vector表示向量,数字表示维度,最后的f和i分别表示单精度和整型数据类型。
  • 固定大小表示编译时,行数和列数是固定的。这时,Eigen不会分配动态内存。这对于比较小的尺寸比较适合,比如16x16。

动态大小的矩阵和向量

/*
 * 参考链接:http://eigen.tuxfamily.org/dox-2.0/TutorialCore.html#TutorialCoreGettingStarted
*/

#include <iostream>
#include <Eigen/Core>

using namespace Eigen;  
using namespace std;  

int main(int, char *[])
{
	// 动态矩阵
	for (int size=1; size<=4; ++size)
	{
		MatrixXi m(size,size+1); // 一个整型的大小为 (size)x(size+1) 的矩阵
		for (int j=0; j<m.cols(); ++j) // 遍历列
			for (int i=0; i<m.rows(); ++i) // 遍历行
				m(i,j) = i+j*m.rows(); // 使用圆括号m(i,j)访问矩阵的元素
		std::cout << m << "\n\n"; //打印矩阵
	}

	// 动态向量
	VectorXf v(4); // 定义一个4维单精度向量
	// 使用圆括号()或方括号[]访问向量元素
	v[0] = 1; v[1] = 2; v(2) = 3; v(3) = 4;
	std::cout << "\nv:\n" << v << std::endl;
}
  • 小结:X表示动态大小。
  • #include <Eigen/Eigen>将包含所有的Eigen函数。#include <Eigen/Dense>包含所有普通矩阵函数,不包括稀疏矩阵函数。它们会增加编译时间。

矩阵和向量类型

  • Eigen中的所有密集矩阵和向量都是通过Matrix类来表示的。Matrix通过一系列的模板参数来生成具体的类别。
  • Matrix<Scalar, RowsAtCompileTime, ColsAtCompileTime>中,Scalar表示数据类型,RowsAtCompileTime和ColsAtCompileTime分别表示编译时的行数和列数。
  • Vector3d 定义为 Matrix<double, 3, 1>
  • 对于动态大小的类型,在编译时不指定行数和列数,使用Eigen::Dynamic。比如,VectorXd定义为Matrix<double, Dynamic, 1>

访问元素

  • Eigen支持以下的读/写元素语法:
matrix(i,j);
vector(i)
vector[i]
vector.x() // first coefficient
vector.y() // second coefficient
vector.z() // third coefficient
vector.w() // fourth coefficient
  • 矩阵只能通过圆括号()访问;
  • 向量可以通过圆括号()和方括号[]访问。
  • 上述的元素访问方法都通过断言检查范围,代价比较大。
    • 通过定义EIGEN_NO_DEBUG 或 NDEBUG,取消断言。
    • 通过使用coeff()coeffRef(),来取消检查。比如,MatrixBase::coeff(int,int) const, MatrixBase::coeffRef(int,int)等。

创建和初始化矩阵和向量

通过预定义矩阵初始化

创建固定大小的矩阵和向量
/*
 * 参考链接:http://eigen.tuxfamily.org/dox-2.0/TutorialCore.html#TutorialCoreGettingStarted
*/

#include <iostream>
#include <Eigen/Core>

using namespace Eigen;  
using namespace std;  

int main(int, char *[])
{
	float value = 3.0;
	Matrix3f x; // 创建一个3x3的单精度矩阵
	x = Matrix3f::Zero(); //全零矩阵
	cout << x << endl << endl;
	x = Matrix3f::Ones(); //全一矩阵
	cout << x << endl << endl;
	x = Matrix3f::Constant(value); //全value矩阵
	cout << x << endl << endl;
	x = Matrix3f::Identity(); //单位矩阵
	cout << x << endl << endl;
	x = Matrix3f::Random(); // 随机矩阵
	cout << x << endl << endl;
	x.setZero();
	cout << x << endl << endl;
	x.setOnes();
	cout << x << endl << endl;
	x.setIdentity();
	cout << x << endl << endl;
	x.setConstant(value);
	cout << x << endl << endl;
	x.setRandom();
	cout << x << endl << endl;
}
创建动态大小的矩阵
/*
 * 参考链接:http://eigen.tuxfamily.org/dox-2.0/TutorialCore.html#TutorialCoreGettingStarted
*/

#include <iostream>
#include <Eigen/Core>

using namespace Eigen;  
using namespace std;  

int main(int, char *[])
{
	float value = 3.0f;
	int rows = 3;
	int cols = 4;
	MatrixXf x;
	x = MatrixXf::Zero(rows, cols);
	cout << x << endl << endl;
	x = MatrixXf::Ones(rows, cols);
	cout << x << endl << endl;
	x = MatrixXf::Constant(rows, cols, value);
	cout << x << endl << endl;
	x = MatrixXf::Identity(rows, cols);
	cout << x << endl << endl;
	x = MatrixXf::Random(rows, cols);
	cout << x << endl << endl;
	x.setZero(rows, cols);
	cout << x << endl << endl;
	x.setOnes(rows, cols);
	cout << x << endl << endl;
	x.setConstant(rows, cols, value);
	cout << x << endl << endl;
	x.setIdentity(rows, cols);
	cout << x << endl << endl;
	x.setRandom(rows, cols);
	cout << x << endl << endl;
	return 0;
}
创建动态大小的向量
/*
 * 参考链接:http://eigen.tuxfamily.org/dox-2.0/TutorialCore.html#TutorialCoreGettingStarted
*/

#include <iostream>
#include <Eigen/Core>

using namespace Eigen;  
using namespace std;  

int main(int, char *[])
{
	int size = 3;
	float value = 3.0f;
	VectorXf x; // 定义动态向量
	x = VectorXf::Zero(size); //全0向量
	cout << x << endl << endl;
	x = VectorXf::Ones(size); //全1向量
	cout << x << endl << endl;
	x = VectorXf::Constant(size, value);//全value向量
	cout << x << endl << endl;
	//x = VectorXf::Identity(size);//报错
	x = VectorXf::Random(size);
	cout << x << endl << endl;
	x.setZero(size);
	cout << x << endl << endl;
	x.setOnes(size);
	cout << x << endl << endl;
	x.setConstant(size, value);
	cout << x << endl << endl;
	//x.setIdentity(size);
	x.setRandom(size);
	cout << x << endl << endl;
	return 0;
}
创建固定大小的基向量
/*
 * 参考链接:http://eigen.tuxfamily.org/dox-2.0/TutorialCore.html#TutorialCoreGettingStarted
*/

#include <iostream>
#include <Eigen/Core>

using namespace Eigen;  
using namespace std;  

int main(int, char *[])
{
	Vector3f x;
	x = Vector3f::UnitX(); // 1 0 0
	cout << x << endl << endl;
	x = Vector3f::UnitY(); // 0 1 0
	cout << x << endl << endl;
	x = Vector3f::UnitZ(); // 0 0 1
	cout << x << endl << endl;

	return 0;
}
创建动态大小的基向量
/*
 * 参考链接:http://eigen.tuxfamily.org/dox-2.0/TutorialCore.html#TutorialCoreGettingStarted
*/

#include <iostream>
#include <Eigen/Core>

using namespace Eigen;  
using namespace std;  

int main(int, char *[])
{
	VectorXf x;
	x = VectorXf::Unit(4,1);
	cout << x << endl << endl;
	x = Vector4f(0,1,0,0);
	cout << x << endl << endl;
	x = Vector4f::UnitY();
	cout << x << endl << endl;

	return 0;
}
例子
/*
 * 参考链接:http://eigen.tuxfamily.org/dox-2.0/TutorialCore.html#TutorialCoreGettingStarted
*/

#include <iostream>
#include <Eigen/Core>

using namespace Eigen;  
using namespace std;  

int main(int, char *[])
{

	cout << MatrixXf::Constant(2, 3, sqrt(2)) << endl; // 2x3的单精度矩阵
	RowVector3i v; //3维行向量
	v.setConstant(6);
	cout << "v = " << v << endl;

	return 0;
}

通过Cast的方式初始化

相同尺寸的矩阵兼容
  • 元素类型通过MatrixBase::cast()自动转换。
/*
 * 参考链接:http://eigen.tuxfamily.org/dox-2.0/TutorialCore.html#TutorialCoreGettingStarted
*/

#include <iostream>
#include <Eigen/Core>
#include <Eigen/Eigen>

using namespace Eigen;  
using namespace std;  

int main(int, char *[])
{
	Vector3d md(1,2,3);
	Vector3f mf = md.cast<float>();
	cout << "md = " << md << endl;
	cout << "mf = " << mf << endl;
	return 0;
}
相同类型的矩阵兼容
/*
 * 参考链接:http://eigen.tuxfamily.org/dox-2.0/TutorialCore.html#TutorialCoreGettingStarted
*/

#include <iostream>
#include <Eigen/Core>

using namespace Eigen;  
using namespace std;  

int main(int, char *[])
{
	MatrixXf res(10,10);
	Matrix3f a, b;
	a = Matrix3f::Identity();
	b = Matrix3f::Constant(3);
	res = a+b; // OK: res is resized to size 3x3

	cout << a << endl << endl;
	cout << b << endl << endl;
	cout << res << endl << endl;
	return 0;
}

通过Map方式初始化

/*
 * 参考链接:http://eigen.tuxfamily.org/dox-2.0/TutorialCore.html#TutorialCoreGettingStarted
*/

#include <iostream>
#include <vector>
#include <Eigen/Core>

using namespace Eigen;  
using namespace std;  

int main(int, char *[])
{
	std::vector<float> stlarray(10);
	VectorXf::Map(&stlarray[0], stlarray.size()).squaredNorm();

	return 0;
}
  • 下面的代码没有完全调通
/*
 * 参考链接:http://eigen.tuxfamily.org/dox-2.0/TutorialCore.html#TutorialCoreGettingStarted
*/

#include <iostream>
#include <vector>
#include <Eigen/Core>

using namespace Eigen;  
using namespace std;  

int main(int, char *[])
{
	const int rows = 3;
	const int cols = 4;
	float array[rows*cols];
	Map<MatrixXf> m(array,rows,cols);
	Matrix3f othermatrix1 = Matrix3f::Identity();//单位矩阵
	MatrixXf othermatrix2(3,4);
	othermatrix2 = MatrixXf::Constant(3,4,5);//3x4的常量矩阵,值都为5
	m = othermatrix1 * othermatrix2;
	//m.eigenvalues();
	std::vector<float> stlarray(10);
	VectorXf::Map(&stlarray[0], stlarray.size()).squaredNorm();
	cout << m << endl;
	return 0;
}

通过逗号初始化

/*
 * 参考链接:http://eigen.tuxfamily.org/dox-2.0/TutorialCore.html#TutorialCoreGettingStarted
*/

#include <iostream>
#include <vector>
#include <Eigen/Core>

using namespace Eigen;  
using namespace std;  

int main(int, char *[])
{
	Matrix3f m;
	m << 1, 2, 3,
		4, 5, 6,
		7, 8, 9;
	cout << m << endl;
	return 0;
}
  • 使用逗号和子矩阵,初始化矩阵。
/*
 * 参考链接:http://eigen.tuxfamily.org/dox-2.0/TutorialCore.html#TutorialCoreGettingStarted
*/

#include <iostream>
#include <vector>
#include <Eigen/Core>

using namespace Eigen;  
using namespace std;  

int main(int, char *[])
{
	int rows=5, cols=5;
	MatrixXf m(rows,cols);
	m << (Matrix3f() << 1, 2, 3, 4, 5, 6, 7, 8, 9).finished(),//左上角3x3
		MatrixXf::Zero(3,cols-3), //右上角3x2
		MatrixXf::Zero(rows-3,3), //左下角2x3
		MatrixXf::Identity(rows-3,cols-3); //右下角2x2
	
	cout << m << endl;
	return 0;
}
  • .finished()用于当临时矩阵初始化完成时,获取实际的矩阵对象。尽管看起来很复杂,但实际上编译时已经优化。

算术操作

传统的数学运算

  • 矩阵/向量乘法:
col2 = mat1 * col1; //矩阵x列向量
row2 = row1 * mat1;  // 行向量x矩阵
row1 *= mat1;
mat3 = mat1 * mat2; 
mat3 *= mat1;
  • 矩阵/向量加法/减法:
mat3 = mat1 + mat2; 
mat3 += mat1;
mat3 = mat1 - mat2; 
mat3 -= mat1;
  • 标量加法/减法:
mat3 = mat1 * s1; 
mat3 = s1 * mat1; 
mat3 *= s1;
mat3 = mat1 / s1; 
mat3 /= s1;

逐元素的操作

  • 逐元素的操作,请查阅.cwise()

  • 逐元素乘法

mat3 = mat1.cwise() * mat2;
  • 加/减标量
//需要Array模块 #include <Eigen/Array>
mat3 = mat1.cwise() + scalar;
mat3.cwise() += scalar;
mat3.cwise() -= scalar;
  • 逐元素除法
//需要Array模块 #include <Eigen/Array>
mat3 = mat1.cwise() / mat2;
  • 逐元素取倒数
//需要Array模块 #include <Eigen/Array>
mat3 = mat1.cwise().inverse();
  • 逐元素比较运算
//需要Array模块 #include <Eigen/Array>
mat3 = mat1.cwise() < mat2;
mat3 = mat1.cwise() <= mat2;
mat3 = mat1.cwise() > mat2;
//等
  • 三角余弦
    • sin(), cos()等。
//需要Array模块 #include <Eigen/Array>
mat3 = mat1.cwise().sin();
// 等
  • 指数
    • pow(), square(), cube(), sqrt(), exp(), log()等。
//需要Array模块 #include <Eigen/Array>
mat3 = mat1.cwise().square();
mat3 = mat1.cwise().pow(5);
mat3 = mat1.cwise().log();
//等
  • 最小值,最大值,绝对值
mat3 = mat1.cwise().min(mat2);
mat3 = mat1.cwise().max(mat2);
mat3 = mat1.cwise().abs();
mat3 = mat1.cwise().abs2();
  • 各种乘法运算

    • 矩阵乘法:m1*m2
    • 逐元素乘法:mat1.cwise()*mat2
    • 点积:scalar = vec1.dot(vec2);
    • 外积:mat = vec1 * vec2.transpose();
    • 交叉积:#include <Eigen/Geometry> vec3 = vec1.cross(vec2);
  • 逐元素操作示例:

/*
 * 参考链接:http://eigen.tuxfamily.org/dox-2.0/TutorialCore.html#TutorialCoreGettingStarted
*/

#include <iostream>
#include <vector>
#include <Eigen/Eigen>

using namespace Eigen;  
using namespace std;  

int main(int, char *[])
{
	Matrix3f x, y;
	x << 5,3,1,2,-7,8,9,-4,6;
	y << 5,3,1,2,-7,8,9,4,7;
	cout << x << endl << endl;
	cout << x.cwiseAbs() << endl << endl;//绝对值
	cout << x.cwiseAbs2() << endl << endl; //平方
	cout << x.cwiseEqual(y) << endl << endl; //是否相等
	cout << x.cwiseMax(y) << endl << endl; //逐元素最大值
	cout << x.cwiseMin(y) << endl << endl;
	cout << x.cwiseInverse() << endl << endl; //倒数
	cout << x.cwiseNotEqual(y) << endl << endl; //不相等
	cout << x.cwiseProduct(y) << endl << endl; //逐元素乘法
	cout << x.cwiseQuotient(y) << endl << endl; //除法
	cout << x.cwiseSqrt() << endl << endl; //
	return 0;
}

Reductions

  • Eigen提供了一些reduction方法: minCoeff() , maxCoeff() , sum() , trace() , norm() , squaredNorm() , all() , 和 any()。
  • 上述这些方法都可以逐列或逐行的执行。如下所示:
/*
 * 参考链接:http://eigen.tuxfamily.org/dox-2.0/TutorialCore.html#TutorialCoreGettingStarted
*/

#include <iostream>
#include <vector>
#include <Eigen/Core>

using namespace Eigen;  
using namespace std;  

int main(int, char *[])
{
	Matrix3f x;
	x << 5,3,1,2,7,8,9,4,6;
	cout << x.minCoeff() << endl;
	cout << x.colwise().minCoeff() << endl;
	cout << x.rowwise().minCoeff() << endl;
	
	return 0;
}
  • maxCoeff()和minCoeff()函数可以通过设置可选参数,返回最大/小值的位置:maxCoeff(int* i, int* j) , minCoeff(int* i, int* j) 。
  • all() 和 any()在使用逐元素操作时,非常有用。

参考

  • http://eigen.tuxfamily.org/dox-2.0/TutorialCore.html#TutorialCoreGettingStarted
  • 备注:该链接的内容过时了。。。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Eigen教程1 - 基础 的相关文章

  • 没有已知的从值到值的表达式&...为什么?

    我尝试编写一个函数 该函数需要ColXpr作为输入的值 typedef Eigen Array
  • Eigen::Ref<> 作为成员变量

    我需要一个类有一个 Eigen Ref 变量作为静态成员 该变量将通过init静态方法 像这样的东西 class CostFunction public static Eigen Ref
  • 稠密对称矩阵的特征有效类型

    Does Eigen http eigen tuxfamily org index php title Main Page有存储密集 固定大小 对称矩阵的有效类型吗 嘿 它们无处不在 IE 对于 N 9 它应该只存储 1 9 9 2 45
  • 在 Google Test 或 Google Mock 中比较特征矩阵

    我想知道是否有一个好的方法来测试两个Eigen http eigen tuxfamily org index php title Main Page矩阵为近似平等使用谷歌测试 https code google com p googlete
  • Eigen 库 - 矩阵的伪逆(Matlab - pinv)

    我正在尝试使用特征库找到矩阵的伪逆 他们有一个类确实实现了它 但是我不知道如何编写脚本语法 这是它在网站上显示的方式 https eigen tuxfamily org dox classEigen 1 1CompleteOrthogona
  • 在 C++ 中重塑张量

    TensorFlow 的 C 接口似乎没有 reshape 方法 有谁知道如何转换 例如 A B C D into A B C D 看起来唯一的方法就是使用 Eigen 然而 那里的文档非常薄弱 代码是模板地狱 不容易解析 检查重塑张量是否
  • Eigen 将旋转和平移组合成一个矩阵

    我有一个旋转矩阵rot Eigen Matrix3d 和平移向量transl Eigen Vector3d 我希望它们一起出现在 4x4 变换矩阵中 我只是为了我的生活不知道如何在 Eigen 中做到这一点 我认为仿射可以以某种方式使用 但
  • 如何访问tensorflow::Tensor C++

    我正在使用其 C API 运行 Tensorflow 我有以下调用 它在 FinalOutput 中返回四个张量 std string str1 detection boxes std string str2 detection score
  • 如何在 CUDA 内核中使用 Eigen

    Eigen 是一个 C 线性代数库http eigen tuxfamily org http eigen tuxfamily org 使用基本数据类型 例如基本浮点数组 很容易 只需将其复制到设备内存并将指针传递给 cuda 内核即可 但是
  • 元素矩阵乘法:R 与 Rcpp(如何加速此代码?)

    我是新来的C 编程 使用Rcpp无缝集成到R 并且我希望得到一些有关如何加快某些计算速度的建议 考虑以下示例 testmat lt matrix 1 9 nrow 3 testvec lt 1 3 testmat testvec 1 2 3
  • Eigen:返回对带有编译时维度检查的矩阵块的引用

    我要问的是一个概括这个问题 https stackoverflow com questions 13548253 eigen library return a matrix block in a function as lvalue 具体来
  • 将特征矩阵转换为 C++ 形式的三元组

    我认为 Eigen 使用压缩方法来存储稀疏矩阵 有什么方法可以从 std vectors 中提取特征稀疏矩阵的三重格式向量 Thanks 更多信息 三元组格式的示例 矩阵的三元组格式 A 3 0 4 0 0 0 1 0 0 2 0 5 4
  • 根据任意分布设置 Eigen::Matrix 的系数

    Eigen Matrix 有一个 setRandom 方法 它将矩阵的所有系数设置为随机值 但是 是否有一种内置方法可以将所有矩阵系数设置为随机值 同时指定要使用的分布 有没有办法实现类似以下内容 Eigen Matrix3f myMatr
  • 使用特征值测试奇点:识别共线列

    我正在尝试使用特征值方法检查我的矩阵是否是奇异的 即 如果特征值之一为零 则矩阵是奇异的 这是代码 z lt matrix c 3 2 1 4 9 6 3 12 5 5 9 4 nrow 4 ncol 3 eigen t z z value
  • 如何访问 C++ Eigen 数组中的多个元素?

    我想检索特征数组中的某些元素并将它们作为向量返回 我使用以下代码 Eigen ArrayXXi test test resize 5 5 test setRandom Eigen Matrix
  • Eigen static libaligned_free“双重释放或损坏”

    这是一个延续较早的帖子 https stackoverflow com questions 70788173 eigen static lib memory align 但这一次希望有一个更好的例子 设置向量时 这个简单的测试会崩溃 我正在
  • 我可以使用特征稀疏矩阵来满足一般存储需求吗

    我需要一个模板化的稀疏矩阵实现 但只是为了减少内存占用 not进行任何数值求解 所以我尝试使用 Eigen 尽管我不需要数学部分 为什么 它恰好就在我的机器上 而且我已经用它来做其他事情了 但我肯定不是本征专家 Context 我有一个类型
  • 将函数应用于所有特征矩阵元素

    我有一个Eigen MatrixXd我想通过按组件应用函数来修改其所有元素 例如 MatrixXd m for each m i j m i j exp m i j 有办法达到这个结果吗 是的 使用Eigen MatrixBase lt g
  • Eigen 和 OpenMP:由于错误共享和线程开销而没有并行化

    系统规格 Intel Xeon E7 v3 处理器 4 插槽 16 核 插槽 2 线程 核心 Eigen 系列和 C 的使用 以下是代码片段的串行实现 Eigen VectorXd get Row const int j const int
  • 特征矩阵库逐系数模运算

    在我正在开发的项目的一个函数中 我需要找到特征库矩阵的每个元素除以给定数字后的余数 这是与我想要做的等效的 Matlab mod X num 其中 X 是被除数矩阵 num 是除数 实现这一目标的最简单方法是什么 您可以使用 C 11 la

随机推荐

  • caffe安装系列——安装OpenCV

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com 说明 网上关于caffe的安装教程非常多 xff0c 但是关于每一步是否操作成功 xff0c 出现了什么样的错误又该如何处理没
  • caffe安装系列——安装python依赖包

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com 说明 网上关于caffe的安装教程非常多 xff0c 但是关于每一步是否操作成功 xff0c 出现了什么样的错误又该如何处理没
  • caffe安装系列——安装caffe

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com 说明 网上关于caffe的安装教程非常多 xff0c 但是关于每一步是否操作成功 xff0c 出现了什么样的错误又该如何处理没
  • 服务器维护系列——VNC没有反应了怎么办?

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com 服务器维护系列 服务器维护系列 VNC没有反应了怎么办 xff1f 问题描述 服务器上存在多个用户 xff0c 大家通过VNC
  • PCL系列——读入PCD格式文件

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com PCL系列 PCL系列 读入PCD格式文件操作PCL系列 将点云数据写入PCD格式文件PCL系列 拼接两个点云PCL系列 从深
  • PCL系列——将点云数据写入PCD格式文件

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com PCL系列 PCL系列 读入PCD格式文件操作PCL系列 将点云数据写入PCD格式文件PCL系列 拼接两个点云PCL系列 从深
  • awk one lines

    From http www student northpark edu pemente awk awk1line txt HANDY ONE LINERS FOR AWK 22 July 2003 compiled by Eric Peme
  • PCL系列——拼接两个点云

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com PCL系列 PCL系列 读入PCD格式文件操作PCL系列 将点云数据写入PCD格式文件PCL系列 拼接两个点云PCL系列 从深
  • PCL系列——从深度图像(RangeImage)中提取NARF关键点

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com PCL系列 PCL系列 读入PCD格式文件操作PCL系列 将点云数据写入PCD格式文件PCL系列 拼接两个点云PCL系列 从深
  • PCL系列——如何可视化深度图像

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com PCL系列 PCL系列 读入PCD格式文件操作PCL系列 将点云数据写入PCD格式文件PCL系列 拼接两个点云PCL系列 从深
  • PCL系列——如何使用迭代最近点法(ICP)配准

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com PCL系列 PCL系列 读入PCD格式文件操作PCL系列 将点云数据写入PCD格式文件PCL系列 拼接两个点云PCL系列 从深
  • PCL系列——如何逐渐地配准一对点云

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com PCL系列 PCL系列 读入PCD格式文件操作PCL系列 将点云数据写入PCD格式文件PCL系列 拼接两个点云PCL系列 从深
  • PCL系列——三维重构之泊松重构

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com PCL系列 PCL系列 读入PCD格式文件操作PCL系列 将点云数据写入PCD格式文件PCL系列 拼接两个点云PCL系列 从深
  • PCL系列——三维重构之贪婪三角投影算法

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com PCL系列 PCL系列 读入PCD格式文件操作PCL系列 将点云数据写入PCD格式文件PCL系列 拼接两个点云PCL系列 从深
  • PCL系列——三维重构之移动立方体算法

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com PCL系列 PCL系列 读入PCD格式文件操作PCL系列 将点云数据写入PCD格式文件PCL系列 拼接两个点云PCL系列 从深
  • 解决Ubuntu中文显示为乱码

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com 1 安装所需软件 sudo apt get install zh autoconvert sudo apt get insta
  • hexo教程系列——hexo安装教程

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com 本文详细描述了如何在Github上 xff0c 使用hexo部署博客 安装Hexo 安装node js node js官方下载
  • Python中类成员函数均为虚函数的理解

    python中类成员函数均为虚函数 我们可以通过下面的函数见识其威力 class A def foo self print 39 a 39 class B A def foo self print 39 b 39 for x in A B
  • MxNet系列——Windows上安装MxNet

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com 开发环境 操作系统 xff1a Win7 64bit C 43 43 编译器 xff1a Visual Studio 2010
  • Eigen教程1 - 基础

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com 固定大小的矩阵和向量 参考链接 xff1a http eigen tuxfamily org dox 2 0 Tutorial