示例#1
0
        private static double I(double[][] matrix_pxandy)
        {
            var px = Lab1.Px(matrix_pxandy);

            Lab1.H(px, out var Hx);
            var py = Lab1.Py(matrix_pxandy);

            Lab1.H(py, out var Hy);
            var hXandY = Lab1.HXandY(matrix_pxandy);
            var res    = Hx + Hy - hXandY;

            Console.WriteLine("I(X;Y) = " + Hx + " + " + Hy + " - " + hXandY + " = " + res);
            return(res);
        }
示例#2
0
        internal static double[][] PYifX(double[][] pXandY)
        {
            var result        = new double[pXandY.Length][];
            var px            = Lab1.Px(pXandY);
            var precalculated = "";
            var calculated    = "";
            var len           = pXandY.Length;

            for (var i = 0; i < len; i++)
            {
                result[i] = new double[len];
                for (var j = 0; j < len; j++)
                {
                    var probability = Pxify(pXandY[i][j], px[i]);
                    precalculated += pXandY[i][j] + " / " + px[i] + "\t";
                    calculated    += Math.Round(probability, 2) + "\t";
                    result[i][j]   = probability;
                }

                precalculated += "\n";
                calculated    += "\n";
            }

            Console.WriteLine("P(Y|X) = ");
            for (int i = 0; i < len; i++)
            {
                for (int j = 0; j < len; j++)
                {
                    Console.Write("\t" + Math.Round(result[i][j], 2));
                }
                Console.Write("\n");
            }

            Console.WriteLine("P(Y|X) = \n" + precalculated + "\n=\n" + calculated);
            return(result);
        }