[Tech] Domanda di C
Franco Bagnoli
bagnoli@dma.unifi.it
Mer 26 Maggio 2004 21:47:52 CEST
On Wed, 26 May 2004, Valerio Montagnani wrote:
> Esempio da manuale? Hai trovato questo su un manuale di riferimento?
> Potresti darmi il titolo? Grazie.
The C Programming Language
Brian Kernighan and Dennis Ritchie,
Prentice-Hal 1988 ;)
le union sono state fatte apposta per poter accedere ai dati in diverse
maniere, direi essenzialmente per copiti tipo il tuo (non le ho
praticamente mai usate, comunque).
> Sono vettori di 1920000 campioni di tipo signed char.
Ammesso che abbia capito cosa devi fare, devi valutare se ti puoi
permettere di convertirli a double, farci sopra una qualche operazione e
poi riconvertirli a int, o se devi sviluppare un algoritmno direttamente
per gli int.
se puoi convertirli a double, io normalizzerei a 1, ovvero (senza usare
union)
unsigned short x, y;
double r;
double ampl=1.5;
x= read(...)
y= x>>8 | x << 8; /* dovrebbe funzionare */
r = (double) y /((unsigned short) -1));
r *= ampl;
r = 1/(1+exp(-2*r)); /* è un arco tangente iperbolica, anche se non
sembra */
y = (unsigned short) (r*((unsigned short) -1)));
x = y >> 8 | y << 8;
write(x);
--
Franco Bagnoli (franchino) <bagnoli@dma.unifi.it>
virtual location: Dipartimento di Energetica "S. Stecco"
ultra-virtual affiliation: Centro Dinamiche Complesse (CSDC-Firenze)
real location: Dip. Matematica Applicata "G. Sansone", Universita' Firenze,
Via S. Marta, 3 I-50139 Firenze, Italy. Tel. +39 0554796422, fax: +39 055471787
Maggiori informazioni sulla lista
flug-tech