C++ 矩阵

本文介绍了C++中矩阵的基本概念,包括静态和动态矩阵的定义,如何使用Eigen库创建并初始化不同类型的矩阵,以及如何通过法一和法二进行赋值。重点讲解了如何计算矩阵的逆。适合理解C++矩阵操作的初学者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++基础知识

矩阵

定义

静态矩阵

Eigen::Matrix<double, 500, 500> matrix_NN;

动态矩阵

Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic> matrix_NN;

初始化矩阵

matrix_NN = Eigen::MatrixXd::Random(500, 500);//初始化为随机矩阵
matrix_NN = Eigen::MatrixXd::Identity(500, 500);//初始化为单位矩阵
matrix_NN = Eigen::MatrixXd::Zero(500, 500);//初始化为零矩阵

注意:维度太大的矩阵,如果定义成静态矩阵会报错,所以维度太大的直接定义为静态矩阵,然后再初始化一下就行

有一点需要强调: 虽然我们可以使用任何维度的矩阵去赋值或者初始化matrix_NN,但是始终没有改变它是动态矩阵的性质,也就是维数运行过程始终可以变化,这一点儿不同于静态矩阵,静态矩阵编译时就确定了维度,运行时不能变。
补充:静态矩阵和动态矩阵的区别:
  动态矩阵和静态矩阵:动态矩阵是指其大小在运行时确定,静态矩阵是指其大小在编译时确定。
  MatrixXd:表示任意大小的元素类型为double的矩阵变量,其大小只有在运行时被赋值之后才能知道。
  Matrix3d:表示元素类型为double大小为3*3的矩阵变量,其大小在编译时就知道。

赋值

法一:

	Eigen::Matrix3f R;
	R <<
		1, 0, 2,
		0, 5, 4,
		0, 0, 1;
	Eigen::Vector3f T;
	T <<
		50,0,0;//是一个一个输入的,与写的形式无关,所以最后输出还是列向量

法二:

	Eigen::Matrix4f matrix_trans_sphere;
	matrix_trans_sphere(0, 0) = 1;//这种只能给0,0位置赋值为1

求逆

	Eigen::Matrix3f R;
	Eigen::Matrix3f R_;
	R <<
		1, 0, 2,
		0, 5, 4,
		0, 0, 1;
	R_ = R.inverse();//矩阵求逆
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值