unsigned char Array --> float Array

#956485
Lesenswert?

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
#957242
Lesenswert?

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...
Gast #957272
Lesenswert?

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.
1
//sample rate of the signal (must be 2^n)
2
long sample_rate=8192;
3

4
//number of samples you want to send for processing in the fft (any)
5
//for example 100 samples
6
long captured_samples=512;
7

8
//frequency of the signal (has to be smaller than sample_rate/2)
9
//for example 46
10
int frequency=100;
11

12
float data[512];

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)
1
I=imread('bild.bmp')
2
g=rgb2gray(I)
3
f=fft(g)

Kann mir da jemand sagen was ich da falsch mache?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren