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; }
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 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; }