[Tech] Domanda di C

Valerio Montagnani tech@asr-r.it
Mar 8 Feb 2005 11:18:05 CET


Ciao a tutti.

Mi trovo in difficoltà con questa cosa:

Ho un vettore di 120.000 valori interi. Vorrei fare una media dei valori
del vettore a 4000 punti per volta.
Per fare questo ho scritto la seguente funzione:

int16_t *Media(int16_t *buffer, int finestra, int dimensione)
{
  int i,j;
  long int somma;
  int16_t *bufOut;

  bufOut=NULL;
  bufOut=i16vector(dimensione/finestra);
  // la func i16vector alloca dinamicamente un vettore di interi
  // la cui dimensione è data dall'argomento della funzione stessa

  for (i=0; i<dimensione; i=i+finestra)
   {
      somma=0;
      for (j=i; j<i+finestra; j++)
        {
          somma=somma+buffer[j];
        }
      bufOut[i/finestra]=(int16_t)round(somma/finestra);
   }
  return bufOut;
  free(bufOut);
}

La funzione la chiamo con i seguenti parametri:

Buffer=(vettore,4000,120000);

dove Buffer è un array di 30 interi allocati dinamicamente.
     vettore è un array di 120000 interi allocati dinamicamente.

Non avvengono errori di segmentazione ma, se tuttavia stampo i 30 valori
di Buffer ottengo i primi 15 valori calcolati correttamente, mentre i
restanti valori uguali a 0.

Mi potreste spiegare perchè?

Grazie, Valerio



Maggiori informazioni sulla lista flug-tech