Esempio n. 1
0
        /// <summary>
        /// Tworzy macierz kwadratową (dolnotrójkątną) wielkości równej ilości liczb.
        /// (W późniejszych etapach gdy ta macierz będzie się pomniejszać,
        /// jej wielkość będzie logicznie określać zmienna "liczbaGrup".)
        /// Macierz wypełniana jest odległością euklidesową między każdą parą liczb.
        /// </summary>
        private void SkonstruujMacierzOdległościMiędzyklastrowej()
        {
            liczbaGrup = liczby.Length;
            macierzOdległościMiędzyklastrowej = new double[liczbaGrup][];
            for (int i = 0; i < liczbaGrup; ++i)
            {
                macierzOdległościMiędzyklastrowej[i] = new double[liczbaGrup];
                Array.Clear(macierzOdległościMiędzyklastrowej[i], 0, liczbaGrup);
            }

            PrzejrzyjMacierz((i, j) =>
            {
                macierzOdległościMiędzyklastrowej[i][j] =
                    FunkcjeMatematyczne.OdległośćEuklidesowa(liczby[i], liczby[j]);
            });
        }
Esempio n. 2
0
        /// <summary>
        /// Na podstawie wybranej wcześniej metody skupień liczy odległości między klastrami.
        /// </summary>
        /// <param name="A">Pierwszy klaster</param>
        /// <param name="B">Drugi klaster</param>
        /// <returns>Odległość między klastrami</returns>
        private double PoliczOdległośćMiędzyKlastrami(double[] A, double[] B)
        {
            switch (metoda)
            {
            case MetodaSkupień.PojedynczegoPołączenia:
                return(FunkcjeMatematyczne.MetodaPojedynczegoPołączenia(ref A, ref B));

            case MetodaSkupień.CałkowitegoPołączenia:
                return(FunkcjeMatematyczne.MetodaCałkowitegoPołączenia(ref A, ref B));

            case MetodaSkupień.CentroidalnegoPołączenia:
                return(FunkcjeMatematyczne.MetodaCentroidalnegoPołączenia(ref A, ref B));

            case MetodaSkupień.ŚrednichGrupowych:
            default:
                return(FunkcjeMatematyczne.MetodaŚrednichGrupowych(ref A, ref B));
            }
        }