|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Apr 2010
Messaggi: 67
|
[c/generico] conversione intero (x, -x) a float (1, -1)
Salve a tutti,
come da oggetto ho la necessità di trasformare un valore intero in float, convertendolo all'interno di un range che va da -1.0 a 1.0 (penso che un'operazione di questo tipo si chiami normalizzazione, non vorrei però spararla grossa ). Vi sottopongo la mia versione certamente ingenua, nella speranza che qualcuno possa fornirmi soluzioni più ottimali. Codice:
int main() {
int int_val[8];
float f_val[8];
int_val[0] = 0;
int_val[1] = 3000;
int_val[2] = -3400;
int_val[3] = 9000;
int_val[4] = -9000;
int_val[5] = 12340;
int_val[6] = -9030;
int_val[7] = 2304;
for (int i=0; i<8; i++) {
if (int_val[i] > 0)
f_val[i] = int_val[i]/32767.0;
else
f_val[i] = -int_val[i]/32768.0;
}
}
Ultima modifica di Duchamp : 21-10-2010 alle 19:18. |
|
|
|
|
|
#2 |
|
Bannato
Iscritto dal: Aug 2006
Messaggi: 362
|
casting?
potrebbe andare? |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jan 2006
Città: Perugia - San Benedetto del Tronto
Messaggi: 348
|
Scusa la banalità, ma se si tratta di riportare in maniera proporzionata un intervallo di valori a un intervallo compreso tra -1 e 1 si tratta semplicemente di trovare il massimo, metterlo in proporzione con 1 e trovare tutti gli altri valori di conseguenza no?
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
|
Quote:
|
|
|
|
|
|
|
#5 | |
|
Member
Iscritto dal: Apr 2010
Messaggi: 67
|
Quote:
Non essendo sicuro della realizzazione "pratica" però, cercavo eventuali forme più performanti o sicure. @kruccio: purtroppo il casting non va bene, perchè devo mettere in proporzione i valori... |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:55.










). 









