Any alternates function to replace "eig"

9 views (last 30 days)
Sunil Patil
Sunil Patil on 3 Oct 2018
Answered: Christine Tobler on 3 Oct 2018
Used "eig(A,B)" function to find eigen values and vectors.. When am converting it to C code and run at real time, it is taking too much time to give results.
Any suggestions to avoid "eig' function ? Or any suggestions to improve its speed ?
Thanks Sunil-Bangalore
  4 Comments
Stephen23
Stephen23 on 3 Oct 2018
Edited: Stephen23 on 3 Oct 2018
@Sunil Patil: using inv like that is likely to be slow and inaccurate. The MATLAB documentation explicitly states "It is seldom necessary to form the explicit inverse of a matrix. A frequent misuse of inv arises when solving the system of linear equations Ax = b. One way to solve the equation is with x = inv(A)*b. A better way, from the standpoint of both execution time and numerical accuracy, is to use the matrix backslash operator x = A\b. This produces the solution using Gaussian elimination, without explicitly forming the inverse. See mldivide for further information."
Sunil Patil
Sunil Patil on 3 Oct 2018
Thanks Stephen. I will check

Sign in to comment.

Answers (1)

Christine Tobler
Christine Tobler on 3 Oct 2018
The command
eig(A,eye(15),'qz');
solves the eigenvalue problem A*x = lambda*x, but makes EIG treat it as the generalized problem A*x = lambda*B*x, with B equal to the identity matrix. This should be expected to be slower. Is there a reason not to use
eig(A);
instead?
Alternatively, since A = -inv(C)*G, would it make sense to solve the generalized eigenvalue problem G*x = lambda*C*x instead?

Categories

Find more on Linear Algebra in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!