[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