public MultiDimensionalVector ToMultiDimensionalVector()
        {
            MultiDimensionalVector rezult = new MultiDimensionalVector();
            var newVector = this.ToList();

            foreach (var v in newVector)
            {
                rezult.Add(v);
            }

            return(rezult);
        }
        //выполнение операции над вектором и числом, операция задается строкой и должна быть задана в operations для элементов типа double
        public static MultiDimensionalVector MathOperationMultiDimensionalVectorWithNumber(MultiDimensionalVector mdVector, double number, String operation)
        {
            MultiDimensionalVector rezultMdVector = new MultiDimensionalVector();

            if (operations.ContainsKey(operation) && mdVector.Count >= 0)
            {
                int countElements = mdVector.Count;
                for (int i = 0; i < countElements; ++i)
                {
                    rezultMdVector.Add(operations[operation](mdVector.ElementAt(i), number));
                }
            }
            else
            {
                throw new ArgumentException("Невозможно выполнить операцию");
            }
            return(rezultMdVector);
        }
        //выполнение операции над двумя векторми поэлементно, операция задается строкой и должна быть задана в operations для элементов типа double
        public static MultiDimensionalVector MathOperationMultiDimensionalVectorElementWise(MultiDimensionalVector mdVector1, MultiDimensionalVector mdVector2, String operation)
        {
            MultiDimensionalVector rezultMdVector = new MultiDimensionalVector();

            if (operations.ContainsKey(operation) && mdVector1.Count == mdVector2.Count && mdVector1.Count > 0)
            {
                int countElements = mdVector1.Count;
                // MathOperation mathOper = operations[operation];
                for (int i = 0; i < countElements; ++i)
                {
                    rezultMdVector.Add(operations[operation](mdVector1.ElementAt(i), mdVector2.ElementAt(i)));
                }
            }
            else
            {
                throw new ArgumentException("Невозможно выполнить операцию");
            }
            return(rezultMdVector);
        }
        public double EuclideanDistance(MultiDimensionalVector mdVector)
        {
            double distance = 0;

            if (this.Count == mdVector.Count && this.Count > 0)
            {
                int countElements = this.Count();

                for (int i = 0; i < countElements; ++i)
                {
                    distance += Math.Pow(this.ElementAt(i) - mdVector.ElementAt(i), 2);
                }

                distance = Math.Sqrt(distance);
            }
            else
            {
                throw new ArgumentException("Невозможно вычислить расстояние между векторами");
            }

            return(distance);
        }
Beispiel #5
0
 public Cluster(MultiDimensionalVector Centroid, List <MultiDimensionalVector> Elements)
 {
     this.Centroid = Centroid;
     this.Elements = Elements;
     this.color    = new Color();
 }
Beispiel #6
0
 public Cluster(MultiDimensionalVector Centroid) : this(Centroid, new List <MultiDimensionalVector>())
 {
 }