Get non-zero eigenvalues and eigenvectors

14 vues (au cours des 30 derniers jours)
Fraser Price
Fraser Price le 25 Nov 2018
I am simply looking to retrieve non-zero eigenvalues (and eigenvectors which correspond to them) from a matrix X. I am new to matlab and the eig() and eigs() functions don't seem to do what I want. How do I solve this?
  2 commentaires
madhan ravi
madhan ravi le 25 Nov 2018
upload your matrix and what's the desired result?
Fraser Price
Fraser Price le 25 Nov 2018
Modifié(e) : Fraser Price le 25 Nov 2018
For example for the matrix [1 2; 3 4] we have
X = [1 2; 3 4]
[V,L] = eig(X)
V =
-0.7071 -0.7071
0.7071 -0.7071
L =
1 0
0 0
But I only want L to contain non-zero eigenvalues and V to contain just the eigenvectors which correspond to them, i.e.
V =
-0.7071
0.7071
L =
1
I hope this is clear.

Connectez-vous pour commenter.

Réponses (1)

Christine Tobler
Christine Tobler le 26 Nov 2018
You could just remove the zero eigenvalues after computing them:
>> X = [1 1; 1 1]
X =
1 1
1 1
>> [V,l] = eig(X, 'vector')
V =
-0.7071 0.7071
0.7071 0.7071
l =
0
2
>> l == 0
ans =
2×1 logical array
1
0
>> V(:, l==0) = []
V =
0.7071
0.7071
>> l(l==0) = [];
l =
2
In practice, l==0 should probably be replaced by abs(l) < tol.

Catégories

En savoir plus sur Linear Algebra dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by