public static Matriz operator *(Matriz m1, Matriz m2)
 {
     int fm1 = m1.filas;
     int cm1 = m1.columnas;
     int fm2 = m2.filas;
     int cm2 = m2.columnas;
        // int cont, cont1;
     Matriz aux = new Matriz(fm1, cm2);
     if (cm1 == fm2)
     {
         int i, j, k;
         for (i = 0; i < aux.filas; i++)
         {
            // cont1 = 0;
             for (j = 0; j < aux.columnas; j++)
             {
                 for (k = 0; k < cm1; k++)
                 {
                     aux.matriz[i, j] = aux.matriz[i, j] + (m1.matriz[i, k] * m2.matriz[k, j]);
                 }
             }
         }
     }
     return aux;
 }
        public Clasificador()
        {
            InitializeComponent();
            aC1 = new float[636, 13];
            aC2 = new float[321, 13];
            aC3 = new float[418, 13];
            aC4 = new float[757, 13];
            aC5 = new float[747, 13];
            aC6 = new float[608, 13];
            aC7 = new float[404, 13];


            C1 = new Matriz(636, 13);
            C2 = new Matriz(321, 13);
            C3 = new Matriz(418, 13);
            C4 = new Matriz(757, 13);
            C5 = new Matriz(747, 13);
            C6 = new Matriz(608, 13);
            C7 = new Matriz(404, 13);

            Media = new float[7, 13];

            VariC1 = new float[13, 13];
            VariC2 = new float[13, 13];
            VariC3 = new float[13, 13];
            VariC4 = new float[13, 13];
            VariC5 = new float[13, 13];
            VariC6 = new float[13, 13];
            VariC7 = new float[13, 13];

            G = new float[7, 13];
        }
        public Matriz Transpuesta(Matriz m1)
        {
            int    fm1 = m1.filas;
            int    cm1 = m1.columnas;
            Matriz aux = new Matriz(cm1, fm1);

            for (int i = 0; i < m1.filas; i++)
            {
                for (int j = 0; j < m1.columnas; j++)
                {
                    aux.matriz[j, i] = m1.matriz[i, j];
                }
            }
            return(aux);
        }
        public Matriz Inversa(Matriz m1)
        {
            int    fm1 = m1.filas;
            int    cm1 = m1.columnas;
            Matriz aux = new Matriz(fm1, cm1);

            for (int i = 0; i < m1.filas; i++)
            {
                for (int j = 0; j < m1.columnas; j++)
                {
                    aux.matriz[i, j] = m1.matriz[i, j] / determinante(m1);
                }
            }
            return(aux);
        }
 public static Matriz operator *(int n, Matriz m1)
 {
     int fm1 = m1.filas;
     int cm1 = m1.columnas;
        // int cont, cont1;
     Matriz aux = new Matriz(fm1, cm1);
     int i, j; //k;
     for (i = 0; i < aux.filas; i++)
     {
         //cont1 = 0;
         for (j = 0; j < aux.columnas; j++)
         {
             aux.matriz[i, j] = m1.matriz[i, j] * n;
         }
     }
     return aux;
 }
        public static Matriz operator *(int n, Matriz m1)
        {
            int fm1 = m1.filas;
            int cm1 = m1.columnas;
            // int cont, cont1;
            Matriz aux = new Matriz(fm1, cm1);
            int    i, j; //k;

            for (i = 0; i < aux.filas; i++)
            {
                //cont1 = 0;
                for (j = 0; j < aux.columnas; j++)
                {
                    aux.matriz[i, j] = m1.matriz[i, j] * n;
                }
            }
            return(aux);
        }
 public static Matriz operator +(Matriz m1, Matriz m2)
 {
     int fm1 = m1.filas;
     int cm1 = m1.columnas;
     int fm2 = m2.filas;
     int cm2 = m2.columnas;
     Matriz aux = new Matriz(fm1, cm1);
     if ((fm1 == fm2) && (cm1 == cm2))
     {
         for (int i = 1; i <= aux.filas; i++)
         {
             for (int j = 1; j <= aux.columnas; j++)
             {
                 aux.matriz[i - 1, j - 1] = m1.matriz[i - 1, j - 1] + m2.matriz[i - 1, j - 1];
             }
         }
     }
     return aux;
 }
        public static Matriz operator +(Matriz m1, Matriz m2)
        {
            int    fm1 = m1.filas;
            int    cm1 = m1.columnas;
            int    fm2 = m2.filas;
            int    cm2 = m2.columnas;
            Matriz aux = new Matriz(fm1, cm1);

            if ((fm1 == fm2) && (cm1 == cm2))
            {
                for (int i = 1; i <= aux.filas; i++)
                {
                    for (int j = 1; j <= aux.columnas; j++)
                    {
                        aux.matriz[i - 1, j - 1] = m1.matriz[i - 1, j - 1] + m2.matriz[i - 1, j - 1];
                    }
                }
            }
            return(aux);
        }
        public Matriz Transpuesta(Matriz m1)
        {
            int fm1 = m1.filas;
            int cm1 = m1.columnas;
            Matriz aux = new Matriz(cm1, fm1);

            for (int i = 0; i < m1.filas; i++)
            {
                for (int j = 0; j < m1.columnas; j++)
                {
                    aux.matriz[j, i] = m1.matriz[i, j];
                }
            }
            return aux;
        }
Exemplo n.º 10
0
        public Matriz Inversa(Matriz m1)
        {
            int fm1 = m1.filas;
            int cm1 = m1.columnas;
            Matriz aux = new Matriz(fm1, cm1);

            for (int i = 0; i < m1.filas; i++)
            {
                for (int j = 0; j < m1.columnas; j++)
                {
                    aux.matriz[i, j] = m1.matriz[i, j] / determinante(m1);
                }
            }
            return aux;
        }
Exemplo n.º 11
0
 public float determinante(Matriz m1)
 {
     int fm1 = m1.filas;
     int cm1 = m1.columnas;
     float aux = 1;
     float aux1 = 1, aux2 = 1, det = 0;
     for (int i = 0; i < m1.filas; i++)
     {
         for (int j = 0; j < m1.columnas; j++)
         {
             if (i == j)
             {
                 aux = m1.matriz[i, j];
                 aux1 = aux * aux1;
             }
             else
             {
                 aux = m1.matriz[i, j];
                 aux2 = aux * aux2;
             }
         }
     }
     det = aux1 - aux2;
     return det;
 }
        public Matriz Restar(Matriz aux, int valmed, int tam)
        {
            Matriz rest = new Matriz(1, 13);

            for (int c = 0; c < 13; c++)
            {
                rest.matriz[valmed, c] = aux.matriz[valmed, c] - Media[valmed, c];
            }
            return rest;

        }
        public void CalcG(Matriz mat, int posMed, int tam)
        {
            double gx = 0;
            Matriz x_med = Restar(C1, 0, 636);
            Matriz covC1 = new Matriz(13, 13);
            Matriz covC2 = new Matriz(13, 13);
            Matriz covC3 = new Matriz(13, 13);
            Matriz covC4 = new Matriz(13, 13);
            Matriz covC5 = new Matriz(13, 13);
            Matriz covC6 = new Matriz(13, 13);
            Matriz covC7 = new Matriz(13, 13);

            covC1.DatoMatriz(VariC1);
            covC2.DatoMatriz(VariC2);
            covC3.DatoMatriz(VariC3);
            covC4.DatoMatriz(VariC4);
            covC5.DatoMatriz(VariC5);
            covC6.DatoMatriz(VariC6);
            covC7.DatoMatriz(VariC7);

            Matriz auxx;
            auxx = x_med * covC1.Inversa(covC1);
            auxx = auxx * x_med.Transpuesta(x_med);
            int mult = (int)auxx.matriz[0, 0];


            gx = -(0.5) * mult - ((7 / 2) * Math.Log(2 * 3.141592)) - (0.5 * Math.Log(covC1.determinante(covC1)));

        }
        public void CalcCovarianza(Matriz mat, int posMed, int tam)
        {
            float suma = 0;

            for (int a = 0; a < 13; a++)
            {
                for (int b = 0; b <= a; b++)
                {
                    for (int f = 0; f < tam; f++)
                    {
                        suma += mat.matriz[f, a] - mat.matriz[f, b];
                    }
                    suma = suma / tam;

                    switch (tam)
                    {
                        case 636: VariC1[a, b] = suma;
                            break;
                        case 321: VariC2[a, b] = suma;
                            break;
                        case 418: VariC3[a, b] = suma;
                            break;
                        case 757: VariC4[a, b] = suma;
                            break;
                        case 747: VariC5[a, b] = suma;
                            break;
                        case 608: VariC6[a, b] = suma;
                            break;
                        case 404: VariC7[a, b] = suma;
                            break;
                    }
                    suma = 0;
                }
            }
            suma = 0;
        }