Beispiel #1
0
void SVMUdq(double Ud, double Uq, unsigned int *Tinv)
{
  double Angle = 0;
  double theta = 0;
  int sector = 0;
  double Dm = 0, Dn = 0, D0 = 0;  // 占空比
  
  Angle = fmod((10 * pi * (period_count / 1000.0)), (2 * pi));
  theta = fmod(Angle,1/3.0 * pi);
  sector = (int)floor( Angle / (1/3.0 * pi)) + 1;
  Dm = M * sin(1/3.0 * pi - theta) / 2.0;
  Dn = M * sin(theta) / 2.0;
  D0 = (0.5 - Dm - Dn) / 2.0;
  Dm = roundn(Dm);
  Dn = roundn(Dn);
  D0 = roundn(D0);
  if (D0 < 0) D0 = 0;
  
  switch (sector)
  {
  case 1:
    Tinv[0] = period - (int)floor(period * (D0));
    Tinv[1] = period - (int)floor(period * (D0 + Dm));
    Tinv[2] = period - (int)floor(period * (D0 + Dm + Dn));
    break;
  case 2:
    Tinv[0] = period - (int)floor(period * (D0 + Dn));
    Tinv[1] = period - (int)floor(period * (D0));
    Tinv[2] = period - (int)floor(period * (D0 + Dm + Dn));
    break;
  case 3:
    Tinv[0] = period - (int)floor(period * (D0 + Dm + Dn));
    Tinv[1] = period - (int)floor(period * (D0));
    Tinv[2] = period - (int)floor(period * (D0 + Dm));
    break;
  case 4:
    Tinv[0] = period - (int)floor(period * (D0 + Dm + Dn));
    Tinv[1] = period - (int)floor(period * (D0 + Dn));
    Tinv[2] = period - (int)floor(period * (D0));
    break;
  case 5:
    Tinv[0] = period - (int)floor(period * (D0 + Dm));
    Tinv[1] = period - (int)floor(period * (D0 + Dm + Dn));
    Tinv[2] = period - (int)floor(period * (D0));
    break;  
  case 6:
    Tinv[0] = period - (int)floor(period * (D0));
    Tinv[1] = period - (int)floor(period * (D0 + Dm + Dn));
    Tinv[2] = period - (int)floor(period * (D0 + Dn));
  }   
}
Beispiel #2
0
int main()
{
	const char err = '#';
	
	int cases;
	int i, j;
	char one[128];
	int errors, total;
	
	gets(one);
	sscanf(one, "%d", &cases);
	
	for (i = 1; i <= cases; i++)
	{
		gets(one);
#ifdef DEBUG
		printf("\tscanned: %s\n", one);
		fflush(stdout);
#endif
		total = 0;
		errors = 0;
		while (one[0] != '\0')
		{
			j = 0;
			while (one[j] != '\0')
			{
				if (one[j] == err)
					errors++;
				total++;
#ifdef DEBUG
				printf("\tcase %3d; char %3d; total %3d; errors %3d; effeciency %5f\n", i, j, total, errors, 100.0 * ((float) (total - errors)) / ((float) total));
				fflush(stdout);
#endif
				j++;
			}
			printf("\n");
			gets(one);
#ifdef DEBUG
			printf("\tscanned: %s\n", one);
			fflush(stdout);
#endif
		}
		printf("The efficiency ratio is %3f%%.\n", roundn(100.0 * ((float) (total - errors)) / ((float) total), 1));
	}
	
	return 0;
}