aboutsummaryrefslogtreecommitdiffhomepage
path: root/doc/AsciiQuickReference.txt
diff options
context:
space:
mode:
authorGravatar Christoph Hertzberg <chtz@informatik.uni-bremen.de>2014-02-11 17:27:14 +0100
committerGravatar Christoph Hertzberg <chtz@informatik.uni-bremen.de>2014-02-11 17:27:14 +0100
commite170e7070babbdb164cbda9289419e264d3c2645 (patch)
tree118764197fee3071e39aa6971d70ec575c82785f /doc/AsciiQuickReference.txt
parentc1921ad3e22872ef6c2ea2d88cdf00b887324604 (diff)
Added examples for casting, made better examples for Maps
Diffstat (limited to 'doc/AsciiQuickReference.txt')
-rw-r--r--doc/AsciiQuickReference.txt22
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>