int main(){ double dt = 0.1; double *time; double t_start, t_end; int time_steps, Nsamples; Matrix *xSaved, *zSaved; double z; t_start = 0; t_end = 10; time_steps =(int)((double)(t_end - t_start)/dt + 0.5); //arredonda para cima o resultado da divisão time = (double *)aloca(time_steps*sizeof(double)); int i; for(i = 0; i < time_steps; i++){ time[i] = i*dt; } Nsamples = time_steps; xSaved = new_M(Nsamples, 3); zSaved = new_M(Nsamples, 2); for(i = 0; i < Nsamples; i++) { z = getVel(); Matrix *X = NULL; X = intKalman(z); xSaved->a[i][0] = time[i]; xSaved->a[i][1] = X->a[0][0]; xSaved->a[i][2] = X->a[1][0]; zSaved->a[i][0] = time[i]; zSaved->a[i][1] = z; kill_M(&X); } const char fileX[] = "../data/X.dat"; const char fileZ[] = "../data/Z.dat"; MatrixPrint2File(xSaved, fileX); MatrixPrint2File(zSaved, fileZ); kill_M(&xSaved); kill_M(&zSaved); libera(time); KalmanFilter_End(); EndProgram(); reportGood("O programa chegou ao fim!"); return(0); }
void Widget::on_pushButton_2_clicked() { CONTROL_RECORDING = true; toRecord_instantDetectionToRecord.clear(); toRecord_instantKalmandEstimation.clear(); for(unsigned int i = 0; i < number_of_objects; i++){ toRecord_instantDetectionToRecord.push_back(vector<QVector3D>()); toRecord_instantKalmandEstimation.push_back(vector<QVector3D>()); } reportGood("Vamos começar a gravar!"); }
void doGoodBad(struct cdnaInfo *ciList) { struct cdnaInfo *ci; int goodCount = 0; int badCount = 0; int poorCount = 0; struct fineAli *fa; int bestScore; for (ci=ciList; ci!=NULL; ci = ci->next) { if (ci->isDupe) continue; if (ci->fineAli == NULL) { reportBad("%s score %d\n", ci->name, 0); if (ci->roughScore > 32 && ci->roughScore > ci->baseCount/8) addRedoHash(ci, "dropped"); ++badCount; continue; } bestScore = ci->fineScore; if (bestScore < ci->baseCount/2) { fa = ci->fineAli; reportBad("%s score %f at chromosome %s:%ld-%ld gene %s\n", ci->name, (double)bestScore / (double)ci->baseCount, chromNames[fa->chromIx], fa->hStart, fa->hEnd, fa->geneName); addRedoHash(ci, "poor"); ++poorCount; continue; } reportGood("cDNA %s size %d %s\n", ci->name, ci->baseCount, (ci->isEmbryonic ? "embryo" : "unknown")); for(fa = ci->fineAli;fa!=NULL; fa = fa->next) { if (fa->isDupe) continue; if (fa->score >= bestScore) { char *chromName = chromNames[fa->chromIx]; struct ffAli *ali, *lastAli = NULL; fa->isGood = TRUE; reportGood("\tscore %f chromosome %s strand %c %c gene %s\n", (double)fa->score / (double)ci->baseCount, chromName, (fa->isRc ? '-' : '+'), (fa->isBackwards ? '-' : '+'), fa->geneName); for (ali=fa->blocks; ali != NULL; ali = ali->right) { reportGood("\t\t%3d %3d | %d %d size %3d goodEnds %2d %2d", ali->nStart - fa->virtNeedle, ali->nEnd - fa->virtNeedle, ali->hStart - fa->virtHaystack, ali->hEnd - fa->virtHaystack, ali->nEnd - ali->nStart, ali->startGood, ali->endGood); if (lastAli != NULL) reportGood(" gap %d | %d", ali->nStart - lastAli->nEnd, ali->hStart - lastAli->hEnd); reportGood("\n"); lastAli = ali; } } } ++goodCount; } printf("%d Good %d Poor %d Bad\n", goodCount, poorCount, badCount); }
void Widget::recordEnd(){ CONTROL_RECORDING = false; frames_imprimidos = 0; frame_control = 0; imageCounter = 0; iteration_recording = 0; //reseta para a próxima gravação //salva dados dos futuros instantêneos //arruma os dados: temos para cada instante i, os pontos do futuro para as n partículas //queremos ter para cada uma das n partículas, todos os futuros vector<vector<QVector3D> > instantFuturePorObjeto; unsigned int n_de_objetos = instantFutureToRecord[0].size(); //instantFutureToRecord[0].size() = n de objetos no instante 0 = n de objetos em qualquer instante for(unsigned int n = 0; n < n_de_objetos; n++) {//para todas as partículas, ler todos os instantes vector<QVector3D> objeto; for(unsigned int i = 0; i < instantFutureToRecord.size(); i++)//para cada instante for(unsigned int j = 0; j < instantFutureToRecord[i][n].size(); j++)//para cada instante previsto do futuro de um instante objeto.push_back(instantFutureToRecord[i][n][j]); instantFuturePorObjeto.push_back(objeto); } for(unsigned int n = 0; n < instantFuturePorObjeto.size(); n++){ //para cada objeto QString file_name = QString(file_instanteFutureRecorded.c_str()) + "_" + QString::number(n) + ".data"; QFile file(file_name); file.open(QIODevice::WriteOnly | QIODevice::Text); QTextStream out(&file); out << "# Dados do futuro instantaneo para o objeto " << n << "\n"; out << "#Gerado por OracleKalman by JuarezASF UnB110032829 \n"; out << "#data: " << QDate::currentDate().toString() << "\n"; for(unsigned int i = 0; i < instantFuturePorObjeto[n].size(); i++){ out << instantFuturePorObjeto[n][i].x() << "\t"; out << instantFuturePorObjeto[n][i].y() << "\t"; out << instantFuturePorObjeto[n][i].z() << "\n"; } file.close(); } //salva centros detectados for(unsigned int n = 0; n < number_of_objects; n++){ //para cada objeto QString file_name = QString(file_centers.c_str()) + QString::number(n) + ".data"; QFile file(file_name); file.open(QIODevice::WriteOnly | QIODevice::Text); QTextStream out(&file); out << "# Dados do instante tomado e centro detectado(x,y) para o objeto " << n << "\n"; out << "#Gerado por OracleKalman by JuarezASF UnB110032829 \n"; out << "#data: " << QDate::currentDate().toString() << "\n"; for(unsigned int i = 0; i < toRecord_instantDetectionToRecord[n].size(); i++){ out << toRecord_instantDetectionToRecord[n][i].x() << "\t"; out << toRecord_instantDetectionToRecord[n][i].y() << "\t"; out << toRecord_instantDetectionToRecord[n][i].z() << "\n"; } file.close(); } //salva centros estimados for(unsigned int n = 0; n < number_of_objects; n++){ //para cada objeto QString file_name = QString(file_centers.c_str()) + "_kalman_" + QString::number(n) + ".data"; QFile file(file_name); file.open(QIODevice::WriteOnly | QIODevice::Text); QTextStream out(&file); out << "# Dados do instante tomado e centro kalman estimado (x,y) para o objeto " << n << "\n"; out << "#Gerado por OracleKalman by JuarezASF UnB110032829 \n"; out << "#data: " << QDate::currentDate().toString() << "\n"; for(unsigned int i = 0; i < toRecord_instantKalmandEstimation[n].size(); i++){ out << toRecord_instantKalmandEstimation[n][i].x() << "\t"; out << toRecord_instantKalmandEstimation[n][i].y() << "\t"; out << toRecord_instantKalmandEstimation[n][i].z() << "\n"; } file.close(); } //salva centro de colisões { //para cada objeto QString file_name = QString(file_colisions.c_str()); QFile file(file_name); file.open(QIODevice::WriteOnly | QIODevice::Text); QTextStream out(&file); out << "# Dados do instante tomado e pontos de colisões " <<"\n"; out << "#Gerado por OracleKalman by JuarezASF UnB110032829 \n"; out << "#data: " << QDate::currentDate().toString() << "\n"; for(unsigned int i = 0; i < toRecord_colisionsPoints.size(); i++){ out << toRecord_colisionsPoints[i].x() << "\t"; out << toRecord_colisionsPoints[i].y() << "\t"; out << toRecord_colisionsPoints[i].z() << "\n"; } file.close(); } //reseta para a próxima gravação instantFutureToRecord.clear(); toRecord_colisionsPoints.clear(); reportGood("Terminamos de Gravar"); }