void modulador() { codificador(); mapeador(); muestreo(); filtro(); oscilador(); sumador(); introducirSincronizacion(); crearEntradaParaDAC(); }
int main(int argc, char* argv[]){ SNDFILE *sf; SF_INFO info; FILE *fout,*res; short int *buffer, max=0; float *fbuffer,max2,med,min; int num, num_samples, frames, channels, i, j, c; char fname[20]; char fOutName[25]; res = fopen("res.csv","w"); DIR *d; struct dirent *dir; d = opendir(argv[1]); if (d) { while ((dir = readdir(d)) != NULL) { sf = sf_open(dir->d_name,SFM_READ,&info); if (sf == NULL){ continue; } fprintf(res,"%s,",dir->d_name); frames = info.frames; channels = info.channels; num_samples = frames*channels; buffer = (short int *)malloc(num_samples*sizeof(short int)); num = sf_read_short(sf,buffer,num_samples); sf_close(sf); //fout nome -> fopen nome + .csv //fout = fopen("amostraskalimu.csv","w"); buffer=filtro(buffer,num_samples);//filtro média flutuante num_samples-=VALORdeSALTO;//retirar as posições eliminadas buffer=realloc(buffer,sizeof(short)*(num_samples)); max=findMaxAbs(buffer,num_samples);//encontrar máximo fbuffer = (float *)malloc(num_samples*sizeof(float)); fbuffer=normal(buffer,num_samples,max);//normalização fbuffer=decima(fbuffer,num_samples);//decimação num_samples/=DECVALUE;//igualar num_samples a "j" da função decima() fbuffer=envelope(fbuffer,num_samples);//Envelope Shannon //max2=findMaxAbsfloat(fbuffer,num_samples); //fbuffer=normalfloat(fbuffer,num_samples,max2); //min=findMinAbsfloat(fbuffer,num_samples); //med=Media(fbuffer,num_samples); int * peaks = NULL; int ccc = 0; peaks = s1s2toVector(fbuffer,num_samples,peaks,&ccc); if(fbuffer[peaks[0]]<fbuffer[peaks[1]] && fbuffer[peaks[1]]>fbuffer[peaks[2]]) fprintf(res," ,"); for(i=0;i<ccc;i++) fprintf(res,"%d,",peaks[i]); /* //printf("::::%d\n",ccc); /// ccc ---> size do vetor //for(i=0;i<ccc;i++) // printf("%d: %d\n",i,peaks[i]); //int borders[ccc*2]; //areaofbeats(fbuffer,peaks,sizeof(peaks)/sizeof(int),10,borders); //float temp[sizeof(fbuffer)/sizeof(float)]; TEMPbordersToGraph(fbuffer,borders,temp); */ // s1s2(fbuffer,num_samples,res); /* for (i=0;i<num_samples;i+=channels){//escrita para o ficheiro for (j=0;j<channels;j++){ fprintf(fout,"%d %f",i+j+1,fbuffer[i+j]); } fprintf(fout,"\n"); } */ /* for (i=0;i<num_samples;i++){//escrita para o ficheiro fprintf(fout,"\n"); } */ fprintf(res,"\n"); //fclose(fout); } closedir(d); } fclose(res); return 0; }
void ConjugateGradient(int n, Matriz* A, Matriz* b, Matriz* x) { int k; double alfa, beta, alfaNum, alfaDen, betaNum; Matriz d; Matriz d1; // proximo vetor d Matriz r; Matriz r1; // proximo vetor r Matriz x1; // proximo vetor x Matriz w; // vetor que recebe Ax Matriz w1; // vetor multiplica Adk Matriz temp; // vetor temporario Matriz temp2; // vetor temporario2 int iteracoes = 0; cria_linhas(n, &d); //Criando vetor d cria_linhas(n, &d1); //Criando vetor d1 cria_linhas(n, &r); //Criando vetor r cria_linhas(n, &r1); //Criando vetor r1 cria_linhas(n, &x1); //Criando vetor x1 cria_linhas(n, &w); //Criando vetor w cria_linhas(n, &w1); //Criando vetor w1 cria_linhas(n, &temp); //Criando vetor temp cria_linhas(n, &temp2); //Criando vetor temp multiplicacao_matriz_vetor(A, x, &w); //multipica Ax, salva em w print(&w); printf("-------------w \n"); subtrai_vetores(b, &w, &temp2); //diminui b-w --> b - Ax , salva em w print(&temp2); printf("-------------temp2 \n"); copia(&temp2, &w); printf("-------------w \n"); copia(&w, &r); // copia r = w print(&r); printf("-------------r \n"); copia(&r, &d); // copia d = r print(&d); printf("-------------d \n"); for (k = 0; k < n; k++, iteracoes++) { if (r.i[0].numero_de_colunas == 0) break; alfaNum = multiplicacao_vetor_vetor(&r, &r); // rT*r ---> numerador de alfa printf("%f \n", alfaNum); printf("-------------AlfaNum \n"); transposta(&d, &temp2); multiplicacao_matriz_vetor(A, &temp2, &w1); // Ad ---> matriz A * dk, denominador de alfa e salva no vetor w1 transposta(&w1, &temp2); copia(&temp2, &w1); filtro(&w1); print(&w1); printf("------------w1 \n"); alfaDen = multiplicacao_vetor_vetor(&d, &w1); // dkT * Adk --> multiplicao no denominador de alfa printf("%f \n", alfaDen); printf("-------------alfaDen \n"); alfa = alfaNum / alfaDen; // calculo do alfa printf("%f \n", alfa); printf("-------------alfa \n"); // inicio do calculo de Xk+1 multiplicacao_escalar_vetor(alfa, &d, &temp); //alfa * d --> multiplica alfa pelo vetor d print(&temp); printf("------------temp \n"); adicao_vetores(x, &temp, &x1); // Xk + alfaDk ---> soma de vetores print(&x1); printf("-----------x1 \n"); multiplicacao_escalar_vetor(alfa, &w1, &temp); // alfa * Adk print(&temp); printf("-----------temp \n"); subtrai_vetores(x, &temp, &r1); // Rk+1 = Rk - alfa*Adk print(&r1); printf("-----------r1 \n"); betaNum = multiplicacao_vetor_vetor(&r1, &r1); // Rk+1(transposto) * Rk+1 printf("%f \n", betaNum); printf("-----------betaNum \n"); beta = betaNum / alfaNum; // denominador de Beta eh o mesmo numerador de alfa printf("%f \n", beta); printf("-----------beta \n"); multiplicacao_escalar_vetor(beta, &d, &temp); // beta * dk print(&temp); printf("-----------temp \n"); adicao_vetores(&r1, &temp, &d1); // Rk+1 + beta * dk print(&d1); printf("-----------d1 \n"); copia(&r1, &r); copia(&x1, x); copia(&d1, &d); } }
void calculaValorFinal(byte NroChanel){ static bool fisrtTime=TRUE; int valorLinealizado; int vCompTamb; long tmpVal; if(fisrtTime==TRUE){ //es la primera vez? //descarto la primera medicion fisrtTime=FALSE; return; } #ifdef RUVAC Linealizar(valnorm(NroChanel),SENSOR_MV,&valLinealizadoMV[NroChanel]); //linealizo mv valLinealizadoMV[NroChanel]=(int)((long)(valLinealizadoMV[NroChanel]+getValParametro(R_Offset+i))*getValParametro(R_Gan+i)/1000); //aplico offset y gan #endif vCompTamb = CompTempAmb((t_sensor)getValParametro((R_Sensor+NroChanel))); if (SENSOR_Tipo(getValParametro(R_Sensor+NroChanel))==TermoCupla) /*como la termocupla me entrega los mv de la diferencia(jc-jf)para compensar debo !sumar los mv de jf*/ EstatusResult[NroChanel]=Linealizar((long)(valnorm(NroChanel)+(long)vCompTamb),(t_sensor)getValParametro(R_Sensor+NroChanel),&valorLinealizado); else EstatusResult[NroChanel]=Linealizar(valnorm(NroChanel),(t_sensor)getValParametro(R_Sensor+NroChanel),&valorLinealizado); tmpVal=(long)valorLinealizado; if(SENSOR_Tipo(getValParametro(R_Sensor+NroChanel))==TermoResistencia) tmpVal = (long)((long)(valorLinealizado+PRom[R_ACP+NroChanel])*(1000+PRom[R_AGP+NroChanel])/1000); if(SENSOR_Tipo(getValParametro(R_Sensor+NroChanel))!=Lineal) tmpVal/= div_dec[SENSOR_Decimales(getValParametro(R_Sensor+NroChanel))-getValParametro(R_Decimales+NroChanel)]; if(tmpVal>9999) EstatusResult[NroChanel]=ERR_OF; else if (tmpVal<-1999) EstatusResult[NroChanel]=ERR_UF; #ifdef TARA puestaCero(); #endif tmpVal=(long)(tmpVal+getValParametro(R_Offset+NroChanel))*getValParametro(R_Gan+NroChanel)/1000; //preciso para pasar a long ValoresCalculados[NroChanel] = filtro ((int)tmpVal, getValParametro(R_Filtro1+NroChanel), DELTAT/100, 200, &buffer_fil[NroChanel] ); if (PRom[R_Ver]==VER_DIF) ValoresCalculados[0]=ValoresCalculados[0] - ValoresCalculados[1]; #ifdef SENS_HUMEDAD if(getValParametro(R_Sensor+1)==SENSOR_HUM){ Humedad = interpolacionDoble(); if(Humedad ==ERR_OF) EstatusResult[1]=ERR_OF; } #endif #ifdef CCAL monit_colcal(); #endif #ifdef HOLD if(getFlagHold()) ValoresCalculados[0]=getBuffer(); #endif #ifdef MMAX calculoMmax(); if(getFlagMmax()) ValoresCalculados[0]=getBufferMmax(); #endif }