FFT funktioniert nicht, Werte sind klein und unrealistisch

Gast #793982
Lesenswert?

1
// FFT
2
  fract16 in[FFT_ANZ];
3
int i = 0, x;
4
      while (i < FFT_ANZ)
5
      {
6
        in[i] = float_to_fr16(((float)ADC_input_buffer[i])/((float)0x8000));
7
        i++;
8
      }
9
                  
10
      FFT(in,&out);
11
      
12
      i=0;
13
      
14
      while (i < FFT_ANZ)
15
      {
16
        x = (int)(fr16_to_float(out[i].im)*0x8000);
17
        SendIntASCII(x);
18
        UART_puts (",");
19
        i++;
20
      }
ADC_input_buffer[i] ist ein int-Array, mit 1024 Werten
Wenn wer hier den Fehler sieht, wäre ich sehr dankbar :D

Mfg Herbert
#794022
Lesenswert?

- out ist nicht deklariert, was für ein Datentyp ist das?
- Was ist denn fract16 für ein Datentyp?
- Welchen Wertebereich haben die Eingangsdaten?
- Sind die Eingangsdaten noch repräsentativ nach der float_to_fr16() 
Funktion?
- Du sendest nur die imaginären Werte raus. Kannst du von denen alleine 
erkennen das die Ergebnisse unrealistisch sind?

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