[Tech] Domanda di C
Claudio Kutufà
claudiok@nexusfi.it
Mar 8 Feb 2005 11:25:17 CET
At 11.18 08/02/2005 +0100, you 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;
intanto una domanda, gli int sulla tua macchina a quanti bit sono? 16 o 32
? non vorrei che la variabile i non arrivasse a coprite tutti i 120.000
> 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);
Buffer=Media.... vero?
>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è?
a dopo
Cla
>Grazie, Valerio
>_______________________________________________
>FLUG - Discussioni tecniche - tech@firenze.linux.it
>URL: http://lists.firenze.linux.it/mailman/listinfo/tech
>Archivio: http://lists.firenze.linux.it/pipermail/tech
>Ricerca nell'archivio: http://www.firenze.linux.it/search
+++++++++++++++++++++++++++++++++++++++++++++++++++++
Ing. Claudio Kutufa'
NEXUS SISTEMI INFORMATIVI S.P.A.
e-mail personale: claudiok@nexusfi.it
tel. cellulare: 335 5859567
Sede Oper.va : Via Dante da Castiglione, 33
Tel. : +39 055 229413 Fax : +39 055 229785
50125 Firenze - Italy
Sede Amm.va : Via Panciatichi 40/11
Tel. : +39 055 4222030 Fax : +39 055 4376670
50100 Firenze - Italy
Nexus home page: www.nexusfi.it
+++++++++++++++++++++++++++++++++++++++++++++++++++++
Maggiori informazioni sulla lista
flug-tech