Eigen学习笔记(11)-存储顺序

原文:Eigen官网-Storage orders

对于矩阵和二维数组,有两种存储顺序:列优先和行优先。

1. 行优先和列优先的存储

矩阵的项构成一个二维网格。然而,当矩阵存储在内存中时,条目必须以某种方式线性排列。有两种主要的方法,按行和按列。

假设矩阵:
A = 8,2,2,9
9,1,4,4
3,5,4,5
row-major order:按一行一行地进行存储,首先存储第一行,然后存储第二行,如此进行,
8 2 2 9 9 1 4 4 3 5 4 5
column-major order:按一列一列地进行存储,首先存储第一列,然后存储第二列,如此进行,
8 9 3 2 1 5 2 4 4 9 4 5

2. Eigen中的存储顺序

Matrix类有六个模板参数,其中Options参数设置为RowMajor则按行优先顺序进行存储,如果设置为ColMajor则按列优先顺序进行存储。

Eigen中的默认存储顺序是column-major。

如果矩阵或数组使用了某类存储顺序,也可硬将其分配给使用了另一类存储顺序的矩阵和数组,Eigen将会自动进行重新排序。

3. 存储顺序的选择

对于存储顺序的选择,没有一个简单的答案,这依赖于你的应用:

  • 如果要和其他库合作开发,为了转化方便,可以选择同样的存储方式。
  • 应用中涉及大量行遍历操作,应该选择行优先,寻址更快。反之亦然。
  • Eigen中默认是列优先,而且大多库都是按照这个顺序的,默认的不失为较好的。

参考:

“Eigen教程(11)”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值