日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Eigen有哪些需要注意的操作

發布時間:2025/3/20 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Eigen有哪些需要注意的操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Eigen有哪些需要注意的操作

  • Eigen有哪些需要注意的操作
    • 1. Eigen有哪些行操作,列操作,塊操作,怎樣寫會更高效?
    • 2. ColMajor和RowMajor是什么?Eigen默認的是哪種?
    • 3. noalias()和eval()方法是做什么的?
    • 4. 如何使用Eigend求解Ax=b?有幾種方法?
    • 5. 如何使用Eigen對矩陣做QR分解?Householder/Givens Rotation?
    • 6. Eigen::Quaternion有哪幾種構造方法?其內部x,y,z,w的順序是怎么樣的?
    • 7. 把矩陣、四元數或者包含矩陣、四元數的結構體放入STL容器需要注意什么?

Eigen有哪些需要注意的操作

1. Eigen有哪些行操作,列操作,塊操作,怎樣寫會更高效?

行操作:

matrix.row(n); matrix.topRows(n); matrix.bottomRows(n);

列操作:

matrix.col(n); matrix.leftCols(n); matirx.rightCols(n);

塊操作:
動態矩陣版本:

matrix.block(i,j,m,n); // 大小為(m,n),起始于(i,j) matrix.topLeftCorner(m,n); matrix.bottomLeftCorner(m,n); matrix.topRightCorner(m,n); matrix.bottomRightCorner(m.n);

固定矩陣版本:

matrix.block<m,n>(i,j); // 大小為(m,n),起始于(i,j) matrix.topLeftCorner<m,n>(); matrix.bottomLeftCorner<m,n>(); matrix.topRightCorner<m,n>(); matrix.bottomRightCorner<m.n>();

Eigen官方文檔上給出兩個建議:
(1) 固定矩陣版本的block在運行時效率更高,但在編譯是消耗的時間會更多;
(2) 在寫代碼時要讓Eigen知道盡可能多的信息,例如,如果是取一行操作就使用.col()操作,而不要使用.block()操作

2. ColMajor和RowMajor是什么?Eigen默認的是哪種?

ColMajor指按行優先存儲,RowMaor指按列有限存儲,默認是列有限
補充:
(1) 如果要和其他庫合作開發,為了轉化方便,可以選擇同樣的存儲方式;
(2) 應用中設計大量行遍歷操作,應該有限選擇行有限,尋址更快;
(3) 默認是列有限,而且大多庫是按照這個順序的;

3. noalias()和eval()方法是做什么的?

當相同的Matirx或者Array同時為等式的左值和右值時,容易出現混淆:
(1) 組件級別的操作不會出現混淆,例如matrix加法、scalar乘法、array乘法等,但是matrix乘法會出現混淆,而Eigen會默認解決混淆問題,如果你認為不會出現混淆,那么可以使用noalias()提高效率:
matB.noalias() = matA * matA;
(2) 如果混淆出現時,可以使用eval()函數解決,該函數會引入臨時變量以避免混淆:
matA = (matA*matB).eval();

4. 如何使用Eigend求解Ax=b?有幾種方法?

一共有五種方法:
(1) 直接求逆:

x = A1.inverse()*b1;

(2) 采用QR分解求求解:

x = A1.colPivHouseholderQr().solve(b1); // 速度:+ 精度:++ x = A1.fullPivHouseholderQr().solve(b1); // 速度:- 精度:+++

(3)采用LU分解求解:

x = A1.partialPivLu().solve(b1); // 速度:++ 精度:+ x = A1.fullPivLu().solve(b1); // 速度:- 精度:+++

(4)采用LLT分解求解:

x = A1.llt().solve(b1); // 速度:+++ 精度:+

(5)采用LDLT分解求解:

x = A1.ldlt().solve(b1); // 速度:+++ 精度:++

5. 如何使用Eigen對矩陣做QR分解?Householder/Givens Rotation?

(1)Householder進行QR分解:
HouseholderQR qr;
qr.compute(A);
MatrixXd R = qr.matrixQR().triangularViewEigen::Upper();
MatrixXd Q = qr.householderQ();

(2)Givens Rotation進行QR分解:
使用Givens Rotation進行QR分解的過程是通過Givens矩陣將待分解的矩陣從左下角開始逐漸消零為0的過程,在Eigen中沒有找到直接的實現,可能是要手擼這個過程,可以參考https://zhuanlan.zhihu.com/p/136551885

6. Eigen::Quaternion有哪幾種構造方法?其內部x,y,z,w的順序是怎么樣的?

Eigen::Quaternion內部的順序為w,x,y,z

從官網上看構造有如下幾種方式:
(0) 默認構造

Quaternion ()

(1) 直接賦值

Quaternion (const Scalar &w, const Scalar &x, const Scalar &y, const Scalar &z)

(2) 從旋轉矩陣構造

Quaternion (const MatrixBase< Derived > &other)

(3) 從軸角構造

Quaternion (const AngleAxisType &aa)

(4) 從數組構造

Quaternion (const Scalar *data)

(5) 從其他旋轉向量構造

Quaternion (const Quaternion< OtherScalar, OtherOptions > &other) Quaternion (const QuaternionBase< Derived > &other)

7. 把矩陣、四元數或者包含矩陣、四元數的結構體放入STL容器需要注意什么?

對Eigen中的固定大小的類使用STL容器的時候,如果直接使用就會出錯,例如

std::map<int, Eigen::Vector4f> std::vector<Eigen::Vector2d>

原因是固定大小的類是指在編譯過程中就已經分配好內存空間的類,為了提高運算速度,對于SSE或者AltiVec指令集,向量化必須要求向量是以16字節對齊的方式分配內存空間,所以針對這個問題,容器需要使用Eigen自己定義的內存分配器,即aligned_allocator。因此正確的寫法是:

std::map<int, Eigen::Vector4f, Eigen::aligned_allocator<std::pair<const int, Eigen::Vector4f>> std::vector<Eigen::Vector2d,Eigen::aligned_allocator<Eigen::Vector2d>>

此外,對其他SLAM算法感興趣的同學可以看考我的博客SLAM算法總結——經典SLAM算法框架總結

總結

以上是生活随笔為你收集整理的Eigen有哪些需要注意的操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 男人吃奶视频 | 嫩草在线播放 | 亚洲精品97 | 九草影院 | 91精品国产综合久久久蜜臀粉嫩 | 九九热播视频 | 色婷婷激情av | 亚洲最大成人网站 | 淫欲av| 免费视频成人 | h视频免费在线观看 | av香港经典三级级 在线 | 国产精品羞羞答答在线 | 日本wwww色| 九九视频免费在线观看 | 另类天堂 | 久久久久久一 | 久久高清无码电影 | 亚洲精品免费观看 | 天天做天天爱天天操 | 久久精品国产亚洲av麻豆色欲 | 欧美成人三级在线观看 | 天堂va在线| 亚洲 欧美 自拍偷拍 | av噜噜| 久久国产福利 | 欧美国产一区二区在线观看 | 伊人久久狼人 | 亚洲第一区在线 | 国产精品51麻豆cm传媒 | 国产丝袜美腿一区二区三区 | 免费插插视频 | 成人精品毛片 | 亚洲大成色 | 午夜影院免费 | 糖心av| 成人精品一区二区三区在线 | 邵氏电影《金莲外传2》免费观看 | 亚洲喷潮| 苍井空亚洲精品aa片在线播放 | 日韩精品电影在线 | 精品人妻中文无码av在线 | 久久久久久久久电影 | 国产一区免费看 | 美国三级视频 | 高级家教课程在线观看 | 我想看毛片 | 色一情一伦一子一伦一区 | 久久国产视频精品 | 99在线观看精品视频 | 日本国产三级xxxxxx | 福利视频导航网 | 国产第页 | 午夜av网址| av.www| 草的我好爽 | 日b视频免费观看 | 久草老司机 | 日本一区不卡在线 | 国产精品日韩av | 国产天堂在线观看 | 亚洲熟女乱色一区二区三区久久久 | 日韩视频专区 | 一区二区三区四区免费 | 黄色片小视频 | 精品免费一区二区 | 黄色美女视频网站 | 欧美高清一区 | 久久精品久久久久久久 | 99热久| 日韩精选 | 九色论坛 | 欧洲精品码一区二区三区免费看 | 在线免费观看黄网站 | 夜夜骑天天操 | 亚洲午夜av在线 | 天堂…中文在线最新版在线 | 日本天堂在线观看 | 天天操一操 | 天堂影院av| 日韩色网| 小敏的受孕日记h | 中文字幕 欧美激情 | 亚洲啪啪免费视频 | 极品91| 亚洲成人va | juliaann办公室丝袜大战 | 国产高潮国产高潮久久久 | 欧美xxxx性xxxxx高清 | 操操干干 | 国产精品少妇 | 国产xxxx在线 | 国产精品久久久久久久9999 | 国产精品伦一区二区三级古装电影 | 欧美视频免费在线观看 | 亚洲精品视频在线看 | 成人免费黄| 亚洲卡一 | 亚洲av无码一区二区三区性色 |