Hallo, ich hoffe hier findet sich jemand, der auf die schnelle meinen Denkfehler erkennt. Ich arbeite mich derzeit in die FFT Funktion bei den dsPICs ein. Für mich machen die folgenden Zeilen kienen Sinn: [c] p_real = &sigCmpx[(FFT_BLOCK_LENGTH/2)-1].real ; /* Set up pointers to convert real array */ p_cmpx = &sigCmpx[FFT_BLOCK_LENGTH-1] ; /* to a complex array. The input array initially has all */ /* the real input samples followed by a series of zeros */ for ( i = FFT_BLOCK_LENGTH; i > 0; i-- ) /* Convert the Real input sample array */ { /* to a Complex input sample array */ (*p_cmpx).real = (*p_real--); /* We will simpy zero out the imaginary */ (*p_cmpx--).imag = 0x0000; /* part of each data sample */ } [\c] Es geht um folgendes: die FFT-Operation braucht Samples vom Datentyp fractcomplex. Das ist eine Struktur aus zwei fractional Variablen (real, imag). Das Eingangssignal muss wie folgt vorliegen: real1,imag1 - real2,imag2- ,..., real256,imag256. Es liegt aber laut Definition in inputsignal... .c so vor: real1, real2, ... , real256, imag1,imag2 , ... , imag256. Die obige Schleife soll diese Daten entsprechend umsortieren. Der Zeiger p_real zeigt aber auf die Mitte des Eingangsfeldes sigCmpx, also auf real[127]. Nun wird *p_real 256 (FFT_BLOCK:LENGTH) mal dekrementiert, aber wohin zeigt er nach der 128igsten Dekrementierung ? Der läuft doch über den Anfang &sinCmpx[0] hinaus ?? Die Imaginärwerte werden richtig umgesetzt (=0, da realwertige Samples). Vielleicht stehe ich auf dem Schlach. Im Anhnang ist das Projekt vom Microchip. Im SRC Verzeichnis interessieren eigentlich nur die beiden Dateien Inputsignal... .c und main... .c. Es wäre schön, wenn sich das schnell aufklärt. Danke für eure Hilfe. MfG Thomas
:
Verschoben durch Admin
Hallo, danke für die Rege und kluge Beteiligung. Im Microchip Quellcode wird zusammenhängender Speicher aligned allocated, deswegen liegen die Daten wirklich "nebeneinander". Aus diesem Grund scheint es sicher zu funktionieren.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.