> Mhm, habs mir auch nochmal durch den Kopf durchgehen lassen.
> Und mit der Union überlegt...
>
>
> Wie lautet hier denn der code Tag im Forum?
Klikce einfach bei meinem Posting auf des kleine Fragezeichen oben. Da
steht dann, wie's geht.
> union
> {
> unsigned short gross[512];
> struct
> {
> short klein1[128] : 16;
> short klein2[128] : 16;
> short klein3[128] : 16;
> short klein4[128] : 16;
> } kleinzugriff;
> }grosszugriff;
Wozu immer die Bitfelder? Der short ist doch schon 16bit groß. In C99
nimmt man übrigens am besten int16_t aus <stdint.h>.
> So wäre es möglich...
> @Unbekannter
> Muss ich nicht die Speicherbreite im struct angebn?
Was für eine Speicherbreite?
> Nur brauch ich dafür viel Code.
Wofür?
> Die Sache ist die, ich will ne FFT über 128 Werte laufen lassen.
> Insgesamt habe ich aber 512 Werte.
> Eigentlich könnte ich hergehen und die Werte aus dem 512er Feld
> kopieren in ein 128er Feld. FFT machen und dann zurück in das
> 512er Feld.
> Das dauert länger (umkopieren) und braucht mehr Speicher. [128]
> Feld.
> Wenn ich das Feld in 4 Teile aufteile, entfällt das ganze. Ich
> brauche die Ursprungsdaten des A/D Wandlers nicht mehr.
>
> Das isst der gedanke dahinter.
Dafür brauchst du das ganze aber doch gar nicht. Da reicht auch ein
Zeiger auf das erste Byte des 128er-Feldes. Also:
1 | short* TestSmall;
|
2 |
|
3 | TestSmall = Test + 128 * IndexKleinesFeld;
|
4 | OperationOnTestSmall();
|
> Nur ist es so dass mein Feld nicht 512 Werte hat sondern 6192 = 54
> * 128 Werte. Müsste also viel Code schreiben um die jeweilige FFT
> auf das jeweilge Feld ausführen zu lassen.