[Tech] Domanda di C

Mirko Maischberger mirko@lilik.it
Mar 8 Feb 2005 17:45:34 CET


Valerio Montagnani wrote:
> 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);
> }

Io toglierei il round e il free.

Per il resto se ci sono magagne mi sa che sono altrove...

Se continua a darti problemi prova a inviare un programmino il più
piccolo possibile (ma compilabile) con cui riprodurre l'errore,
altrimenti è difficile mostrarti altro che solidarietà :)

Mirko



Maggiori informazioni sulla lista flug-tech