C++????? Eigen ????????
???????????? ???????[ 2015/7/24 11:04:03 ] ???????????????????
??????????? C++ ???Щ???????????????Matlab ???????????????????????鷳??????????? Eigen ????????????????????? Eigen ?????????C++?????????????????????????????????£????????????????????????????Eigen????????????????Ч???????????????? Matlab???? Eigen ?? API ????????????????? Eigen ?? Matlab ??????????????????????????????????????????????????????????????Щ??????????????????????£????????????
????Eigen ??????
#include <Eigen/Dense>
Matrix<double?? 3?? 3> A; // Fixed rows and cols. Same as Matrix3d.
Matrix<double?? 3?? Dynamic> B; // Fixed rows?? dynamic cols.
Matrix<double?? Dynamic?? Dynamic> C; // Full dynamic. Same as MatrixXd.
Matrix<double?? 3?? 3?? RowMajor> E; // Row major; default is column-major.
Matrix3f P?? Q?? R; // 3x3 float matrix.
Vector3f x?? y?? z; // 3x1 float matrix.
RowVector3f a?? b?? c; // 1x3 float matrix.
VectorXd v; // Dynamic column vector of doubles
// Eigen // Matlab // comments
x.size() // length(x) // vector size
C.rows() // size(C??1) // number of rows
C.cols() // size(C??2) // number of columns
x(i) // x(i+1) // Matlab is 1-based
C(i??j) // C(i+1??j+1) //
????Eigen ???????
// Basic usage
// Eigen // Matlab // comments
x.size() // length(x) // vector size
C.rows() // size(C??1) // number of rows
C.cols() // size(C??2) // number of columns
x(i) // x(i+1) // Matlab is 1-based
C(i?? j) // C(i+1??j+1) //
A.resize(4?? 4); // Runtime error if assertions are on.
B.resize(4?? 9); // Runtime error if assertions are on.
A.resize(3?? 3); // Ok; size didn't change.
B.resize(3?? 9); // Ok; only dynamic cols changed.
A << 1?? 2?? 3?? // Initialize A. The elements can also be
4?? 5?? 6?? // matrices?? which are stacked along cols
7?? 8?? 9; // and then the rows are stacked.
B << A?? A?? A; // B is three horizontally stacked A's.
A.fill(10); // Fill A with all 10's.
????Eigen ???????????
// Eigen // Matlab
MatrixXd::Identity(rows??cols) // eye(rows??cols)
C.setIdentity(rows??cols) // C = eye(rows??cols)
MatrixXd::Zero(rows??cols) // zeros(rows??cols)
C.setZero(rows??cols) // C = ones(rows??cols)
MatrixXd::Ones(rows??cols) // ones(rows??cols)
C.setOnes(rows??cols) // C = ones(rows??cols)
MatrixXd::Random(rows??cols) // rand(rows??cols)*2-1 // MatrixXd::Random returns uniform random numbers in (-1?? 1).
C.setRandom(rows??cols) // C = rand(rows??cols)*2-1
VectorXd::LinSpaced(size??low??high) // linspace(low??high??size)'
v.setLinSpaced(size??low??high) // v = linspace(low??high??size)'
????Eigen ??????
// Matrix slicing and blocks. All expressions listed here are read/write.
// Templated size versions are faster. Note that Matlab is 1-based (a size N
// vector is x(1)...x(N)).
// Eigen // Matlab
x.head(n) // x(1:n)
x.head<n>() // x(1:n)
x.tail(n) // x(end - n + 1: end)
x.tail<n>() // x(end - n + 1: end)
x.segment(i?? n) // x(i+1 : i+n)
x.segment<n>(i) // x(i+1 : i+n)
P.block(i?? j?? rows?? cols) // P(i+1 : i+rows?? j+1 : j+cols)
P.block<rows?? cols>(i?? j) // P(i+1 : i+rows?? j+1 : j+cols)
P.row(i) // P(i+1?? :)
P.col(j) // P(:?? j+1)
P.leftCols<cols>() // P(:?? 1:cols)
P.leftCols(cols) // P(:?? 1:cols)
P.middleCols<cols>(j) // P(:?? j+1:j+cols)
P.middleCols(j?? cols) // P(:?? j+1:j+cols)
P.rightCols<cols>() // P(:?? end-cols+1:end)
P.rightCols(cols) // P(:?? end-cols+1:end)
P.topRows<rows>() // P(1:rows?? :)
P.topRows(rows) // P(1:rows?? :)
P.middleRows<rows>(i) // P(i+1:i+rows?? :)
P.middleRows(i?? rows) // P(i+1:i+rows?? :)
P.bottomRows<rows>() // P(end-rows+1:end?? :)
P.bottomRows(rows) // P(end-rows+1:end?? :)
P.topLeftCorner(rows?? cols) // P(1:rows?? 1:cols)
P.topRightCorner(rows?? cols) // P(1:rows?? end-cols+1:end)
P.bottomLeftCorner(rows?? cols) // P(end-rows+1:end?? 1:cols)
P.bottomRightCorner(rows?? cols) // P(end-rows+1:end?? end-cols+1:end)
P.topLeftCorner<rows??cols>() // P(1:rows?? 1:cols)
P.topRightCorner<rows??cols>() // P(1:rows?? end-cols+1:end)
P.bottomLeftCorner<rows??cols>() // P(end-rows+1:end?? 1:cols)
P.bottomRightCorner<rows??cols>() // P(end-rows+1:end?? end-cols+1:end)
??????
???·???
??????????????????
2023/3/23 14:23:39???д?ò??????????
2023/3/22 16:17:39????????????????????Щ??
2022/6/14 16:14:27??????????????????????????
2021/10/18 15:37:44???????????????
2021/9/17 15:19:29???·???????·
2021/9/14 15:42:25?????????????
2021/5/28 17:25:47??????APP??????????
2021/5/8 17:01:11