diff options
author | Christoph Hertzberg <chtz@informatik.uni-bremen.de> | 2014-02-11 17:27:14 +0100 |
---|---|---|
committer | Christoph Hertzberg <chtz@informatik.uni-bremen.de> | 2014-02-11 17:27:14 +0100 |
commit | e170e7070babbdb164cbda9289419e264d3c2645 (patch) | |
tree | 118764197fee3071e39aa6971d70ec575c82785f /doc/AsciiQuickReference.txt | |
parent | c1921ad3e22872ef6c2ea2d88cdf00b887324604 (diff) |
Added examples for casting, made better examples for Maps
Diffstat (limited to 'doc/AsciiQuickReference.txt')
-rw-r--r-- | doc/AsciiQuickReference.txt | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/doc/AsciiQuickReference.txt b/doc/AsciiQuickReference.txt index d3bfd439c..4c8fe2f47 100644 --- a/doc/AsciiQuickReference.txt +++ b/doc/AsciiQuickReference.txt @@ -163,13 +163,25 @@ x.squaredNorm() // dot(x, x) Note the equivalence is not true for co x.dot(y) // dot(x, y) x.cross(y) // cross(x, y) Requires #include <Eigen/Geometry> +//// Type conversion +// Eigen // Matlab +A.cast<double>(); // double(A) +A.cast<float>(); // single(A) +A.cast<int>(); // int32(A) +// if the original type equals destination type, no work is done + +// Note that for most operations Eigen requires all operands to have the same type: +MatrixXf F = MatrixXf::Zero(3,3); +A += F; // illegal in Eigen. In Matlab A = A+F is allowed +A += F.cast<double>(); // F converted to double and then added (generally, conversion happens on-the-fly) + // Eigen can map existing memory into Eigen matrices. float array[3]; -Map<Vector3f>(array, 3).fill(10); -int data[4] = 1, 2, 3, 4; -Matrix2i mat2x2(data); -MatrixXi mat2x2 = Map<Matrix2i>(data); -MatrixXi mat2x2 = Map<MatrixXi>(data, 2, 2); +Vector3f::Map(array).fill(10); // create a temporary Map over array and sets entries to 10 +int data[4] = {1, 2, 3, 4}; +Matrix2i mat2x2(data); // copies data into mat2x2 +Matrix2i::Map(data) = 2*mat2x2; // overwrite elements of data with 2*mat2x2 +MatrixXi::Map(data, 2, 2) += mat2x2; // adds mat2x2 to elements of data (alternative syntax if size is not know at compile time) // Solve Ax = b. Result stored in x. Matlab: x = A \ b. x = A.ldlt().solve(b)); // A sym. p.s.d. #include <Eigen/Cholesky> |