BOOL ASENSOR::BiasSave( void ) { BOOL ok; matrix B,H; time_t t; int i; if( !CalibrationFlags[ASENSOR_CALIBRATION_BIAS] ) { return(TRUE); } //disp(BiasVolts); TIMER_delay(10.0); B.duplicate(BiasVolts); MakeRowVector(B); //printf("ASENSOR::BiasSave()\n"); //disp(B); ok = matrix_write(BiasFile,B); STR_printf(ok,ASENSOR_debugf,ASENSOR_errorf,"ASENSOR::BiasSave() %s %s.\n",BiasFile,STR_OkFailed(ok)); if( ok ) { time(&t); H.dim(1,DAQ_ChannelCount+1); H(1,1) = (double)t; for( i=0; (i < DAQ_ChannelCount); i++ ) { H(1,i+2) = B(i+1,1); } ok = matrix_append(BiasHistoryFile,H); STR_printf(ok,ASENSOR_debugf,ASENSOR_errorf,"ASENSOR::BiasSave() %s %s.\n",BiasHistoryFile,STR_OkFailed(ok)); } return(ok); }
matrix_t* matrix_merge_sort(pk_internal_t* pk, matrix_t* mata, matrix_t* matb) { size_t i,ia,ib,l; matrix_t* mat; size_t nbrows; assert (mata->nbcolumns == matb->nbcolumns); if (!mata->_sorted || !matb->_sorted) { mat = matrix_append(mata,matb); matrix_sort_rows(pk,mat); } else { mat = _matrix_alloc_int(mata->nbrows+matb->nbrows,mata->nbcolumns,true); i = 0; ia = 0; ib = 0; while (ia < mata->nbrows && ib < matb->nbrows) { int res = vector_compare(pk, mata->p[ia], matb->p[ib], mat->nbcolumns); if (res<=0) { for (l=0; l<mat->nbcolumns; l++) numint_init_set(mat->p[i][l],mata->p[ia][l]); ia++; if (res==0) ib++; } else { for (l=0; l<mat->nbcolumns; l++) numint_init_set(mat->p[i][l],matb->p[ib][l]); ib++; } i++; } /* does some constraint remain ? */ if (ia < mata->nbrows) { do { for (l=0; l<mat->nbcolumns; l++) numint_init_set(mat->p[i][l],mata->p[ia][l]); ia++; i++; } while (ia < mata->nbrows); } else { while (ib < matb->nbrows) { for (l=0; l<mat->nbcolumns; l++) numint_init_set(mat->p[i][l],matb->p[ib][l]); ib++; i++; } } nbrows = (size_t)i; /* initialize last rows of mat to zero */ while (i<mat->nbrows) { for (l=0; l<mat->nbcolumns; l++) numint_init(mat->p[i][l]); i++; } mat->nbrows = nbrows; } return mat; }