示例#1
0
void altoCalculamiento::run()
{
/*	getFieldSize();
	getGraphDefinition();
	getCoordinates();*/
	qDebug("Working...");
	establecerLimites();
	establecerDefinicion();
	crearMatriz();

	FILE *f;

	for(int i=0; i<cantidad_de_antenas; ++i)
	{
		if(!(f = fopen(antennaFileName[i], "r")))
		{	qDebug("no puedo abrirlo che ");
			return;
		}
	
		abrirArchivo(f);
		calcular();
	}



        emit done(S, cant_filas, cant_columnas);
	saveData("out.dat");

        //liberarMatriz(S);	//nooooo!! lo hace el destructor
	return;	// salir de run() es como salir de main(), el thread se cierra.

//	exec();		//exec permite continuar el loop del thread, para usar signals
}
matrix_t::matrix_t(matrix_inx_t m,matrix_inx_t n):
traspuesta_(false),
M_(NULL),
m_(m),
n_(n)
{
	crearMatriz();
}	
void matrix_t::redimensiona(matrix_inx_t m,matrix_inx_t n)
{
	destruirMatriz();

	m_=m;
	n_=n;

	crearMatriz();
}
示例#4
0
int main(void)
{

  crearMatriz();
  if(mover(1,2,2))
    printf("Aca ta");
  else
    printf("deadlock jaja");
  mostrar();
  return 0;
}
int main(void)
{
	int iRen = 5; 
	int iCol = 6; 
	float** fMat = crearMatriz(iRen,iCol);
	
	llenarMatriz(fMat,iRen,iCol);
	imprimirMatriz(fMat,iRen,iCol);
    destruirMatriz(fMat,iRen);
    
	return 0;
}
示例#6
0
int* prodmatricial (int m1[][COL],int maxf1,int maxc1,int m2[][FIL],int maxf2,int maxc2)
{
    int *m3,i,j,k;
    if(maxc1!=maxf2&&maxc1!=0&&maxf2!=0)
        return NULL;
    m3=crearMatriz(maxf1,maxc2);
    if(!m3)
        return NULL;
    for(i=0;i<maxf1;i++)
        for(j=0;j<maxc2;j++)
            *(m3+i*maxc2+j)=0;
    for(i=0;i<maxf1;i++)
    {
        for(j=0;j<maxc2;j++)
        {
            for(k=0;k<maxc1;k++)
                *(m3+i*maxc2+j)+=(m1[i][k]*m2[k][j]);
        }
    }
    return m3;
}
示例#7
0
int main (int argc, char *argv[]){

 double *A; // Matriz A
 double *B; // Matriz B
 double *C; // Matriz C
 double timetick;


//El tamano de la matriz sera n= N*r , donde N y r se reciben
//por parametro se tendran N*N bloques de r*r cada uno

if (argc < 4){
  printf("\n Falta un parametro ");
  printf("\n 1. Cantidad de bloques por dimension ");
  printf("\n 2. Dimension de cada bloque ");
  printf("\n 3. 0/1 para imprimir/no imprimir resultados ");
  return 0;
}

 int N = atoi(argv[1]);
 int r = atoi(argv[2]);
 int imprimir=atoi(argv[3]);

 int n = N*r; //dimension de la matriz
 int sizeMatrix=n*n; //cantidad total de datos matriz
 int sizeBlock=r*r; //cantidad total de datos del bloque
 int i;

 A= (double *)malloc(sizeMatrix*sizeof(double)); //aloca memoria para A
 B= (double *)malloc(sizeMatrix*sizeof(double)); //aloca memoria para B
 C= (double *)malloc(sizeMatrix*sizeof(double)); //aloca memoria para C

 crearMatriz(A, sizeMatrix);			//Inicializa A 
 crearIdentidad(B,sizeBlock,sizeMatrix,N,r); //Inicializa B como matriz identidad

  timetick = dwalltime();
 producto(A,B,C,r,N,sizeMatrix,sizeBlock);
  printf("Tiempo en segundos %f \n", dwalltime() - timetick);

//tiempo
 if (imprimir ==1){
     printf("\n\n  A (como esta almacenada): \n" );
    imprimeVector(A, sizeMatrix);

     printf("\n\n  B (como esta almacenada): \n" );
    imprimeVector(B,sizeMatrix);

    printf("\n\n  A: \n" );
    imprimeMatriz(A,N,r);

    printf(" \n\n B: \n" );
    imprimeMatriz(B,N,r);

    printf("\n\n  C: \n" );
    imprimeMatriz(C,N,r);

 } 


 printf(" \n\n Realizando comprobacion ... \n" );
 for (i=0;i<sizeMatrix ;i++ )
 {
	 if (A[i]!=C[i])
	 {
       printf("\n Error %f", C[i] );
	 }
 }
//imprimir tiempo

 free(A);
 free(B);
 free(C);

 return 0;
} //FIN MAIN
示例#8
0
文件: zgbn-ha1.c 项目: kdoomsday/zgb
int main(int argc, char *argv[]) {
  MATRIZ m;
  int i,j,k,k1,k2,p,I,J,x,v,sem,bd,br,bl,vec,
    CO2,	// Numero de produccion de CO2
    PMC,
    FE,
    X,	// Numero de impurezas
    Otot,
    COtot,
    CO,
    O;
  double CO2p,Oc,COc,Xc,suma,produc,q,y,yoc,yo,kco,kx,sO,s2O,sCO,s2CO,sCO2,s2CO2,s2X,sigma[4],resta,invN,invNP,inv;
  char sal[99];
  FILE *fp;

	srand(rdtsc());

  sprintf(sal,"ZGBHa1%d %d %d %lf.dat",L,Cal,pasos,yx);
  fp = fopen(sal,"w");



  i=0; j=0; k=0;  
  invN=(double)1/(N);
  invNP=(double)(invN/(pasos));
  inv=((pasos*N)-1);
  inv=(double)(1/(inv));

//___________________creamos la matriz de vecinos_____________
	m = crearMatriz();
 //____________________________Probabilidad Yco_________________________
	y=yx;
 	for (y=yx;y<1;y+=0.01) {
    yo  = 1-y-yx;
    yoc = yo+y;

    p=0; CO=0; CO2=0; O=0; FE=N; X=0; s2O=0; s2CO=0; s2X=0;
    sigma[0]=0;sigma[1]=0;sigma[2]=0; sigma[3]=0;
    
    Oc=0; COc=0; produc=0; s2CO2=0; Xc=0; 
 //____________________________Iniciamos la matriz y calentamos_______________________
    warm(y, m, &FE, &CO, &O, &CO2, &X);
 //____________________________Llenamos la matriz________________________
    p=0;

		for(p=0;p<(pasos);++p) {
      J=0; 
			for(J=0; J < N; ++J) {
        I = N * ALEATORIO;
        if (m.cell[I] == 0) {
 //____________________________Desorpción________________________________

	 /*			if (Cell[I]==1){ 
				q=((double)rand()/RAND_MAX);
	
						if (q<kco){ 
		
						CO[0]=CO[0]-1;
						Cell[I]=0;
			}
		}
	
				if (Cell[I]==2){ 
				q=((double)rand()/RAND_MAX);
	
						if (q<kx){ 
		
						CO[0]=CO[0]-1;
						Cell[I]=0;
			}
		}
*/	
 //______________________________Absorcion___________________________________
          q = ALEATORIO;
 //__________________________________ CO=1
				
          if (q <= y) { // Probabilidad de absorcion de CO
            m.cell[I] = MONOXIDO; 
            reaccionCO(m, I, &FE, &O);
            if (m.cell[I] == MONOXIDO) { ++CO; --FE; }
            else  if (m.cell[I] == LIBRE) ++CO2;
          }
 //__________________________________  O=-1			
          else if (q < yoc) { // Probabilidad de absorcion de O2
            v = 2 * ALEATORIO;
            if (v == 0) {
              k2 = m.l[I];
              k1 = m.r[I];
              if (m.cell[k1]==LIBRE && m.cell[k2]==LIBRE){
                m.cell[m.l[I]] = OXIGENO;
                m.cell[m.r[I]] = OXIGENO;
                
                k=k1;
                reaccionO2(m, I, k, &FE, &CO, &CO2);
                if (m.cell[k] == OXIGENO) {++O; --FE;}
                else if (m.cell[I] == LIBRE) ++CO2;
                  
                k=k2;
                reaccionO2(m, I, k, &FE, &CO, &CO2);
                if (m.cell[k] == OXIGENO) {++O; --FE;}
                else if (m.cell[I] == LIBRE) ++CO2;
                          
              }
            }
            else {
              k2 = m.u[I];
              k1 = m.d[I];
              if (m.cell[m.u[I]]==0 && m.cell[m.d[I]]==0) {
                m.cell[m.u[I]] = OXIGENO;
                m.cell[m.d[I]] = OXIGENO;
                
                k = k1;
                reaccionO2(m,I,k,&FE, &CO, &CO2);
                if (m.cell[k] == OXIGENO) {++O; --FE;}
                else if (m.cell[I] == LIBRE) ++CO2;
                      
                k = k2;
                reaccionO2(m, I, k, &FE, &CO, &CO2);
                if (m.cell[k] == OXIGENO) { ++O; --FE; }
                else if (m.cell[I] == LIBRE) ++CO2;
              }
            }
          }
          else {
          m.cell[I] = IMPUREZA;
          ++X; --FE;
        }
        }
      }
			//}

      Oc += O;			
      COc += CO;
      Xc += X;
      //produc=CO2[0];
      s2O += O*O;
        
      s2CO += CO*CO;
      s2CO2 += CO2*CO2;
      suma = FE+O+CO;
    }
    
    produc = CO2;
 //________________________________Promedios___________________
    suma=((double)suma*invNP); 
    Oc=((double)Oc*invNP); 
    COc=((double)COc*invNP);
    produc=((double)produc*(invNP));
    Xc=((double)Xc*(invNP));
 //__________________________Promedios del cuadrado
    s2O=((double)s2O*invNP);
    s2CO=((double)s2CO*invNP);
    s2CO2=((double)s2CO2*invNP);
 //________________________________Error del O_________________
    sigma[0]=s2O-(Oc*Oc); 
    sigma[0]=(double)(sigma[0])*inv;
    sigma[0]=sqrt(sigma[0]);
 //_______________________________Error del CO
    sigma[1]=s2CO-(COc*COc);
    sigma[1]=(double)(sigma[1])*inv;
    sigma[1]=sqrt(sigma[1]);
 //_______________________________Error del CO2
    sigma[2]=s2CO2-(produc*produc);
    sigma[2]=(double)(sigma[2])*inv;
    sigma[2]=sqrt(sigma[2]);
   //_______________________________Error de X
    sigma[3]=s2X-(Xc*Xc);
    sigma[3]=(double)(sigma[3])*inv;
    sigma[3]=sqrt(sigma[3]);
	
    fprintf(fp,"%.4lf  %.4lf  %.4lf  %lf  %lf  %lf  %lf  %lf  %lf  %lf\n",y,Oc,COc,produc,Xc,suma,sigma[0],sigma[1],sigma[2],sigma[3]);
	}

	fclose(fp);
	return 0;
}