C++調用Eigen庫技巧的直觀理解_第1頁
C++調用Eigen庫技巧的直觀理解_第2頁
C++調用Eigen庫技巧的直觀理解_第3頁
C++調用Eigen庫技巧的直觀理解_第4頁
C++調用Eigen庫技巧的直觀理解_第5頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、IDE(集成開發(fā)環(huán)境)設置將 Eigen 程序文件夾添加到包含文件中 .包含文件#include 包含命名空間using name Eigen;下標類型與C+相同,從0開始.默認矩陣元素排列列主元初始化程序中賦值 MatrixXd A; A 程序中賦值 MatrixXd A; A 1, 2, 3,4, 5, 6,7, 8, 9;/ Initialize A. The elements can also be / matrices, which are stacked along cols / and then the rows are stacked.快速生成常用矩陣和向量MatrixXd A

2、=MatrixXd:Zero(m, n); /matlab 中的 A=zeros(m,n)MatrixXd A; A.setZero(m, n);MatrixXd A=MatrixXd:Ones(m, n); /matlab 中的 A=ones(m, n)MatrixXd A; A.setOnes(m, n);MatrixXd A=MatrixXd:Identity(m, n); /matlab 中的 A=eye(m,n)MatrixXd A; A.setIdentity(m, n);MatrixXd A; A=C*MatrixXd:Ones(m, n); /matlab 中的 A=C*one

3、s(m,n)MatrixXd A; A=MatrixXd:Constant(m,n,C);MatrixXd A(m,n); A=fill(C);VectorXd a_vec=VectorXd:Constant(m, C); /matlab 中的 a_vec=C*ones(m,1) VecotrXda_vec=VectorXd:LinSpaced(n, x1, x2); /matlab 中 的 a_vec=linspace(x1, x2, n).;VectorXd a_vec; a_vec.setLinSpaced(n, x1, x2);轉置、共軛和共軛轉置MatrixXd B=A.adjoin

4、t(); /matlab 中的 B=AMatrixXcd B=A.conjugate(); /matlab 中的 B=conj(A);MatrixXd B=A.transpose(); /matlab 中的 B=A.提取矩陣尺度A.size();/matlab 中的 length(A(:)A.rows();/matlab 中的 size(A,1)A.cols();/matlab 中的 size(A,2)變矩陣尺度A.resize(m1,n1); /matlab 中的 A=reshape(A,m1,n1);產生隨機矩陣MatrixXd A=MatrixXd:Random(m, n); /matl

5、ab 中的 A=2*rand(m,n)-1MatrixXd A; A.setRandom(m, n); /matlab 中的 A=2*rand(m,n)-1MatrixXcd A=MatrixXcd:Random(m,n); /生成實部和虛部均在(-1,1)中的隨機 復數矩陣點乘和點除MatrixXd C=A.cwiseProduct(B); /matlab 中的 C=A.*BVectorXd c=a_vec.cwiseProduct(b); /matlab 中的 c=a_vec.*bMatrixXd C=A.cwiseQuotient(B); /matlab 中的 C=A./BMatrixX

6、d B=A.cwiseInverse(); /matlab 中的 B=1./A;矩陣按內存順序單指數索引A(i); /matlab 中的 A(i+1)矩陣與標量運算(逐元素運算)MatrixXd C=A.array()+k; /matlab 中的 C=A+kMatrixXd C=A.array()/B.array(); /matlab 中的 C=A./BMatrixXd B=A.array().sin(); /matlab 中的 sin(A)MatrixXd B二A.array().pow(s); /matlab 中的 AsMatrixXd B=A.array().log(); /matlab

7、 中的 log(A)向量點乘求和a_vec.dot(b_vec); /matlab 中的 sum(a.*b)VectorXd、RowVectorXd 與 MatrixXd 的關系VectorXd 等價于 Matrix; RowVectorXd 等價于 Matrix;MatrixXd 等價于 Matrix.生成高維矩陣Matrix A(m,n); /注意,此時矩陣數據的存儲空 間不再連續(xù)生成行主元矩陣Matrix E(m,n);令矩陣為自身的轉置A.transposeInPlace();函數首字母大小寫的可能情形 成員函數首字母大寫; 友元函數首字母小寫.矩陣塊和向量塊提取A.block(i,

8、j, row_num, col_num); /matlab A(i+1:i+row_num,j+1:j+col_num)x_vec.segment(i, n); /matlab 中的 x_vec(i+1:i+n)對角操作VectorXd a_vec=A.diagonal(); /matlab 中的 a_vec=diag(A)MatrixXd A=a_vec.asDiagonal(); /matlab 中的 A=diag(a_vec)自運算符A+=B; /matlab 中的 A=A+B最小和最大操作double x=A.minCoeff(); /matlab 中的 x=min(A(:)doubl

9、e x=A.maxCoeff(); /matlab 中的 x=max(A(:)double x二A.minCoeff(&r,&c); /matlab 中的s, i = min(R(:); ind2sub(size(R), i)double x二A.maxCoeff(&r,&c); /matlab 中的s, i = max(R(:); ind2sub(size(R), i)求和和求積操作double x=A.sum(); /matlab 中的 x=sum(A(:)VectorXd vec=A.colwise().sum(); /matlab 中的 vec=sum(A)VectroXd vec=A

10、.rowwise().sum(); /matlab 中的 vec=sum(A,2) double x=A.prod(); /matlab 中的 x=prod(A(:)VectorXd vec=A.colwise().prod(); /matlab 中的 vec=prod(A)中的r, c =r, c =VectroXd vec=A.rowwise().prod(); /matlab 中的 vec=prod(A,2) 中的r, c =r, c =double x=vec.norm(); /matlab 中的 x=norm(vec)矩陣數據類型轉換MatrixXf B=A.cast()矩陣數據類型

11、轉換MatrixXf B=A.cast()MatrixXi B=A.cast();實部和虛部提取MatrixXd real_A=A.real();MatrixXd imag_A=A.imag();/matlab 中的 B=single(A)/matlab 中的 B=int32(A)/matlab 中的 real_A=real(A)/matlab 中的 imag_A=imag(A)解線性方程組x二A.ldlt() .solve(b); /要求對稱正定,需#include x=A.ll t().solve(b); /要求對稱半正定,需 #include x=A.lu().solve(b); /穩(wěn)定快速,需 #include x=A.qr().solve(b); /要求沒有 pivoting,需#include x=A.svd().solve(b); /穩(wěn)定但非常慢,需 #inc

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論