Exemplo n.º 1
0
int main (void)
{
    int size, *vector, i;

    size = 5;
    vector = malloc (size * sizeof (int));

    vector[0] = 0;
    vector[1] = 1;
    vector[2] = 2;
    vector[3] = 3;
    vector[4] = 4;
    /*vector[5] = 2;
    vector[6] = 2;*/

    ShowVector (size, vector);


    for (i = 0; i < 10; i++)
    {
        NextPermutation (size, vector);
        ShowVector (size, vector);
    }

    printf ("Altre\n");
    while (!NextPermutationV2 (size, vector))
        ShowVector (size, vector);

    printf ("Un cop acabat\n");
    ShowVector (size, vector);

    free (vector);
    return 0;
}
Exemplo n.º 2
0
/* Determine global mean and covariance of data in sequence s */
void CalcMeanCov(Sequence seq[], int s)
{
   mean[s] = CreateVector(&dStack,swidth[s]);
   SequenceMean(seq[s],mean[s]);
   if (trace&T_MEAN) {
      printf("Stream %d",s);
      ShowVector(" global mean:\n",mean[s],20);
   }
   switch(ck){
   case INVDIAGC: 
   case DIAGC: 
      cov[s].var = CreateVector(&dStack,swidth[s]);
      SequenceCov(seq[s],ck,cov[s],mean[s]);
      if(trace&T_MEAN) ShowVector("Global variance",cov[s].var,20);
      break;
   case FULLC: 
      cov[s].inv = CreateTriMat(&dStack,swidth[s]);
      SequenceCov(seq[s],ck,cov[s],mean[s]);
      if(trace&T_MEAN) ShowTriMat("Global covariance",cov[s].inv,20,20);
      break;
   case NULLC: 
   default:          
      cov[s].var = NULL;
      if(trace&T_MEAN) printf("Using Euclidean distance\n");      
      break;
   }
}
Exemplo n.º 3
0
void TestInsert()
{
	embDB::TBPVector<int32> vec;
	embDB::TBPVector<int32> vec1;
	embDB::TBPVector<int32> vec3;
	size_t n = 20;
	for (size_t i = 0; i < n; ++i)
	{
		vec.push_back(i);
		vec1.push_back(i);
		vec3.push_back(i);
	}
	ShowVector(vec);
	std::cout << "movel 2 2  " << std::endl;
	vec.movel(2, 2);
	ShowVector(vec);

	std::cout << "mover 0 3 " << std::endl;
	vec1.mover(0, 3);
	ShowVector(vec1);

	std::cout << "mover 3  5 " << std::endl;
	vec3.mover(3, 5);
	ShowVector(vec3);
}
Exemplo n.º 4
0
int main()
{
    freopen("in.txt","r",stdin);
    //freopen("out.txt","w",stdout);
    vector *node_x, *node_y, *X4coe;
    vector *coe_a, *coe_b;
/*--initialize the variables--*/
    node_x = init_vector(node_x,1);
    node_y = init_vector(node_y,1);
    coe_a = init_vector(coe_a,0);
    coe_b = init_vector(coe_b,0);
    X4coe = change_nodex2X(node_x,X4coe);

/*--calculate the coefficients of polynomial--*/
    calcu_coe_a(coe_a,X4coe,node_y);
    printf("coe_a:\n");
    ShowVector(coe_a);

    calcu_coe_b(coe_b,X4coe,node_y);
    printf("coe_b:\n");
    ShowVector(coe_b);
/*--display the polynomial--*/
    show_polynomial(coe_a,coe_b);
    return 0;
}
Exemplo n.º 5
0
int main()
{
    //freopen("in.txt","r",stdin);
    //freopen("test.txt","r",stdin);
    //freopen("outin.txt","w",stdout);
    vector *d, *h, *m, *u;
    vector *Xnode, *Ynode;
    double **S;
    double ds_a = 0;
    double ds_b = 98;
    int i;
/*--initialize the vectors--*/
    d = init_vector(d,0);
    h = init_vector(h,0);
    m = init_vector(m,0);
    u = init_vector(m,0);
    Xnode = init_vector(Xnode,1);
    Ynode = init_vector(Ynode,1);
    S = malloc((Xnode->N-1) * sizeof(double*));
/*--calculate every element of every vector--*/
    calcu_h(h,Xnode);
    calcu_d(d,Xnode,Ynode);
    calcu_u(d,u,Xnode);
    printf("\nh\n");
    ShowVector(h);
    printf("\nd\n");
    ShowVector(d);
    printf("\nm\n");
    ShowVector(m);
    printf("\nu\n");
    printf("\nu\n");
    ShowVector(u);
    //ShowVector(X);
    //ShowVector(Y);
/*--using Gauss-Seidel iteration to solve the equation HM=V--*/
    calcu_m(m,d,u,h,Xnode,ds_a,ds_b);
    *(m->value+0) = (3 / *(h->value)) * (*(d->value) - ds_a) - *(m->value+1) / 2;
    *(m->value+Xnode->N - 1) = (3 / *(h->value+Xnode->N - 2)) * (ds_b - *(d->value+Xnode->N - 2)) - *(m->value+Xnode->N - 2) / 2;
    printf("\nm:\n");
    ShowVector(m);
/*--use what have calculated to calculate the coefficient of clamped cubic spline--*/
    calcu_S(S,Ynode,d,h,m);
/*--show the value of coefficients--*/
    for(i = 0; i < Ynode->N-1; i++){
        printf("%lf&\t%lf&\t%lf&\t%lf\n",*(*(S+i)+0),*(*(S+i)+1),*(*(S+i)+2),*(*(S+i)+3));
    }
    return 0;
}
/* CalcCovs: calculate covariance of speech data */
void CalcCovs(void)
{
   int x,y,s,V;
   float meanx,meany,varxy,n;
   Matrix fullMat;
   
   if (totalCount<2)
      HError(2021,"CalcCovs: Only %d speech frames accumulated",totalCount);
   if (trace&T_TOP)
      printf("%ld speech frames accumulated\n", totalCount);
   n = (float)totalCount;     /* to prevent rounding to integer below */
   for (s=1; s<=hset.swidth[0]; s++){  /* For each stream   */
      V = hset.swidth[s];
      for (x=1; x<=V; x++)            /* For each coefficient ... */
         accs[s].meanSum[x] /= n;         /* ... calculate mean */
      for (x=1;x<=V;x++) {
         meanx = accs[s].meanSum[x];      /* ... and [co]variance */
         if (fullcNeeded[s]) {
            for (y=1; y<=x; y++) {
               meany = accs[s].meanSum[y];
               varxy = accs[s].squareSum.inv[x][y]/n - meanx*meany;
               accs[s].squareSum.inv[x][y] =
                  (x != y || varxy > minVar) ? varxy : minVar;    
            }
         }
         else {
            varxy = accs[s].squareSum.var[x]/n - meanx*meanx;
            accs[s].fixed.var[x] = (varxy > minVar) ? varxy :minVar;
         }
      }
      if (fullcNeeded[s]) { /* invert covariance matrix */
         fullMat=CreateMatrix(&gstack,V,V);
         ZeroMatrix(fullMat); 
         CovInvert(accs[s].squareSum.inv,fullMat);
         Mat2Tri(fullMat,accs[s].fixed.inv);
         FreeMatrix(&gstack,fullMat);
      }
      if (trace&T_COVS) {
         printf("Stream %d\n",s);
         if (meanUpdate)
            ShowVector(" Mean Vector ", accs[s].meanSum,12);
         if (fullcNeeded[s]) {
            ShowTriMat(" Covariance Matrix ",accs[s].squareSum.inv,12,12);
         } else
            ShowVector(" Variance Vector ", accs[s].fixed.var,12);
      }
   }
}
Exemplo n.º 7
0
/* PrintTree: Print each node as an entry */
static void PrintTree(VQNode n, CovKind ck)
{
   if (n != NULL) {
      printf("vqidx=%d ids=[%d %d %d]\n",
             n->vqidx,n->nid,n->lid,n->rid);
      ShowVector("Mean",n->mean,10);
      switch(ck){
      case NULLC:
         break;
      case INVDIAGC:
         ShowVector("IVar",(Vector)n->cov.var,10);
         break;
      case FULLC:
         ShowTriMat("ICov",(TriMat)n->cov.inv,10,10);
         break;
      }
      printf("\n");
      PrintTree(n->left,ck);
      PrintTree(n->right,ck);
   }
}
Exemplo n.º 8
0
int main (void)
{
	int s, *v;

	s = 4;
	v = malloc (s * sizeof (int));
	if (!v)
	{
		printf ("Fatal error\n");
		return 1;
	}

	v[0] = 0;
	v[1] = 1;
	v[2] = 1;
	v[3] = 2;

	ShowVector (s, v);

	ParserPermutationDigitToVectorV2notCalc (s, v, 7, 12);

	ShowVector (s, v);
return 0;
}
Exemplo n.º 9
0
/* UpdateCounts: using frames in seg i and alignment in states/mixes */
void UpdateCounts(int segNum, int segLen, IntVec states,IntVec *mixes)
{
   int M=0,i,j,k,s,m,state,last;
   StreamElem *ste;
   MixPDF *mp = NULL;
   WtAcc *wa;
   MuAcc *ma;
   VaAcc *va;
   TrAcc *ta;
   Vector v;
   Observation obs;
   TMixRec *tmRec = NULL;
   float x,y;

   last = 1;  /* last before 1st emitting state must be 1 */
   ta = (TrAcc *)GetHook(hmmLink->transP); 
   for (i=1; i<=segLen; i++){
      state = states[i];
      if (trace&T_CNT)
         printf("  Seg %d -> state %d\n",i,state);
      if (uFlags&(UPMEANS|UPVARS|UPMIXES)){
         obs = GetSegObs(segStore, segNum, i);
         if (hset.hsKind == TIEDHS)
            PrecomputeTMix(&hset, &obs, 50.0, 0);         
         ste = hmmLink->svec[state].info->pdf+1;
         for (s=1; s<=nStreams; s++,ste++){
            if (hset.hsKind==DISCRETEHS){
               m = obs.vq[s]; v = NULL;
            } else {
               v = obs.fv[s]; m = mixes[s][i];
            }
            switch(hset.hsKind){
            case TIEDHS:
               tmRec = &(hset.tmRecs[s]);
               M = tmRec->nMix;
               break;
            case PLAINHS:
            case SHAREDHS:
            case DISCRETEHS:
               M = ste->nMix;
               break;
            }
            if (m<1 || m > M)
               HError(2170,"UpdateCounts: mix/vq idx out of range[%d]",m);
            if (trace&T_CNT)
               printf("   stream %d -> mix %d[%d]\n",s,m,M); 
            /* update mixture weight */
            if (M>1 && (uFlags&UPMIXES)) {
               wa = (WtAcc *)ste->hook;
               wa->occ += 1.0; wa->c[m] += 1.0;
               if (trace&T_CNT)
                  printf("   mix wt -> %.1f\n",wa->c[m]);
            }
            if (hset.hsKind==DISCRETEHS) continue;
            
            /* update state/mixture component */
            switch(hset.hsKind){
            case PLAINHS:
            case SHAREDHS:
               mp = ste->spdf.cpdf[m].mpdf;
               break;
            case TIEDHS:
               mp = tmRec->mixes[m];
               break;
            }
            ma = (MuAcc *)GetHook(mp->mean);
            va = (VaAcc *)GetHook(mp->cov.var);
            ma->occ += 1.0; va->occ += 1.0;
            for (j=1; j<=hset.swidth[s]; j++) {
               x = v[j] - mp->mean[j];
               ma->mu[j] += x;
               if (uFlags&UPVARS)
                  switch(mp->ckind){
                  case DIAGC: 
                     va->cov.var[j] += x*x;
                     break;
                  case FULLC:
                     for (k=1; k<=j; k++){
                        y = v[k]-mp->mean[k];
                        va->cov.inv[j][k] += x*y;
                     }
                     break;
                  default:
                     HError(2124,"UpdateCounts: bad cov kind %d\n",
                            mp->ckind);
                  }                 
            }
            if (trace&T_CNT) {
               ShowVector("   mean ->",ma->mu,6);
               if (uFlags&UPVARS) {
                  if (mp->ckind==DIAGC)
                     ShowVector("   var ->",va->cov.var,6);
                  else
                     ShowTriMat("   cov ->",va->cov.inv,6,6);
               }
               fflush(stdout);
            }
         }
      }
      /* update transition probs */
      if (uFlags&UPTRANS){
         ta->occ[last] += 1.0;
         ta->tran[last][state] += 1.0;
         last = state;
         if (i==segLen){  /* remember final state */
            ta->occ[state] += 1.0;
            ta->tran[state][nStates] += 1.0;
         }
         if (trace&T_CNT) {
            ShowMatrix("   tran ->",ta->tran,6,6);
            fflush(stdout);
         }
      }
   }
}
Exemplo n.º 10
0
int main()
{
    freopen("last_experience10.txt","r",stdin);
    //freopen("last_experience_out10.txt","w",stdout);
    //freopen("in.txt","r",stdin);
    /************变量声明区*********************************/
    //h 代表自变量之间的间距。 h_n=x_(n+1)-x(n)
    //d 表示相邻两点之之间的斜率。d_n=(y_(n+1)-y_n)/h_n
    //m 代表在某点处的二次导数值
    //u 代表解m的方程组时等号右边的数。u_n=6(d_(n+1)-d_n)
    vector *d, *h, *m, *u;
    //Xnode, Ynode代表已知点的横、纵坐标值。
    vector *Xnode, *Ynode;
    //S 为二重指针,存储多项式系数。
    double **S;
    //ds_a、ds_b 分别表示左、右端点出的一次导数值
    double ds_a = 0;//-7;
    double ds_b = 0.6274;//0.5;
    //i 控制循环次数
    int i;

    /***----------------initialize the vectors-----------------***/
    d = init_vector(d,0);
    h = init_vector(h,0);
    m = init_vector(m,0);
    u = init_vector(m,0);
    Xnode = init_vector(Xnode,1);
    Ynode = init_vector(Ynode,1);
    ShowVector(Xnode);
    ShowVector(Ynode);
    S = malloc((Xnode->N-1) * sizeof(double*));

    /**------calculate every element of every vector-----**/
    calcu_h(h,Xnode);
    calcu_d(d,Xnode,Ynode);
    calcu_u(d,u,Xnode);
    //输出计算得到的各个数值

    printf("\nh\n");
    ShowVector(h);
    printf("\nd\n");
    ShowVector(d);
    printf("\nm\n");
    ShowVector(m);
    printf("\nu\n");
    printf("\nu\n");
    ShowVector(u);


    /*--using Gauss-Seidel iteration to solve the equation HM=V--*/
    //计算m的数值(除了端点处的之外)
    calcu_m(m,d,u,h,Xnode,ds_a,ds_b);
    //计算第一个和最后一个m值
    *(m->value+0) = (3 / *(h->value)) * (*(d->value) - ds_a) - *(m->value+1) / 2;
    *(m->value+Xnode->N - 1) = (3 / *(h->value+Xnode->N - 2)) * (ds_b - *(d->value+Xnode->N - 2)) - *(m->value+Xnode->N - 2) / 2;
    //输出m数列

    printf("\nm:\n");
    ShowVector(m);


    /*--use what have calculated to calculate the coefficient of clamped cubic spline--*/
    calcu_S(S,Ynode,d,h,m);

    /*--show the value of coefficients--*/
    for(i = 0; i < Ynode->N-1; i++) {
        printf("%lf&\t%lf&\t%lf&\t%lf\n",*(*(S+i)+0),*(*(S+i)+1),*(*(S+i)+2),*(*(S+i)+3));
    }
    return 0;
}
Exemplo n.º 11
0
void main()
{
	double e = 0;
	int n;	//初始节点个数
	
	double * pd_Result = new double [1];		//u(xi)的结果

	//复化梯形法,初始n = 32
	n = 32 ;
	do 
	{	
		n = n*2;
		if ( n > MaxN)
		{
			n = n/2;
			break;
		}		
		delete []pd_Result ;		
		pd_Result = FormulaTrapezia(n,e);
		
	} 
	while( e >= ee);

 	OutPutResult(pd_Result,n);
	cout<<"The number of FormulaTrapezia is "<<n<<"!"<<endl;	
	
	cout<<"The error of FormulaTrapezia is:";
	cout<<setiosflags(ios::scientific)<<setprecision(11)<<e<<endl;
	
	//复Simpson法,初始n = 32
	n = 32 ;
	do 
	{	
		n = n*2;
		if ( n > MaxN)
		{
		n = n/2;
		break;
		}		
		delete []pd_Result ;		
		pd_Result = FormulaSimpson(n,e);	
	} 
	while( e >= ee);


 	OutPutResult(pd_Result,n);
	cout<<"The number of FormulaSimpson is "<<n<<"!"<<endl;	
	
	cout<<"The error of FormulaSimpson is:";
	cout<<setiosflags(ios::scientific)<<setprecision(11)<<e<<endl;
	



	//Gauss积分法
	n = 7;
	
	pd_Result = FormulaGauss(n,e);

  	ShowVector(pd_Result,n);
	cout<<"The error of FormulaGauss is:";
	cout<<setiosflags(ios::scientific)<<setprecision(11)<<e<<endl;	
}