You do not need to convert your code to Matlab since Matlab already has top quality built-in function for that:
> help eig
eig Eigenvalues and eigenvectors.
E = eig(X) is a vector containing the eigenvalues of a square
matrix X.
[V,D] = eig(X) produces a diagonal matrix D of eigenvalues and a
full matrix V whose columns are the corresponding eigenvectors so
that X*V = V*D.
[V,D] = eig(X,'nobalance') performs the computation with balancing
disabled, which sometimes gives more accurate results for certain
problems with unusual scaling. If X is symmetric, eig(X,'nobalance')
is ignored since X is already balanced.
E = eig(A,B) is a vector containing the generalized eigenvalues
of square matrices A and B.
[V,D] = eig(A,B) produces a diagonal matrix D of generalized
eigenvalues and a full matrix V whose columns are the
corresponding eigenvectors so that A*V = B*V*D.
eig(A,B,'chol') is the same as eig(A,B) for symmetric A and symmetric
positive definite B. It computes the generalized eigenvalues of A and B
using the Cholesky factorization of B.
eig(A,B,'qz') ignores the symmetry of A and B and uses the QZ algorithm.
In general, the two algorithms return the same result, however using the
QZ algorithm may be more stable for certain problems.
The flag is ignored when A and B are not symmetric.
See also condeig, eigs, ordeig.