QLNet.Matrix.diagonal C# (CSharp) Метод

diagonal() публичный Метод

public diagonal ( ) : Vector
Результат Vector
        public Vector diagonal()
        {
            int arraySize = Math.Min(rows(), columns());
            Vector tmp = new Vector(arraySize);
            for(int i = 0; i < arraySize; i++)
                tmp[i] = this[i, i];
            return tmp;
        }

Usage Example

Пример #1
0
        //! returns the correlation Matrix
        public Matrix correlation()
        {
            Matrix correlation = covariance();
            Vector variances   = correlation.diagonal();

            for (int i = 0; i < dimension_; i++)
            {
                for (int j = 0; j < dimension_; j++)
                {
                    if (i == j)
                    {
                        if (variances[i].IsEqual(0.0))
                        {
                            correlation[i, j] = 1.0;
                        }
                        else
                        {
                            correlation[i, j] *= 1.0 / Math.Sqrt(variances[i] * variances[j]);
                        }
                    }
                    else
                    {
                        if (variances[i].IsEqual(0.0) && variances[j].IsEqual(0.0))
                        {
                            correlation[i, j] = 1.0;
                        }
                        else if (variances[i].IsEqual(0.0) || variances[j].IsEqual(0.0))
                        {
                            correlation[i, j] = 0.0;
                        }
                        else
                        {
                            correlation[i, j] *= 1.0 / Math.Sqrt(variances[i] * variances[j]);
                        }
                    }
                } // j for
            }     // i for
            return(correlation);
        }