/* allocModel - Allocates memory for a model containing uu states and ii
 *  features.
 */
Model *allocModel(int ii, int uu)
{ Model *m;
  int u;
  if (ii<=0||uu<=0) panic("allocModel(): %s must be>0", ii<=0?"ii":"uu");
  m = (Model *)safe_malloc(sizeof(Model));
  m->ffm = (Ffm **)safe_malloc(uu*sizeof(Ffm *));
  m->uu = uu;
  m->hmm = allocHMM(uu);
  for (u = 0; u<uu; u++) m->ffm[u] = allocFFM(ii);
  return m;}
Пример #2
0
void copyHMM(Hmm *m1, Hmm *m2)
{ int u;

  if(m1->uu != m2->uu){
    freeHMM(m1);
    m1 = allocHMM(m2->uu);
  }

  copyRVec(VECTOR(m1->logB), VECTOR(m2->logB), m1->uu);
  for (u = 0; u<m1->uu; u++)
  { copyRVec(MATRIX(m1->logA)[u], MATRIX(m2->logA)[u], m1->uu);}
}
Пример #3
0
xHmm *allocXHMM(int uu, int ii, int tt){
  assert(uu > 0 && ii > 0 && tt > 0);
  xHmm *xhmm = safe_malloc(sizeof *xhmm);
  xhmm->m = allocHMM(uu);
  xhmm->ii = ii;
  xhmm->tt = tt;
  if (tt > 1)
    xhmm->bps = allocRMat3d(tt - 1, ii, ii);
  else xhmm->bps = NULL;
  xhmm->bss = allocRMat(tt, ii);
  return xhmm;
}
Пример #4
0
void copyHMM(Hmm *m1, Hmm *m2)
{ int u;
  //assert(m1->uu>=m2->uu);   /* Take into account the elimination of unreachable states */

  if(m1->uu != m2->uu){
    freeHMM(m1);
    m1 = allocHMM(m2->uu);
  }

  copyRVec(VECTOR(m1->logB), VECTOR(m2->logB), m1->uu);
  for (u = 0; u<m1->uu; u++)
  { copyRVec(MATRIX(m1->logA)[u], MATRIX(m2->logA)[u], m1->uu);}
}