예제 #1
0
        private static void TestSamples_Distance(out Tuple <int, int, double>[] distance_Input, out Tuple <int, int, double>[] distance_Output, SketchSample[] sketches)
        {
            #region Get Distances

            var inputs  = new List <Tuple <int, int, double> >();
            var outputs = new List <Tuple <int, int, double> >();

            for (int outer = 0; outer < sketches.Length - 1; outer++)
            {
                for (int inner = outer + 1; inner < sketches.Length; inner++)
                {
                    double distance = Math3D.GetDistance(sketches[outer].NNInput, sketches[inner].NNInput);
                    inputs.Add(Tuple.Create(outer, inner, distance));

                    distance = Math3D.GetDistance(sketches[outer].NNOutput, sketches[inner].NNOutput);
                    outputs.Add(Tuple.Create(outer, inner, distance));
                }
            }

            distance_Input  = inputs.ToArray();
            distance_Output = outputs.ToArray();

            #endregion

            if (distance_Input.Length == 0)
            {
                return;
            }

            //#region Normalize

            //double inputMax = distance_Input.Max(o => o.Item3);
            //double outputMax = distance_Output.Max(o => o.Item3);

            //distance_Input = distance_Input.
            //    Select(o => Tuple.Create(o.Item1, o.Item2, o.Item3 / inputMax)).
            //    ToArray();

            //distance_Output = distance_Output.
            //    Select(o => Tuple.Create(o.Item1, o.Item2, o.Item3 / inputMax)).
            //    ToArray();

            //#endregion
        }