public static Diag ( Matrix m ) : |
||
m | Matrix | Input Matrix. |
return |
public static Vector Diag(Matrix m)
{
var length = m.Cols > m.Rows ? m.Rows : m.Cols;
var v = Vector.Zeros(length);
for (int i = 0; i < length; i++)
v[i] = m[i, i];
return v;
}
/// <summary>Sorts this object.</summary> private void Sort() { //ordering var eigs = A.Diag() .Select((d, i) => new Tuple <int, double>(i, d)) .OrderByDescending(j => j.Item2) .ToArray(); // sort eigenvectors var copy = V.Copy(); for (var i = 0; i < eigs.Length; i++) { copy[i, VectorType.Col] = V[eigs[i].Item1, VectorType.Col]; } // normalize eigenvectors copy.Normalize(VectorType.Col); V = copy; Eigenvalues = eigs.Select(t => t.Item2).ToArray(); }