Ich habe große Probleme mit dem konvertieren eines unsigned char Arrays in ein float Array:
1 | float *x_to_float; |
2 | x_to_float=new float[500]; |
3 | float fValue; |
4 | memcpy(x, x_uc, sizeof(float)); |
"x_uc" ist das unsigned char Array
|
Forum: PC-Programmierung unsigned char Array --> float ArrayIch habe große Probleme mit dem konvertieren eines unsigned char Arrays in ein float Array:
"x_uc" ist das unsigned char Array Was erwartest Du? Was steht im char-Array, und was soll danach im float-Array stehen? Dein Codefragment kopiert von x_uc nach x, was auch immer das sein mag. Weder "fValue" noch das Array "x_to_float" werden irgendwo verwendet; vielleicht ist auch das Dein Problem? Ich denke du wirst nicht drumherum kommen für jedes element des Arrays einen Cast zu machen, damit mit einem memcpy, wie bereits gesagt, stumpf die Bits kopiert werden ohne zu beachten um welchen Datentyp es sich handelt. Ein float besteht aus VORZEICHEN + EXPONENT + MANTISSE, ein unsigned char hingegen nur aus der Wertigkeit der Bits (2^7+2^6...+2^0). Die bits werden von jedem Datentyp unterschiedlich interpretiert, zumindest bei char,int,long... <=> float,double Ich benötige diese Konvertierung, weil ich von einem Graubild eine FFT berechnen will. Dem FFT Algorithmus muss man ein Array vom Datentyp float übergeben. Deshalb das ganze. Deswegen kannst du trotzdem nicht einfach Characters binär in den Speicherbereich einer Float-Variablen kopieren und hoffen, die würden dabei in das interne float-Format umgewandelt. memcpy kopiert einfach blind Bytes von der Quelle zum Ziel. Wenn du in einen Kochtopf pinkelst, wird doch auch nicht plötzlich Suppe draus... Das Problem hab ich gelöst. Das Array bildgrau ist nun vom Typ float. Ich hab noch ein Problem mit der Anwendung des FFT Algorithmus.
Diese Variablen "sample_rate, frequency" brauche ich doch eigentlich für die Bildtranformation nicht oder? Die Berechneten Werte habe ich mal in eine Textdatei ausgegeben. "fft.vektor[i,2]". Vergleiche ich diese Werte mit Matlab, dann sind das ganz andere Werte. Matlab Code: (Bildgröße: 256/256)
Kann mir da jemand sagen was ich da falsch mache? Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.
|
|