Exemple #1
0
        public static Tuple <int, int, double> DenseMatrixAbsoluteMinimumPosition(DenseMatrix dm)
        {
            if (dm == null)
            {
                return(new Tuple <int, int, double>(0, 0, 0.0d));
            }

            List <Tuple <int, double> > rowMinValues = new List <Tuple <int, double> >();

            var rowEnum = dm.EnumerateRowsIndexed();

            foreach (Tuple <int, Vector <double> > curRow in rowEnum)
            {
                DenseVector curDV = (DenseVector)curRow.Item2;
                rowMinValues.Add(new Tuple <int, double>(curDV.AbsoluteMinimumIndex(), curDV.AbsoluteMinimum()));
            }

            double      minValue    = rowMinValues.Min(tpl => tpl.Item2);
            int         minValueRow = rowMinValues.FindIndex(tpl => tpl.Item2 == minValue);
            DenseVector minRow      = (DenseVector)dm.Row(minValueRow);



            return(new Tuple <int, int, double>(minValueRow, minRow.AbsoluteMinimumIndex(), minValue));
        }