R語言學習RcppEigen進行矩陣運算_第1頁
R語言學習RcppEigen進行矩陣運算_第2頁
R語言學習RcppEigen進行矩陣運算_第3頁
R語言學習RcppEigen進行矩陣運算_第4頁
R語言學習RcppEigen進行矩陣運算_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第R語言學習RcppEigen進行矩陣運算R.transpose().colwise().reverse()//rot90(R)//Read-write

R.rowwise().reverse()//fliplr(R)

R.colwise().reverse()//flipud(R)

R.replicate(i,j)//repmat(P,i,j)

矩陣基礎運算1

//AllthesameasMatlab,butmatlabdoesn'thave*=styleoperators.

//Matrix-vector.Matrix-matrix.Matrix-scalar.

y=M*x;R=P*Q;R=P*s;

a=b*M;R=P-Q;R=s*P;

a*=M;R=P+Q;R=P/s;

R*=Q;R=s*P;

R+=Q;R*=s;

R-=Q;R/=s;

矩陣基礎運算2

//Vectorizedoperationsoneachelementindependently

//Eigen//Matlab

R=P.cwiseProduct(Q);//R=P.*Q

R=P.array()*s.array();//R=P.*s

R=P.cwiseQuotient(Q);//R=P./Q

R=P.array()/Q.array();//R=P./Q

R=P.array()+s.array();//R=P+s

R=P.array()-s.array();//R=P-s

R.array()+=s;//R=R+s

R.array()-=s;//R=R-s

R.array()Q.array();//RQ

R.array()=Q.array();//R=Q

R.cwiseInverse();//1./R

R.array().inverse();//1./R

R.array().sin()//sin(R)

R.array().cos()//cos(R)

R.array().pow(s)//R.^s

R.array().square()//R.^2

R.array().cube()//R.^3

R.cwiseSqrt()//sqrt(R)

R.array().sqrt()//sqrt(R)

R.array().exp()//exp(R)

R.array().log()//log(R)

R.cwiseMax(P)//max(R,P)

R.array().max(P.array())//max(R,P)

R.cwiseMin(P)//min(R,P)

R.array().min(P.array())//min(R,P)

R.cwiseAbs()//abs(R)

R.array().abs()//abs(R)

R.cwiseAbs2()//abs(R.^2)

R.array().abs2()//abs(R.^2)

(R.array()s).select(P,Q);//(RsP:Q)

R=(Q.array()==0).select(P,R)//R(Q==0)=P(Q==0)

R=P.unaryExpr(ptr_fun(func))//R=arrayfun(func,P)//with:scalarfunc(constscalar

求最小最大值、跡等

//Reductions.

intr,c;

//Eigen//Matlab

R.minCoeff()//min(R(:))

R.maxCoeff()//max(R(:))

s=R.minCoeff(r,c)//[s,i]=min(R(:));[r,c]=ind2sub(size(R),i);

s=R.maxCoeff(r,c)//[s,i]=max(R(:));[r,c]=ind2sub(size(R),i);

R.sum()//sum(R(:))

R.colwise().sum()//sum(R)

R.rowwise().sum()//sum(R,2)orsum(R')'

R.prod()//prod(R(:))

R.colwise().prod()//prod(R)

R.rowwise().prod()//prod(R,2)orprod(R')'

R.trace()//trace(R)

R.all()//all(R(:))

R.colwise().all()//all(R)

R.rowwise().all()//all(R,2)

R.any()//any(R(:))

R.colwise().any()//any(R)

R.rowwise().any()//any(R,2)

點乘等

//Dotproducts,norms,etc.

//Eigen//Matlab

x.norm()//norm(x).Notethatnorm(R)doesn'tworkinEigen.

x.squaredNorm()//dot(x,x)Notetheequivalenceisnottrueforcomplex

x.dot(y)//dot(x,y)

x.cross(y)//cross(x,y)Requires#includeEigen/Geometry

特征值與特征向量

//Eigenvalueproblems

//Eigen//Matlab

A.eigenvalues();//eig(A);

EigenSolverMatrix3deig(A);//[vecval]=eig(A)

eig.eigenvalues();//diag(val)

eig.eigenvectors();//vec

//Forself-adjointmatricesuseSelfAdjointEigenSolver

形式轉(zhuǎn)換

Typeconversion

//Eigen//Matlab

A.castdouble//double(A)

A.castfloat//single(A)

A.castint//int32(A)

A.real();//real(A)

A.imag();//imag(A)

//iftheoriginaltypeequalsdestinationtype,noworkisdone

矩陣初始化0

//NotethatformostoperationsEigenrequiresalloperandstohavethesametype:

MatrixXfF=MatrixXf::Zero(3,3);

A+=F;//illegalinEigen.InMatlabA=A+Fisallowed

A+=F.castdouble//Fconvertedtodoubleandthenadded(generally,conversionhappenson-the-fly)

Map等操作

//EigencanmapexistingmemoryintoEigenmatrices.

floatarray[3];

Vector3f::Map(array).fill(10);//createatemporaryMapoverarrayandsetsentriesto10

intdata[4]={1,2,3,4};

Matrix2imat2x2(data);//copiesdataintomat2x2

Matrix2i::Map(data)=2*mat2x2;//overwriteelementsofdatawith2*mat2x2

MatrixXi::Map(data,2,2)+=mat2x2;//addsmat2x2toelementsofdata(alternativesyntaxifsizeisnotknowatcompiletime)

求解Ax=b

//SolveAx=b.Resultstoredinx.Matlab:x=A\b.

x=A.ldlt().solve(b));//Asym.p.s.d.#includeEigen/Cholesky

x=A.llt().solve(b));//Asym.p.d.#includeEigen/Cholesky

x=A.lu().solve(b));//Stableandfast.#includeEigen/LU

x=A.qr().solve(b));//Nopivoting.#includeEigen/QR

x=A.svd().solve(b));//Stable,slowest.#includeEigen/SVD

//.ldlt()-.matrixL()and.matrixD(

溫馨提示

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

評論

0/150

提交評論