This repository contains my tutorials on mastering Matrix operation and numerical optimization with Eigen and C++. The following will be the outline of this repository:
- Matrix Class
- Vector Class
- Array Class
- Initialization
- Accessing Elements (Coefficient)
- Casting Matrices
- Reshaping, Resizing, Slicing
- Tensor Module
- Matrix Arithmetic
- Coefficient-Wise Operations
- Reductions
- Matrix Condition Number and Numerical Stability
- Check Matrices Similarity
- Broadcasting
- Memory Alignment
- Passing Eigen objects by value to functions
- Aliasing
- Memory Mapping
- Unary Expression
- Eigen Functor
- 1. Vector Space
- 2. Linear Equation
- 3. Solving Linear Equation
- 4. Matrices Decompositions
- 5. Linear Map
- 6. Span
- 7. Subspace
- 8. Range of a Matrix
- 9. Basis
- 10. Rank of Matrix
- 11. Dimension of the Column Space
- 12. Null Space (Kernel)
- 13. Nullity
- 14. Rank-nullity Theorem
- 15. The Determinant of The Matrix
- 16. Finding The Inverse of The Matrix
- 17. The Fundamental Theorem of Linear Algebra
- 18. Permutation Matrix
- 19. Augmented Matrix
- 1. Euler Angles
- 2. Global References and Local Tangent Plane Coordinates
- 3. Axis-angle Representation
- 4. Quaternions
- 5. Conversion between different representations
- Newton's Method In Optimization
- Gauss-Newton Algorithm
- Quasi-Newton Method
- Curve Fitting
- Non Linear Least Squares
- Non Linear Regression
- Levenberg Marquardt
- Why decompositions matter
- Inverse Kinematics — the pseudo-inverse (SVD)
- Camera Calibration — DLT (SVD), projection decomposition (QR), Zhang (Cholesky)
- SLAM — least squares, QR vs Cholesky, and sparsity
- Point-Cloud Registration — Kabsch / Umeyama (SVD)
- PCA & Plane Fitting — eigendecomposition
- Further reading & related projects