# Fast Eigenvalue Computation of Massive 3-by-3 Real Symmetric Matrices

Version 1.13.0.0 (2.17 KB) by
For multiple 3x3 real symmetric matrices, vectorized matrix operations, support GPU computation
Updated 10 May 2013

Calculate the eigenvalues of many 3x3 real symmetric matrices. Computation is non-iterative, based on fully vectorized matlab matrix operations, and GPU computation is supported. It is fast and efficient for processing a number of 3-by-3 matrices at once. This code particularly suits tensor/Riemannian calculus in 3D, visualization/analysis of volumetric tensor images, image Jacobian/Hessian analysis, stress/tensile strength computation on tensor fields, three dimensional diffusion processes, determining the rotation axes of a motion field, etc....

Syntax:
[eigenvalue1,eigenvalue2,eigenvalue3] = eigenvaluefield33( a11, a12, a13, a22, a23, a33);
a11, a12, a13, a22, a23 and a33 specify a set of symmetric 3x3 real matrices (a tensor field, a tensorial image, an array of matrices/tensors, etc....) as:
a11 a12 a13
[ a12 a22 a13 ]
a13 a23 a33
These six inputs must have the same size. They can be 2D, 3D or any dimension. The outputs eigenvalue1, eigenvalue2 and eigenvalue3 follow the size and dimension of these inputs. Trigonometric functions are used. The inputs must be double to maintain the accuracy.

eigenvalue1, eigenvalue2 and eigenvalue3 are the unordered eigenvalues. They are solved using the cubic equation solver, see http://en.wikipedia.org/wiki/Eigenvalue_algorithm
One can obtain the ordered eigenvalues by:
minEigenvalue = min(min(eigenvalue1, eigenvalue2), eigenvalue3);
maxEigenvalue = max(max(eigenvalue1, eigenvalue2), eigenvalue3);
midEigenvalue = eigenvalue1+eigenvalue2+eigenvalue3 - minEigenvalue - maxEigenvalue;

The peak memory consumption of the function is about 1.5 times of the total of all inputs, in addition to the original inputs. GPU computation is automatically enabled if all inputs are matlab GPU arrays.

The following research works exemplify the use of this fast eigenvalue computation routine on curvilinear/tubular structure detection:

1. Max W. K. Law, KengYeow Tay, Andrew E. Leung, Gregory J. Garvin and Shuo Li,
“Dilated Divergence based Scale-Space Representation for Curve Analysis”, ECCV 2012, pp. 557 – 571.
2. Max W. K. Law and Albert C. S. Chung, ``Three Dimensional Curvilinear Structure Detection using Optimally Oriented Flux'', ECCV 2008, pp. 368--382.
Matlab source:
http://www.mathworks.com/matlabcentral/fileexchange/41612-optimally-oriented-flux-oof-for-3d-curvilinear-structure-detection

3. Max W. K. Law and Albert C. S. Chung,
“An Oriented Flux Symmetry based Active Contour Model for Three Dimensional Vessel Segmentation”, ECCV 2010, pp. 720 – 734.

4. Max W. K. Law and Albert C. S. Chung,
“Segmentation of Intracranial Vessels and Aneurysms in Phase Contrast Magnetic Resonance Angiography using Multi-Range Filters and Local Variances”, TIP 2013, 22(3), 845 – 859.

Please refer to http://www.cse.ust.hk/~maxlawwk/ for more details regarding the above publications.

Author: Max W.K. Law
Email: max.w.k.law@gmail.com
Page: http://www.cse.ust.hk/~maxlawwk/

### Cite As

Max W.K. Law (2024). Fast Eigenvalue Computation of Massive 3-by-3 Real Symmetric Matrices (https://www.mathworks.com/matlabcentral/fileexchange/40677-fast-eigenvalue-computation-of-massive-3-by-3-real-symmetric-matrices), MATLAB Central File Exchange. Retrieved .

##### MATLAB Release Compatibility
Created with R2012b
Compatible with any release
##### Platform Compatibility
Windows macOS Linux
##### Categories
Find more on Eigenvalues & Eigenvectors in Help Center and MATLAB Answers

### Community Treasure Hunt

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

Start Hunting!
Version Published Release Notes
1.13.0.0

Updated info.

1.12.0.0

Updated info.

1.11.0.0

Updated info.

1.10.0.0

Updated info.

1.9.0.0

Updated info.

1.8.0.0

Updated info.

1.7.0.0

Updated info., revised the code

1.6.0.0

Updated the title of this package

1.5.0.0

Updated description

1.4.0.0

Updated description

1.3.0.0

Updated description

1.1.0.0

Updated info.

1.0.0.0