当前位置: 首页 > wzjs >正文

阳泉做网站公司seo三人行论坛

阳泉做网站公司,seo三人行论坛,现在推广网站最好的方式,手机app页面设计1. Map 类&#xff1a;内存映射&#xff08;零拷贝操作&#xff09; 核心功能 将现有的 C/C 数组或缓冲区映射为 Eigen 矩阵/向量&#xff0c;不复制数据&#xff0c;直接操作原内存。 模板参数 cpp Map<Matrix<Scalar, Rows, Cols, Options, MaxRows, MaxCols>&…

1. Map 类:内存映射(零拷贝操作)

核心功能

将现有的 C/C++ 数组或缓冲区映射为 Eigen 矩阵/向量,不复制数据,直接操作原内存。

模板参数

cpp

Map<Matrix<Scalar, Rows, Cols, Options, MaxRows, MaxCols>>
  • 参数与 Matrix 一致,通常简化为 Map<MatrixXd>(动态大小)或 Map<Vector3f>(固定大小)。

构造函数与方法
方法/构造函数参数说明功能示例
Map(Scalar* data)data: 原始数组指针映射为一维向量float arr[3]; Map<Vector3f> v(arr);
Map(Scalar* data, Index rows, Index cols)data: 数组指针,rows/cols: 矩阵尺寸映射为矩阵double buf[4]; Map<Matrix2d> m(buf, 2, 2);
data()返回原始指针float* ptr = v.data();
注意事项
  • 内存对齐:若原始数据未对齐(如动态分配的数组),需使用 Eigen::Unaligned 标志:

    cpp

    Map<Matrix3f, Unaligned> m(ptr);

2. Block 类:子矩阵操作

核心功能

提取矩阵的某一块区域(子矩阵),返回一个视图(不复制数据)。

主要方法
方法参数说明返回值/功能示例
block(Index startRow, Index startCol, Index blockRows, Index blockCols)startRow/startCol: 起始位置,blockRows/blockCols: 子块大小动态大小子块MatrixXd B = A.block(1, 1, 2, 2);
block<BlockRows, BlockCols>(startRow, startCol)模板参数:子块固定大小,startRow/startCol: 起始位置固定大小子块(编译时优化)auto C = A.block<2,2>(0, 0);
topLeftCorner(rows, cols)提取左上角子块同 blockMatrix3f D = A.topLeftCorner(3, 3);
middleRows(startRow, numRows)提取中间连续多行行子矩阵VectorXd seg = v.middleRows(2, 3);
变体方法
  • 列/行操作
    col(j).segment(start, length)(列向量的子段)、row(i).head(n)(行的前 n 元素)。

3. 视图类(TransposeDiagonal 等)

核心功能

通过视图(View)操作原矩阵的特定结构(如转置、对角元素),不复制数据

常用视图类
类/方法参数说明功能示例
transpose()返回转置视图MatrixXd AT = A.transpose();(注意:赋值会触发复制)
adjoint()返回共轭转置视图MatrixXcf AH = A.adjoint();
diagonal()可指定偏移量(默认 0)返回对角线的向量视图VectorXd diag = A.diagonal();
diagonal<Offset>()Offset: 对角线的偏移(正数=上对角线,负数=下对角线)返回指定对角线的视图VectorXd sup_diag = A.diagonal<1>();
triangularView<Mode>()ModeUpperLowerStrictlyUpper 等返回三角矩阵视图auto L = A.triangularView<Lower>();
视图的赋值与计算
  • 视图可直接参与运算,但若需保存结果,需赋值给具体矩阵:

    cpp

    MatrixXd B = A.transpose() * A;  // 合法:触发实际计算
    auto C = A.transpose();          // C 仍是视图,依赖 A 的生命周期!

4. 代码示例

cpp

#include <Eigen/Dense>
using namespace Eigen;// Map 示例
float data[] = {1, 2, 3, 4};
Map<Matrix<float, 2, 2, RowMajor>> mat_map(data);  // 按行映射
mat_map(1, 1) = 5;  // 修改原数组 data[3] = 5// Block 示例
MatrixXd A(4, 4);
A.setRandom();
MatrixXd B = A.block(1, 1, 2, 2);  // 提取 2x2 子矩阵
A.topLeftCorner(2, 2).setZero();   // 将左上角置零// 视图示例
Vector3d v(1, 2, 3);
MatrixXd M = v * v.transpose();     // 外积(v.transpose() 是视图)
double d = v.dot(v);                // 点积

5. 关键注意事项

  1. 生命周期管理:视图类(如 BlockTranspose)依赖原矩阵的数据,原矩阵销毁后视图无效。

  2. 性能优化:固定尺寸的 Block(如 block<2,2>())比动态尺寸更快。

  3. 别名问题:操作视图时避免与原矩阵混用,可能导致错误:

    cpp

    A = A.transpose();  // 错误!需使用 A.transposeInPlace();

完整方法速查表

操作类型类/方法典型用途
内存映射Map<MatrixXd>包装现有数组为 Eigen 矩阵
子块提取block()segment()操作局部数据
结构视图diagonal()transpose()快速访问对角线、转置等结构
http://www.dtcms.com/wzjs/481567.html

相关文章:

  • 南昌简单做网站湖南网站建设加盟代理
  • wordpress 发布站广州百度搜索排名优化
  • 企业网站 源码天津短视频seo
  • 石家庄网站建设刘华成人大专
  • 西安seo外包价格单页网站怎么优化
  • 广州比较好的网站建设百度浏览器网站入口
  • 网站价值排行seo搜索引擎优化推广
  • wordpress隐藏显示作者长沙专业seo优化公司
  • 网站建设制作收费友情链接的作用有哪些
  • 洛阳网站seoseo发帖论坛
  • 石家庄网站开发报价成都网站优化排名推广
  • 快速做网站公司哪家专业深圳网络公司推广
  • 四川成都私人网站建设下载百度到桌面
  • 网站核验单网店推广的渠道有哪些
  • 做网站真的可以赚的钱吗杭州seo培训
  • 购物网站用html怎么做网站建设合同
  • 做企业网站为什么要服务器呢seo广告投放
  • 东莞高端网站建设公司哪家好上海seo优化公司kinglink
  • 哪个行业对网站建设需求大搜索引擎广告形式有
  • 赤裸做爰游戏漫画网站济宁seo公司
  • 国内简约网站百度识图查图片
  • 做粘土的网站网站top排行榜
  • 网站制作标准南昌搜索引擎优化
  • 帮人做设计的网站百度账号申请注册
  • 建建建设网站天津百度关键词推广公司
  • 百度推广整体优化网站微信营销推广软件
  • 一个网站的入口网页又称为二级分销小程序
  • 成都电商网站建立网站平台需要多少钱
  • 外贸网站使用攻略网站推广及seo方案
  • 呼伦贝尔人才网官方网站入口人员优化方案