C++ Armadillo :: expmat














































C++ Armadillo :: expmat



---------------------------------------------------------------------------------------------------------------
Description::
This is the basic C++ program of C++ armadillo library which shows how to find Matrix exponential of general square matrix A of some particular size. It can be carried out by the help of inbuilt function "expmat" in armadillo library. It takes one parameter i.e input matrix name.
  • If A is not square sized, a std::logic_error exception is thrown
  • If the matrix exponential cannot be found:
    • B = expmat(A) resets B and throws a std::runtime_error exception
    • expmat(B,A) resets B and returns a bool set to false (exception is not thrown)
  • Caveat: if matrix A is symmetric, using expmat_sym() is faster
  • Caveat: the matrix exponential operation is generally not the same as applying the exp() function to each element
---------------------------------------------------------------------------------------------------------------
Program::

#include <iostream>
#include <armadillo>
using namespace std;
using namespace arma;

int main()
{
//initialize the random generator
//Create a 4 x 4 random matrix and printing it
mat A = randu<mat>(5,5); //random matrix of size 5 x 5 (generared by this syntax)
mat B = expmat(A); //matrix exponential
cout << "Matrix A::\n"<<endl;
cout << A << endl;
cout << "Matrix B::\n"<<endl;
cout << B << endl;
return 0;
}
---------------------------------------------------------------------------------------------------------------
Commands to run program on terminal::
g++ filename.cpp -o objectname -O2 -larmadillo

$ ./objectname
---------------------------------------------------------------------------------------------------------------
Output::

Matrix A:: 0.7868 0.4049 0.2742 0.8571 0.2393 0.2505 0.2513 0.5610 0.4998 0.3201 0.7107 0.0227 0.1400 0.4194 0.9105 0.9467 0.5206 0.5439 0.7443 0.1648 0.0193 0.3447 0.5219 0.2492 0.2455 Matrix B:: 3.9702 1.5897 1.6444 2.9852 1.3479 1.6725 1.9971 1.4869 1.8542 1.2155 2.2083 0.9486 2.2254 1.9603 1.7648 3.3977 1.8055 2.0438 4.1266 1.4948 0.9366 0.8203 1.1701 1.1313 1.9276

More Articles of Shubham Loya:

Name Views Likes
C++ OpenCV cv::trace() 1383 1
C++ Armadillo :: Real and Imaginary part 1388 1
C++ OpenCV cv::perspectiveTransform() 4670 1
C++ Armadillo :: find_nonfinite 652 2
C++ Armadillo introduction and installation 535 1
C++ Armadillo :: Kron 1119 1
C++ Armadillo :: Accessing row and column and operations on it 1041 1
C++ Armadillo :: cond 421 2
C++ Armadillo :: pseudo-inverse 2480 1
C++ OpenCV cv::flip() 1526 1
C++ OpenCV cv::transpose() 6110 1
C++ Armadillo :: any 469 2
C++ Armadillo :: Max and Min of matrices 786 1
C++ OpenCV cv::pow() 2110 1
C++ Armadillo :: fliplr and flipud 892 2
C++ Armadillo :: Sort 1039 1
C++ Armadillo :: Determinant of Matrix 784 1
C++ Armadillo :: Indices of Unique elements of matrix 805 1
C++ Armadillo :: eps 432 3
C++ Armadillo :: Inverse 1169 1
C++ Armadillo :: Transpose of Matrix 1011 1
C++ Armadillo :: Basic Arithmetic Operations 420 1
C++ Armadillo :: Cross Product of vectors 1053 4
C++ OpenCV program to play a video 1037 1
C++ Armadillo :: Diagonal of Matrix 802 1
C++ Armadillo :: Absolute value of Matrix 1010 1
C++ Armadillo :: Conj 389 2
C++ Armadillo :: expmat 815 2
C++ OpenCV Input from Camera 1692 1
C++ OpenCV program to convert BGR image to grayscale image 4883 1
C++ Armadillo :: Intersect 666 2
C++ Armadillo :: Nonzeros 864 2
C++ Armadillo :: Dot Product of vectors 1462 2
C++ OpenCV:: Transforming BGR image to Grey scale image 526 2
C++ OpenCV to rotate an image 10002 1
C++ Armadillo :: Unique elements of matrix 715 1
C++ Armadillo :: Log Determinant 725 1
C++ Armadillo :: Sort_index 1301 2
C++ Armadillo :: Max Min 1372 1
C++ Armadillo :: Shift 754 1
C++ Armadillo :: Square root of Matrix 1513 1
C++ OpenCV cv::cvtColor() 2010 1

Comments