Hallo Leute!
Zu Testzwecken möchte ich meinen Atmel SAM V71 (ein Cortex-M7 mit FPU)
eine Matrix mit "zufälligen" Floating-Point werten füllenlassen:
1 | float32_t rnd_matrix[9];
|
2 |
|
3 | for (uint16_t i = 0; i < 9; i++) {
|
4 | rnd_matrix[i] = (float32_t) rand();
|
5 | }
|
Soweit funktioniert das auch alles. Möchte ich die Werte jedoch vorher
skalieren, dann lande ich immer im Dummy Handler, d.h. es ist irgendeine
Exception aufgetreten.
1 | const float32_t scale = 10.5;
|
2 | float32_t rnd_matrix[9];
|
3 |
|
4 | for (uint16_t i = 0; i < 9; i++) {
|
5 | rnd_matrix[i] = (float32_t) rand() / scale;
|
6 | }
|
Wobei ein üblicher Verdächtiger - die Division durch Null - hier
natürlich ausgeschlossen werden kann.
Mein Ziel ist es eigentlich, kleine Float-Werte zwischen 0.0 und 1.0 mit
der rand-Funtkionen zu bekommen und diese anschließend zu skalieren,
damit sie zwischen 0.0 und 1.0 * scale liegen. Bspw. soll das dann so
aussehen:
1 | float scale = 10.0;
|
2 | float random_f = (float)rand()/(float)(RAND_MAX/scale);
|
Leider ist das mein erster Ausflug in die Fließkomma-Welt, zuvor habe
ich immer auf float oder double verzichtet und Integer genutzt. Deswegen
kann ich mir den Fehler auch gerade nicht erkären ;)
Für einen Hinweis wäre ich sehr dankbar :)